334 lines
7.5 KiB
TypeScript
334 lines
7.5 KiB
TypeScript
/*
|
|
* Copyright (C) 2026 Fluxer Contributors
|
|
*
|
|
* This file is part of Fluxer.
|
|
*
|
|
* Fluxer is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Fluxer is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
export const UiohookKeycode = {
|
|
Escape: 1,
|
|
F1: 59,
|
|
F2: 60,
|
|
F3: 61,
|
|
F4: 62,
|
|
F5: 63,
|
|
F6: 64,
|
|
F7: 65,
|
|
F8: 66,
|
|
F9: 67,
|
|
F10: 68,
|
|
F11: 87,
|
|
F12: 88,
|
|
F13: 91,
|
|
F14: 92,
|
|
F15: 93,
|
|
F16: 99,
|
|
F17: 100,
|
|
F18: 101,
|
|
F19: 102,
|
|
F20: 103,
|
|
F21: 104,
|
|
F22: 105,
|
|
F23: 106,
|
|
F24: 107,
|
|
|
|
Backquote: 41,
|
|
Digit1: 2,
|
|
Digit2: 3,
|
|
Digit3: 4,
|
|
Digit4: 5,
|
|
Digit5: 6,
|
|
Digit6: 7,
|
|
Digit7: 8,
|
|
Digit8: 9,
|
|
Digit9: 10,
|
|
Digit0: 11,
|
|
Minus: 12,
|
|
Equal: 13,
|
|
Backspace: 14,
|
|
|
|
Tab: 15,
|
|
KeyQ: 16,
|
|
KeyW: 17,
|
|
KeyE: 18,
|
|
KeyR: 19,
|
|
KeyT: 20,
|
|
KeyY: 21,
|
|
KeyU: 22,
|
|
KeyI: 23,
|
|
KeyO: 24,
|
|
KeyP: 25,
|
|
BracketLeft: 26,
|
|
BracketRight: 27,
|
|
Backslash: 43,
|
|
|
|
CapsLock: 58,
|
|
KeyA: 30,
|
|
KeyS: 31,
|
|
KeyD: 32,
|
|
KeyF: 33,
|
|
KeyG: 34,
|
|
KeyH: 35,
|
|
KeyJ: 36,
|
|
KeyK: 37,
|
|
KeyL: 38,
|
|
Semicolon: 39,
|
|
Quote: 40,
|
|
Enter: 28,
|
|
|
|
ShiftLeft: 42,
|
|
KeyZ: 44,
|
|
KeyX: 45,
|
|
KeyC: 46,
|
|
KeyV: 47,
|
|
KeyB: 48,
|
|
KeyN: 49,
|
|
KeyM: 50,
|
|
Comma: 51,
|
|
Period: 52,
|
|
Slash: 53,
|
|
ShiftRight: 54,
|
|
|
|
ControlLeft: 29,
|
|
MetaLeft: 3675,
|
|
AltLeft: 56,
|
|
Space: 57,
|
|
AltRight: 3640,
|
|
MetaRight: 3676,
|
|
ControlRight: 3613,
|
|
|
|
PrintScreen: 3639,
|
|
ScrollLock: 70,
|
|
Pause: 3653,
|
|
Insert: 57426,
|
|
Delete: 57427,
|
|
Home: 57415,
|
|
End: 57423,
|
|
PageUp: 57417,
|
|
PageDown: 57425,
|
|
|
|
ArrowUp: 57416,
|
|
ArrowLeft: 57419,
|
|
ArrowDown: 57424,
|
|
ArrowRight: 57421,
|
|
|
|
NumLock: 69,
|
|
NumpadDivide: 3637,
|
|
NumpadMultiply: 55,
|
|
NumpadSubtract: 74,
|
|
NumpadAdd: 78,
|
|
NumpadEnter: 3612,
|
|
NumpadDecimal: 83,
|
|
Numpad0: 82,
|
|
Numpad1: 79,
|
|
Numpad2: 80,
|
|
Numpad3: 81,
|
|
Numpad4: 75,
|
|
Numpad5: 76,
|
|
Numpad6: 77,
|
|
Numpad7: 71,
|
|
Numpad8: 72,
|
|
Numpad9: 73,
|
|
|
|
AudioVolumeMute: 57376,
|
|
AudioVolumeDown: 57390,
|
|
AudioVolumeUp: 57392,
|
|
MediaPlayPause: 57378,
|
|
MediaStop: 57380,
|
|
MediaTrackPrevious: 57360,
|
|
MediaTrackNext: 57369,
|
|
} as const;
|
|
|
|
const jsToUiohookMap: Record<string, number> = {
|
|
Escape: UiohookKeycode.Escape,
|
|
F1: UiohookKeycode.F1,
|
|
F2: UiohookKeycode.F2,
|
|
F3: UiohookKeycode.F3,
|
|
F4: UiohookKeycode.F4,
|
|
F5: UiohookKeycode.F5,
|
|
F6: UiohookKeycode.F6,
|
|
F7: UiohookKeycode.F7,
|
|
F8: UiohookKeycode.F8,
|
|
F9: UiohookKeycode.F9,
|
|
F10: UiohookKeycode.F10,
|
|
F11: UiohookKeycode.F11,
|
|
F12: UiohookKeycode.F12,
|
|
Backquote: UiohookKeycode.Backquote,
|
|
Digit1: UiohookKeycode.Digit1,
|
|
Digit2: UiohookKeycode.Digit2,
|
|
Digit3: UiohookKeycode.Digit3,
|
|
Digit4: UiohookKeycode.Digit4,
|
|
Digit5: UiohookKeycode.Digit5,
|
|
Digit6: UiohookKeycode.Digit6,
|
|
Digit7: UiohookKeycode.Digit7,
|
|
Digit8: UiohookKeycode.Digit8,
|
|
Digit9: UiohookKeycode.Digit9,
|
|
Digit0: UiohookKeycode.Digit0,
|
|
Minus: UiohookKeycode.Minus,
|
|
Equal: UiohookKeycode.Equal,
|
|
Backspace: UiohookKeycode.Backspace,
|
|
Tab: UiohookKeycode.Tab,
|
|
KeyQ: UiohookKeycode.KeyQ,
|
|
KeyW: UiohookKeycode.KeyW,
|
|
KeyE: UiohookKeycode.KeyE,
|
|
KeyR: UiohookKeycode.KeyR,
|
|
KeyT: UiohookKeycode.KeyT,
|
|
KeyY: UiohookKeycode.KeyY,
|
|
KeyU: UiohookKeycode.KeyU,
|
|
KeyI: UiohookKeycode.KeyI,
|
|
KeyO: UiohookKeycode.KeyO,
|
|
KeyP: UiohookKeycode.KeyP,
|
|
BracketLeft: UiohookKeycode.BracketLeft,
|
|
BracketRight: UiohookKeycode.BracketRight,
|
|
Backslash: UiohookKeycode.Backslash,
|
|
CapsLock: UiohookKeycode.CapsLock,
|
|
KeyA: UiohookKeycode.KeyA,
|
|
KeyS: UiohookKeycode.KeyS,
|
|
KeyD: UiohookKeycode.KeyD,
|
|
KeyF: UiohookKeycode.KeyF,
|
|
KeyG: UiohookKeycode.KeyG,
|
|
KeyH: UiohookKeycode.KeyH,
|
|
KeyJ: UiohookKeycode.KeyJ,
|
|
KeyK: UiohookKeycode.KeyK,
|
|
KeyL: UiohookKeycode.KeyL,
|
|
Semicolon: UiohookKeycode.Semicolon,
|
|
Quote: UiohookKeycode.Quote,
|
|
Enter: UiohookKeycode.Enter,
|
|
ShiftLeft: UiohookKeycode.ShiftLeft,
|
|
KeyZ: UiohookKeycode.KeyZ,
|
|
KeyX: UiohookKeycode.KeyX,
|
|
KeyC: UiohookKeycode.KeyC,
|
|
KeyV: UiohookKeycode.KeyV,
|
|
KeyB: UiohookKeycode.KeyB,
|
|
KeyN: UiohookKeycode.KeyN,
|
|
KeyM: UiohookKeycode.KeyM,
|
|
Comma: UiohookKeycode.Comma,
|
|
Period: UiohookKeycode.Period,
|
|
Slash: UiohookKeycode.Slash,
|
|
ShiftRight: UiohookKeycode.ShiftRight,
|
|
ControlLeft: UiohookKeycode.ControlLeft,
|
|
MetaLeft: UiohookKeycode.MetaLeft,
|
|
AltLeft: UiohookKeycode.AltLeft,
|
|
Space: UiohookKeycode.Space,
|
|
AltRight: UiohookKeycode.AltRight,
|
|
MetaRight: UiohookKeycode.MetaRight,
|
|
ControlRight: UiohookKeycode.ControlRight,
|
|
ArrowUp: UiohookKeycode.ArrowUp,
|
|
ArrowLeft: UiohookKeycode.ArrowLeft,
|
|
ArrowDown: UiohookKeycode.ArrowDown,
|
|
ArrowRight: UiohookKeycode.ArrowRight,
|
|
Insert: UiohookKeycode.Insert,
|
|
Delete: UiohookKeycode.Delete,
|
|
Home: UiohookKeycode.Home,
|
|
End: UiohookKeycode.End,
|
|
PageUp: UiohookKeycode.PageUp,
|
|
PageDown: UiohookKeycode.PageDown,
|
|
NumLock: UiohookKeycode.NumLock,
|
|
NumpadDivide: UiohookKeycode.NumpadDivide,
|
|
NumpadMultiply: UiohookKeycode.NumpadMultiply,
|
|
NumpadSubtract: UiohookKeycode.NumpadSubtract,
|
|
NumpadAdd: UiohookKeycode.NumpadAdd,
|
|
NumpadEnter: UiohookKeycode.NumpadEnter,
|
|
NumpadDecimal: UiohookKeycode.NumpadDecimal,
|
|
Numpad0: UiohookKeycode.Numpad0,
|
|
Numpad1: UiohookKeycode.Numpad1,
|
|
Numpad2: UiohookKeycode.Numpad2,
|
|
Numpad3: UiohookKeycode.Numpad3,
|
|
Numpad4: UiohookKeycode.Numpad4,
|
|
Numpad5: UiohookKeycode.Numpad5,
|
|
Numpad6: UiohookKeycode.Numpad6,
|
|
Numpad7: UiohookKeycode.Numpad7,
|
|
Numpad8: UiohookKeycode.Numpad8,
|
|
Numpad9: UiohookKeycode.Numpad9,
|
|
' ': UiohookKeycode.Space,
|
|
'1': UiohookKeycode.Digit1,
|
|
'2': UiohookKeycode.Digit2,
|
|
'3': UiohookKeycode.Digit3,
|
|
'4': UiohookKeycode.Digit4,
|
|
'5': UiohookKeycode.Digit5,
|
|
'6': UiohookKeycode.Digit6,
|
|
'7': UiohookKeycode.Digit7,
|
|
'8': UiohookKeycode.Digit8,
|
|
'9': UiohookKeycode.Digit9,
|
|
'0': UiohookKeycode.Digit0,
|
|
Q: UiohookKeycode.KeyQ,
|
|
W: UiohookKeycode.KeyW,
|
|
E: UiohookKeycode.KeyE,
|
|
R: UiohookKeycode.KeyR,
|
|
T: UiohookKeycode.KeyT,
|
|
Y: UiohookKeycode.KeyY,
|
|
U: UiohookKeycode.KeyU,
|
|
I: UiohookKeycode.KeyI,
|
|
O: UiohookKeycode.KeyO,
|
|
P: UiohookKeycode.KeyP,
|
|
A: UiohookKeycode.KeyA,
|
|
S: UiohookKeycode.KeyS,
|
|
D: UiohookKeycode.KeyD,
|
|
F: UiohookKeycode.KeyF,
|
|
G: UiohookKeycode.KeyG,
|
|
H: UiohookKeycode.KeyH,
|
|
J: UiohookKeycode.KeyJ,
|
|
K: UiohookKeycode.KeyK,
|
|
L: UiohookKeycode.KeyL,
|
|
Z: UiohookKeycode.KeyZ,
|
|
X: UiohookKeycode.KeyX,
|
|
C: UiohookKeycode.KeyC,
|
|
V: UiohookKeycode.KeyV,
|
|
B: UiohookKeycode.KeyB,
|
|
N: UiohookKeycode.KeyN,
|
|
M: UiohookKeycode.KeyM,
|
|
q: UiohookKeycode.KeyQ,
|
|
w: UiohookKeycode.KeyW,
|
|
e: UiohookKeycode.KeyE,
|
|
r: UiohookKeycode.KeyR,
|
|
t: UiohookKeycode.KeyT,
|
|
y: UiohookKeycode.KeyY,
|
|
u: UiohookKeycode.KeyU,
|
|
i: UiohookKeycode.KeyI,
|
|
o: UiohookKeycode.KeyO,
|
|
p: UiohookKeycode.KeyP,
|
|
a: UiohookKeycode.KeyA,
|
|
s: UiohookKeycode.KeyS,
|
|
d: UiohookKeycode.KeyD,
|
|
f: UiohookKeycode.KeyF,
|
|
g: UiohookKeycode.KeyG,
|
|
h: UiohookKeycode.KeyH,
|
|
j: UiohookKeycode.KeyJ,
|
|
k: UiohookKeycode.KeyK,
|
|
l: UiohookKeycode.KeyL,
|
|
z: UiohookKeycode.KeyZ,
|
|
x: UiohookKeycode.KeyX,
|
|
c: UiohookKeycode.KeyC,
|
|
v: UiohookKeycode.KeyV,
|
|
b: UiohookKeycode.KeyB,
|
|
n: UiohookKeycode.KeyN,
|
|
m: UiohookKeycode.KeyM,
|
|
};
|
|
|
|
export function jsKeyToUiohookKeycode(keyNameOrCode: string | undefined): number | null {
|
|
if (!keyNameOrCode) return null;
|
|
|
|
if (keyNameOrCode in jsToUiohookMap) {
|
|
return jsToUiohookMap[keyNameOrCode] ?? null;
|
|
}
|
|
|
|
const upper = keyNameOrCode.toUpperCase();
|
|
if (upper in jsToUiohookMap) {
|
|
return jsToUiohookMap[upper] ?? null;
|
|
}
|
|
|
|
return null;
|
|
}
|