120 lines
2.2 KiB
TypeScript
120 lines
2.2 KiB
TypeScript
const KEY_MAP: { [key: number]: string } = {
|
|
1: 'M1',
|
|
2: 'M2',
|
|
4: 'M3',
|
|
5: 'M4',
|
|
6: 'M5',
|
|
8: 'Backspace',
|
|
9: 'Tab',
|
|
12: 'Clear',
|
|
13: 'Enter',
|
|
19: 'Pause',
|
|
20: 'CapsLock',
|
|
27: 'Escape',
|
|
32: 'Space',
|
|
33: 'PageUp',
|
|
34: 'PageDown',
|
|
35: 'End',
|
|
36: 'Home',
|
|
37: 'ArrowLeft',
|
|
38: 'ArrowUp',
|
|
39: 'ArrowRight',
|
|
40: 'ArrowDown',
|
|
45: 'Insert',
|
|
46: 'Delete',
|
|
48: 'Digit0',
|
|
49: 'Digit1',
|
|
50: 'Digit2',
|
|
51: 'Digit3',
|
|
52: 'Digit4',
|
|
53: 'Digit5',
|
|
54: 'Digit6',
|
|
55: 'Digit7',
|
|
56: 'Digit8',
|
|
57: 'Digit9',
|
|
65: 'KeyA',
|
|
66: 'KeyB',
|
|
67: 'KeyC',
|
|
68: 'KeyD',
|
|
69: 'KeyE',
|
|
70: 'KeyF',
|
|
71: 'KeyG',
|
|
72: 'KeyH',
|
|
73: 'KeyI',
|
|
74: 'KeyJ',
|
|
75: 'KeyK',
|
|
76: 'KeyL',
|
|
77: 'KeyM',
|
|
78: 'KeyN',
|
|
79: 'KeyO',
|
|
80: 'KeyP',
|
|
81: 'KeyQ',
|
|
82: 'KeyR',
|
|
83: 'KeyS',
|
|
84: 'KeyT',
|
|
85: 'KeyU',
|
|
86: 'KeyV',
|
|
87: 'KeyW',
|
|
88: 'KeyX',
|
|
89: 'KeyY',
|
|
90: 'KeyZ',
|
|
91: 'MetaLeft',
|
|
92: 'MetaRight',
|
|
93: 'ContextMenu',
|
|
96: 'Numpad0',
|
|
97: 'Numpad1',
|
|
98: 'Numpad2',
|
|
99: 'Numpad3',
|
|
100: 'Numpad4',
|
|
101: 'Numpad5',
|
|
102: 'Numpad6',
|
|
103: 'Numpad7',
|
|
104: 'Numpad8',
|
|
105: 'Numpad9',
|
|
106: 'NumpadMultiply',
|
|
107: 'NumpadAdd',
|
|
109: 'NumpadSubtract',
|
|
110: 'NumpadDecimal',
|
|
111: 'NumpadDivide',
|
|
112: 'F1',
|
|
113: 'F2',
|
|
114: 'F3',
|
|
115: 'F4',
|
|
116: 'F5',
|
|
117: 'F6',
|
|
118: 'F7',
|
|
119: 'F8',
|
|
120: 'F9',
|
|
121: 'F10',
|
|
122: 'F11',
|
|
123: 'F12',
|
|
144: 'NumLock',
|
|
145: 'ScrollLock',
|
|
160: 'ShiftLeft',
|
|
161: 'ShiftRight',
|
|
162: 'ControlLeft',
|
|
163: 'ControlRight',
|
|
164: 'AltLeft',
|
|
165: 'AltRight',
|
|
186: 'Semicolon',
|
|
187: 'Equal',
|
|
188: 'Comma',
|
|
189: 'Minus',
|
|
190: 'Period',
|
|
191: 'Slash',
|
|
192: 'Backquote',
|
|
219: 'BracketLeft',
|
|
220: 'Backslash',
|
|
221: 'BracketRight',
|
|
222: 'Quote',
|
|
};
|
|
|
|
export const fromKeycode = (keyCode: number): string | null => {
|
|
return KEY_MAP[keyCode] ?? null;
|
|
};
|
|
|
|
export const toKeycode = (key: string): number | null => {
|
|
const res = Object.entries(KEY_MAP).find(([_, v]) => v === key)?.[0];
|
|
return res ? parseInt(res) : null;
|
|
};
|