|
|
|
@ -141,8 +141,13 @@ export class InputDistributor {
|
|
|
|
|
bindToEvents() {
|
|
|
|
|
window.addEventListener("popstate", this.handleBackButton.bind(this), false);
|
|
|
|
|
document.addEventListener("backbutton", this.handleBackButton.bind(this), false);
|
|
|
|
|
window.addEventListener("keydown", this.handleKeydown.bind(this));
|
|
|
|
|
window.addEventListener("keyup", this.handleKeyup.bind(this));
|
|
|
|
|
|
|
|
|
|
window.addEventListener("keydown", this.handleKeyMouseDown.bind(this));
|
|
|
|
|
window.addEventListener("keyup", this.handleKeyMouseUp.bind(this));
|
|
|
|
|
|
|
|
|
|
window.addEventListener("mousedown", this.handleKeyMouseDown.bind(this));
|
|
|
|
|
window.addEventListener("mouseup", this.handleKeyMouseUp.bind(this));
|
|
|
|
|
|
|
|
|
|
window.addEventListener("blur", this.handleBlur.bind(this));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -182,25 +187,28 @@ export class InputDistributor {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param {KeyboardEvent} event
|
|
|
|
|
* @param {KeyboardEvent | MouseEvent} event
|
|
|
|
|
*/
|
|
|
|
|
handleKeydown(event) {
|
|
|
|
|
handleKeyMouseDown(event) {
|
|
|
|
|
const keyCode = event instanceof MouseEvent ? event.button + 1 : event.keyCode;
|
|
|
|
|
if (
|
|
|
|
|
event.keyCode === 9 || // TAB
|
|
|
|
|
event.keyCode === 16 || // SHIFT
|
|
|
|
|
event.keyCode === 17 || // CTRL
|
|
|
|
|
event.keyCode === 18 || // ALT
|
|
|
|
|
(event.keyCode >= 112 && event.keyCode < 122) // F1 - F10
|
|
|
|
|
keyCode === 4 || // MB4
|
|
|
|
|
keyCode === 5 || // MB5
|
|
|
|
|
keyCode === 9 || // TAB
|
|
|
|
|
keyCode === 16 || // SHIFT
|
|
|
|
|
keyCode === 17 || // CTRL
|
|
|
|
|
keyCode === 18 || // ALT
|
|
|
|
|
(keyCode >= 112 && keyCode < 122) // F1 - F10
|
|
|
|
|
) {
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const isInitial = !this.keysDown.has(event.keyCode);
|
|
|
|
|
this.keysDown.add(event.keyCode);
|
|
|
|
|
const isInitial = !this.keysDown.has(keyCode);
|
|
|
|
|
this.keysDown.add(keyCode);
|
|
|
|
|
|
|
|
|
|
if (
|
|
|
|
|
this.forwardToReceiver("keydown", {
|
|
|
|
|
keyCode: event.keyCode,
|
|
|
|
|
keyCode: keyCode,
|
|
|
|
|
shift: event.shiftKey,
|
|
|
|
|
alt: event.altKey,
|
|
|
|
|
initial: isInitial,
|
|
|
|
@ -210,8 +218,7 @@ export class InputDistributor {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const code = event.keyCode;
|
|
|
|
|
if (code === 27) {
|
|
|
|
|
if (keyCode === 27) {
|
|
|
|
|
// Escape key
|
|
|
|
|
event.preventDefault();
|
|
|
|
|
event.stopPropagation();
|
|
|
|
@ -220,13 +227,14 @@ export class InputDistributor {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param {KeyboardEvent} event
|
|
|
|
|
* @param {KeyboardEvent | MouseEvent} event
|
|
|
|
|
*/
|
|
|
|
|
handleKeyup(event) {
|
|
|
|
|
this.keysDown.delete(event.keyCode);
|
|
|
|
|
handleKeyMouseUp(event) {
|
|
|
|
|
const keyCode = event instanceof MouseEvent ? event.button + 1 : event.keyCode;
|
|
|
|
|
this.keysDown.delete(keyCode);
|
|
|
|
|
|
|
|
|
|
this.forwardToReceiver("keyup", {
|
|
|
|
|
keyCode: event.keyCode,
|
|
|
|
|
keyCode: keyCode,
|
|
|
|
|
shift: event.shiftKey,
|
|
|
|
|
alt: event.altKey,
|
|
|
|
|
});
|
|
|
|
|