mirror of
https://github.com/redphx/better-xcloud.git
synced 2025-08-06 21:28:27 +02:00
Initial commit
This commit is contained in:
67
src/modules/mkb/key-helper.ts
Normal file
67
src/modules/mkb/key-helper.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import { MouseButtonCode, WheelCode } from "./definitions";
|
||||
|
||||
export class KeyHelper {
|
||||
static #NON_PRINTABLE_KEYS = {
|
||||
'Backquote': '`',
|
||||
|
||||
// Mouse buttons
|
||||
[MouseButtonCode.LEFT_CLICK]: 'Left Click',
|
||||
[MouseButtonCode.RIGHT_CLICK]: 'Right Click',
|
||||
[MouseButtonCode.MIDDLE_CLICK]: 'Middle Click',
|
||||
|
||||
[WheelCode.SCROLL_UP]: 'Scroll Up',
|
||||
[WheelCode.SCROLL_DOWN]: 'Scroll Down',
|
||||
[WheelCode.SCROLL_LEFT]: 'Scroll Left',
|
||||
[WheelCode.SCROLL_RIGHT]: 'Scroll Right',
|
||||
};
|
||||
|
||||
static getKeyFromEvent(e: Event) {
|
||||
let code;
|
||||
let name;
|
||||
|
||||
if (e instanceof KeyboardEvent) {
|
||||
code = e.code;
|
||||
} else if (e instanceof MouseEvent) {
|
||||
code = 'Mouse' + e.button;
|
||||
} else if (e instanceof WheelEvent) {
|
||||
if (e.deltaY < 0) {
|
||||
code = WheelCode.SCROLL_UP;
|
||||
} else if (e.deltaY > 0) {
|
||||
code = WheelCode.SCROLL_DOWN;
|
||||
} else if (e.deltaX < 0) {
|
||||
code = WheelCode.SCROLL_LEFT;
|
||||
} else {
|
||||
code = WheelCode.SCROLL_RIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
if (code) {
|
||||
name = KeyHelper.codeToKeyName(code);
|
||||
}
|
||||
|
||||
return code ? {code, name} : null;
|
||||
}
|
||||
|
||||
static codeToKeyName(code: string) {
|
||||
return (
|
||||
// @ts-ignore
|
||||
KeyHelper.#NON_PRINTABLE_KEYS[code]
|
||||
||
|
||||
(code.startsWith('Key') && code.substring(3))
|
||||
||
|
||||
(code.startsWith('Digit') && code.substring(5))
|
||||
||
|
||||
(code.startsWith('Numpad') && ('Numpad ' + code.substring(6)))
|
||||
||
|
||||
(code.startsWith('Arrow') && ('Arrow ' + code.substring(5)))
|
||||
||
|
||||
(code.endsWith('Lock') && (code.replace('Lock', ' Lock')))
|
||||
||
|
||||
(code.endsWith('Left') && ('Left ' + code.replace('Left', '')))
|
||||
||
|
||||
(code.endsWith('Right') && ('Right ' + code.replace('Right', '')))
|
||||
||
|
||||
code
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user