Files
BizGaze_Remote/agent/input/keymap.js
T
2026-06-05 17:29:09 +05:30

72 line
1.6 KiB
JavaScript

// Maps browser KeyboardEvent.code values to Windows virtual-key codes.
// Reference: https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
const VK = {};
// Letters (KeyA..KeyZ -> 0x41..0x5A)
for (let i = 0; i < 26; i++) VK['Key' + String.fromCharCode(65 + i)] = 0x41 + i;
// Top-row digits (Digit0..Digit9 -> 0x30..0x39)
for (let i = 0; i <= 9; i++) VK['Digit' + i] = 0x30 + i;
// Numpad digits
for (let i = 0; i <= 9; i++) VK['Numpad' + i] = 0x60 + i;
// Function keys
for (let i = 1; i <= 24; i++) VK['F' + i] = 0x70 + (i - 1);
Object.assign(VK, {
Escape: 0x1b,
Tab: 0x09,
CapsLock: 0x14,
ShiftLeft: 0xa0,
ShiftRight: 0xa1,
ControlLeft: 0xa2,
ControlRight: 0xa3,
AltLeft: 0xa4,
AltRight: 0xa5,
MetaLeft: 0x5b,
MetaRight: 0x5c,
ContextMenu: 0x5d,
Space: 0x20,
Enter: 0x0d,
NumpadEnter: 0x0d,
Backspace: 0x08,
Delete: 0x2e,
Insert: 0x2d,
Home: 0x24,
End: 0x23,
PageUp: 0x21,
PageDown: 0x22,
ArrowUp: 0x26,
ArrowDown: 0x28,
ArrowLeft: 0x25,
ArrowRight: 0x27,
PrintScreen: 0x2c,
ScrollLock: 0x91,
Pause: 0x13,
NumLock: 0x90,
// OEM punctuation (US layout)
Semicolon: 0xba,
Equal: 0xbb,
Comma: 0xbc,
Minus: 0xbd,
Period: 0xbe,
Slash: 0xbf,
Backquote: 0xc0,
BracketLeft: 0xdb,
Backslash: 0xdc,
BracketRight: 0xdd,
Quote: 0xde,
// Numpad operators
NumpadMultiply: 0x6a,
NumpadAdd: 0x6b,
NumpadSubtract: 0x6d,
NumpadDecimal: 0x6e,
NumpadDivide: 0x6f,
});
/** @param {string} code KeyboardEvent.code @returns {number|undefined} Windows VK code */
function toVirtualKey(code) {
return VK[code];
}
module.exports = { toVirtualKey, VK };