暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

keymap.js 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Maps browser KeyboardEvent.code values to Windows virtual-key codes.
  2. // Reference: https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
  3. const VK = {};
  4. // Letters (KeyA..KeyZ -> 0x41..0x5A)
  5. for (let i = 0; i < 26; i++) VK['Key' + String.fromCharCode(65 + i)] = 0x41 + i;
  6. // Top-row digits (Digit0..Digit9 -> 0x30..0x39)
  7. for (let i = 0; i <= 9; i++) VK['Digit' + i] = 0x30 + i;
  8. // Numpad digits
  9. for (let i = 0; i <= 9; i++) VK['Numpad' + i] = 0x60 + i;
  10. // Function keys
  11. for (let i = 1; i <= 24; i++) VK['F' + i] = 0x70 + (i - 1);
  12. Object.assign(VK, {
  13. Escape: 0x1b,
  14. Tab: 0x09,
  15. CapsLock: 0x14,
  16. ShiftLeft: 0xa0,
  17. ShiftRight: 0xa1,
  18. ControlLeft: 0xa2,
  19. ControlRight: 0xa3,
  20. AltLeft: 0xa4,
  21. AltRight: 0xa5,
  22. MetaLeft: 0x5b,
  23. MetaRight: 0x5c,
  24. ContextMenu: 0x5d,
  25. Space: 0x20,
  26. Enter: 0x0d,
  27. NumpadEnter: 0x0d,
  28. Backspace: 0x08,
  29. Delete: 0x2e,
  30. Insert: 0x2d,
  31. Home: 0x24,
  32. End: 0x23,
  33. PageUp: 0x21,
  34. PageDown: 0x22,
  35. ArrowUp: 0x26,
  36. ArrowDown: 0x28,
  37. ArrowLeft: 0x25,
  38. ArrowRight: 0x27,
  39. PrintScreen: 0x2c,
  40. ScrollLock: 0x91,
  41. Pause: 0x13,
  42. NumLock: 0x90,
  43. // OEM punctuation (US layout)
  44. Semicolon: 0xba,
  45. Equal: 0xbb,
  46. Comma: 0xbc,
  47. Minus: 0xbd,
  48. Period: 0xbe,
  49. Slash: 0xbf,
  50. Backquote: 0xc0,
  51. BracketLeft: 0xdb,
  52. Backslash: 0xdc,
  53. BracketRight: 0xdd,
  54. Quote: 0xde,
  55. // Numpad operators
  56. NumpadMultiply: 0x6a,
  57. NumpadAdd: 0x6b,
  58. NumpadSubtract: 0x6d,
  59. NumpadDecimal: 0x6e,
  60. NumpadDivide: 0x6f,
  61. });
  62. /** @param {string} code KeyboardEvent.code @returns {number|undefined} Windows VK code */
  63. function toVirtualKey(code) {
  64. return VK[code];
  65. }
  66. module.exports = { toVirtualKey, VK };