use MouseEvent in keyboard hooks

This commit is contained in:
Dimava 2020-05-30 10:56:23 +03:00
parent da94d5264a
commit e58c2fd371
2 changed files with 22 additions and 14 deletions

View File

@ -182,25 +182,28 @@ export class InputDistributor {
} }
/** /**
* @param {KeyboardEvent} event * @param {KeyboardEvent | MouseEvent} event
*/ */
handleKeydown(event) { handleKeydown(event) {
const keyCode = event instanceof MouseEvent ? event.button : event.keyCode;
if ( if (
event.keyCode === 9 || // TAB keyCode === 3 ||
event.keyCode === 16 || // SHIFT keyCode === 4 || // MB3 / MB4
event.keyCode === 17 || // CTRL keyCode === 9 || // TAB
event.keyCode === 18 || // ALT keyCode === 16 || // SHIFT
(event.keyCode >= 112 && event.keyCode < 122) // F1 - F10 keyCode === 17 || // CTRL
keyCode === 18 || // ALT
(keyCode >= 112 && keyCode < 122) // F1 - F10
) { ) {
event.preventDefault(); event.preventDefault();
} }
const isInitial = !this.keysDown.has(event.keyCode); const isInitial = !this.keysDown.has(keyCode);
this.keysDown.add(event.keyCode); this.keysDown.add(keyCode);
if ( if (
this.forwardToReceiver("keydown", { this.forwardToReceiver("keydown", {
keyCode: event.keyCode, keyCode: keyCode,
shift: event.shiftKey, shift: event.shiftKey,
alt: event.altKey, alt: event.altKey,
initial: isInitial, initial: isInitial,
@ -210,8 +213,7 @@ export class InputDistributor {
return; return;
} }
const code = event.keyCode; if (keyCode === 27) {
if (code === 27) {
// Escape key // Escape key
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
@ -220,13 +222,14 @@ export class InputDistributor {
} }
/** /**
* @param {KeyboardEvent} event * @param {KeyboardEvent | MouseEvent} event
*/ */
handleKeyup(event) { handleKeyup(event) {
this.keysDown.delete(event.keyCode); const keyCode = event instanceof MouseEvent ? event.button : event.keyCode;
this.keysDown.delete(keyCode);
this.forwardToReceiver("keyup", { this.forwardToReceiver("keyup", {
keyCode: event.keyCode, keyCode: keyCode,
shift: event.shiftKey, shift: event.shiftKey,
alt: event.altKey, alt: event.altKey,
}); });

View File

@ -442,6 +442,8 @@ export class Camera extends BasicSerializableObject {
this.downPreHandler.dispatch(new Vector(event.clientX, event.clientY), enumMouseButton.middle); this.downPreHandler.dispatch(new Vector(event.clientX, event.clientY), enumMouseButton.middle);
} else if (event.button === 2) { } else if (event.button === 2) {
this.downPreHandler.dispatch(new Vector(event.clientX, event.clientY), enumMouseButton.right); this.downPreHandler.dispatch(new Vector(event.clientX, event.clientY), enumMouseButton.right);
} else {
this.root.app.inputMgr.handleKeydown(event);
} }
return false; return false;
} }
@ -484,6 +486,9 @@ export class Camera extends BasicSerializableObject {
if (!this.checkPreventDoubleMouse()) { if (!this.checkPreventDoubleMouse()) {
return; return;
} }
if (event.button >= 3) {
this.root.app.inputMgr.handleKeyup(event);
}
this.combinedSingleTouchStopHandler(event.clientX, event.clientY); this.combinedSingleTouchStopHandler(event.clientX, event.clientY);
return false; return false;