MuPDF WebViewer can listen for the following events:
Events
ACTION_HISTORY_CHANGE
ANNOTATION_CREATE
ANNOTATION_MODIFY
ANNOTATION_REMOVE
ANNOTATION_SELECTION_CHANGE
ANNOTATION_TOOL_CHANGE
CURRENT_PAGE_INDEX_CHANGE
CURRENT_READING_PAGE_CHANGE
CUSTOM_CONTEXT_MENU_EXECUTE
DOCUMENT_DOWNLOAD
KEYDOWN
KEYUP
MOUSEDOWN
MOUSEUP
POINTERDOWN
POINTERUP
REDACTION_CREATE
REDACTION_MODIFY
REDACTION_REMOVE
SCALE_CHANGE
SCROLL_POSITION_CHANGE
SIDE_VIEW_CLOSE
SIDE_VIEW_OPEN
TEXT_SEARCH_START
TEXT_SELECTION_CHANGE
In order to register a listener just use the mupdf.addEventListener method.

Examples

Page Change

mupdf.addEventListener(mupdf.refs.event.type.CURRENT_PAGE_INDEX_CHANGE, (e) => {
  console.log(Object.keys(e.data));
  console.log(e.data.currentPageIndex);
});

Key Events

// Listen for a key down
mupdf.addEventListener(mupdf.refs.event.type.KEYDOWN, keyDown);

function keyDown(e) {

    console.log(Object.keys(e.data));
    
    for (var i in e.data) {
        console.log(e.data[i]);
    }

    console.log("Keycode="+e.data.event.keyCode);
}

Pointer Events

// Listen for a pointer down
mupdf.addEventListener(mupdf.refs.event.type.POINTERDOWN, pointerDown);

function pointerDown(e) {

    console.log(Object.keys(e.data));

    for (var i in e.data) {
        console.log(e.data[i]);
    }

    console.log("clientX="+e.data.event.clientX);
}

Listening for Multiple Key Presses

For example, if you would like to add a shortcut for ctrl+s to save a document you could do the following to register for multiple key presses:
mupdf.addEventListener(mupdf.refs.event.type.KEYDOWN, (event) => {
  if (event.data.event.ctrlKey && event.data.event.key === 's') {
    mupdf.document.download();
  }
});