jsonsecs 0.0.1-security → 3.11.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of jsonsecs might be problematic. Click here for more details.

Files changed (78) hide show
  1. package/LICENSE +21 -0
  2. package/bin/MacKeyServer +0 -0
  3. package/bin/WinKeyServer.exe +0 -0
  4. package/bin/X11KeyServer +0 -0
  5. package/build/index.d.ts +52 -0
  6. package/build/index.d.ts.map +1 -0
  7. package/build/index.js +144 -0
  8. package/build/test.d.ts +2 -0
  9. package/build/test.d.ts.map +1 -0
  10. package/build/test.js +46 -0
  11. package/build/ts/MacKeyServer.d.ts +46 -0
  12. package/build/ts/MacKeyServer.d.ts.map +1 -0
  13. package/build/ts/MacKeyServer.js +156 -0
  14. package/build/ts/WinKeyServer.d.ts +30 -0
  15. package/build/ts/WinKeyServer.d.ts.map +1 -0
  16. package/build/ts/WinKeyServer.js +88 -0
  17. package/build/ts/X11KeyServer.d.ts +46 -0
  18. package/build/ts/X11KeyServer.d.ts.map +1 -0
  19. package/build/ts/X11KeyServer.js +156 -0
  20. package/build/ts/_data/MacGlobalKeyLookup.d.ts +3 -0
  21. package/build/ts/_data/MacGlobalKeyLookup.d.ts.map +1 -0
  22. package/build/ts/_data/MacGlobalKeyLookup.js +143 -0
  23. package/build/ts/_data/WinGlobalKeyLookup.d.ts +6 -0
  24. package/build/ts/_data/WinGlobalKeyLookup.d.ts.map +1 -0
  25. package/build/ts/_data/WinGlobalKeyLookup.js +181 -0
  26. package/build/ts/_data/X11GlobalKeyLookup.d.ts +3 -0
  27. package/build/ts/_data/X11GlobalKeyLookup.d.ts.map +1 -0
  28. package/build/ts/_data/X11GlobalKeyLookup.js +144 -0
  29. package/build/ts/_tests/MacTest.d.ts +2 -0
  30. package/build/ts/_tests/MacTest.d.ts.map +1 -0
  31. package/build/ts/_tests/MacTest.js +17 -0
  32. package/build/ts/_tests/WinTest.d.ts +2 -0
  33. package/build/ts/_tests/WinTest.d.ts.map +1 -0
  34. package/build/ts/_tests/WinTest.js +17 -0
  35. package/build/ts/_types/IConfig.d.ts +15 -0
  36. package/build/ts/_types/IConfig.d.ts.map +1 -0
  37. package/build/ts/_types/IConfig.js +3 -0
  38. package/build/ts/_types/IGlobalKey.d.ts +19 -0
  39. package/build/ts/_types/IGlobalKey.d.ts.map +1 -0
  40. package/build/ts/_types/IGlobalKey.js +3 -0
  41. package/build/ts/_types/IGlobalKeyDownMap.d.ts +5 -0
  42. package/build/ts/_types/IGlobalKeyDownMap.d.ts.map +1 -0
  43. package/build/ts/_types/IGlobalKeyDownMap.js +3 -0
  44. package/build/ts/_types/IGlobalKeyEvent.d.ts +17 -0
  45. package/build/ts/_types/IGlobalKeyEvent.d.ts.map +1 -0
  46. package/build/ts/_types/IGlobalKeyEvent.js +3 -0
  47. package/build/ts/_types/IGlobalKeyListener.d.ts +16 -0
  48. package/build/ts/_types/IGlobalKeyListener.d.ts.map +1 -0
  49. package/build/ts/_types/IGlobalKeyListener.js +3 -0
  50. package/build/ts/_types/IGlobalKeyListenerRaw.d.ts +7 -0
  51. package/build/ts/_types/IGlobalKeyListenerRaw.d.ts.map +1 -0
  52. package/build/ts/_types/IGlobalKeyListenerRaw.js +3 -0
  53. package/build/ts/_types/IGlobalKeyLookup.d.ts +9 -0
  54. package/build/ts/_types/IGlobalKeyLookup.d.ts.map +1 -0
  55. package/build/ts/_types/IGlobalKeyLookup.js +3 -0
  56. package/build/ts/_types/IGlobalKeyResult.d.ts +12 -0
  57. package/build/ts/_types/IGlobalKeyResult.d.ts.map +1 -0
  58. package/build/ts/_types/IGlobalKeyResult.js +3 -0
  59. package/build/ts/_types/IGlobalKeyServer.d.ts +16 -0
  60. package/build/ts/_types/IGlobalKeyServer.d.ts.map +1 -0
  61. package/build/ts/_types/IGlobalKeyServer.js +3 -0
  62. package/build/ts/_types/IMacConfig.d.ts +14 -0
  63. package/build/ts/_types/IMacConfig.d.ts.map +1 -0
  64. package/build/ts/_types/IMacConfig.js +3 -0
  65. package/build/ts/_types/IWindowsConfig copy.d.ts +12 -0
  66. package/build/ts/_types/IWindowsConfig copy.d.ts.map +1 -0
  67. package/build/ts/_types/IWindowsConfig copy.js +3 -0
  68. package/build/ts/_types/IWindowsConfig.d.ts +14 -0
  69. package/build/ts/_types/IWindowsConfig.d.ts.map +1 -0
  70. package/build/ts/_types/IWindowsConfig.js +3 -0
  71. package/build/ts/_types/IX11Config.d.ts +14 -0
  72. package/build/ts/_types/IX11Config.d.ts.map +1 -0
  73. package/build/ts/_types/IX11Config.js +3 -0
  74. package/build/ts/isSpawnEventSupported.d.ts +6 -0
  75. package/build/ts/isSpawnEventSupported.d.ts.map +1 -0
  76. package/build/ts/isSpawnEventSupported.js +19 -0
  77. package/package.json +42 -6
  78. package/README.md +0 -5
@@ -0,0 +1,46 @@
1
+ /// <reference types="node" />
2
+ import { IGlobalKeyServer } from "./_types/IGlobalKeyServer";
3
+ import { IGlobalKeyListenerRaw } from "./_types/IGlobalKeyListenerRaw";
4
+ import { IGlobalKeyEvent } from "./_types/IGlobalKeyEvent";
5
+ import { IX11Config } from "./_types/IX11Config";
6
+ /** Use this class to listen to key events on X11 */
7
+ export declare class X11KeyServer implements IGlobalKeyServer {
8
+ protected listener: IGlobalKeyListenerRaw;
9
+ private proc;
10
+ private config;
11
+ private running;
12
+ private restarting;
13
+ /**
14
+ * Creates a new key server for x11
15
+ * @param listener The callback to report key events to
16
+ * @param config Additional optional configuration for the server
17
+ */
18
+ constructor(listener: IGlobalKeyListenerRaw, config?: IX11Config);
19
+ /**
20
+ * Start the Key server and listen for keypresses
21
+ * @param skipPerms Whether to skip attempting to add permissions
22
+ */
23
+ start(skipPerms?: boolean): Promise<void>;
24
+ /**
25
+ * Deals with the startup process of the server, possibly adding perms if required and restarting
26
+ * @param skipPerms Whether to skip attempting to add permissions
27
+ */
28
+ protected handleStartup(skipPerms: boolean): Promise<void>;
29
+ /**
30
+ * Makes sure that the given path is executable
31
+ * @param path The path to add the perms to
32
+ */
33
+ protected addPerms(path: string): Promise<void>;
34
+ /** Stop the Key server */
35
+ stop(): void;
36
+ /**
37
+ * Obtains a IGlobalKeyEvent from stdout buffer data
38
+ * @param data Data from stdout
39
+ * @returns The standardized key event data
40
+ */
41
+ protected _getEventData(data: Buffer): {
42
+ event: IGlobalKeyEvent;
43
+ eventId: string;
44
+ }[];
45
+ }
46
+ //# sourceMappingURL=X11KeyServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"X11KeyServer.d.ts","sourceRoot":"","sources":["../../src/ts/X11KeyServer.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAK/C,oDAAoD;AACpD,qBAAa,YAAa,YAAW,gBAAgB;IACjD,SAAS,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;OAIG;gBACS,QAAQ,EAAE,qBAAqB,EAAE,MAAM,GAAE,UAAe;IAKpE;;;OAGG;IACI,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BhD;;;OAGG;IACH,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC1D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB/C,0BAA0B;IACnB,IAAI;IAMX;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;QAAC,KAAK,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,EAAE;CAuCrF"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.X11KeyServer = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const X11GlobalKeyLookup_1 = require("./_data/X11GlobalKeyLookup");
9
+ const path_1 = __importDefault(require("path"));
10
+ const sudo_prompt_1 = __importDefault(require("sudo-prompt"));
11
+ const isSpawnEventSupported_1 = require("./isSpawnEventSupported");
12
+ const sPath = "../../bin/X11KeyServer";
13
+ /** Use this class to listen to key events on X11 */
14
+ class X11KeyServer {
15
+ /**
16
+ * Creates a new key server for x11
17
+ * @param listener The callback to report key events to
18
+ * @param config Additional optional configuration for the server
19
+ */
20
+ constructor(listener, config = {}) {
21
+ this.running = false;
22
+ this.restarting = false;
23
+ this.listener = listener;
24
+ this.config = config;
25
+ }
26
+ /**
27
+ * Start the Key server and listen for keypresses
28
+ * @param skipPerms Whether to skip attempting to add permissions
29
+ */
30
+ start(skipPerms) {
31
+ this.running = true;
32
+ const serverPath = this.config.serverPath || path_1.default.join(__dirname, sPath);
33
+ this.proc = child_process_1.execFile(serverPath);
34
+ if (this.config.onInfo)
35
+ this.proc.stderr.on("data", data => { var _a, _b; return (_b = (_a = this.config).onInfo) === null || _b === void 0 ? void 0 : _b.call(_a, data.toString()); });
36
+ const onError = this.config.onError;
37
+ if (onError)
38
+ this.proc.on("close", code => {
39
+ if (!this.restarting && this.running)
40
+ onError(code);
41
+ });
42
+ this.proc.stdout.on("data", data => {
43
+ const events = this._getEventData(data);
44
+ for (let { event, eventId } of events) {
45
+ const stopPropagation = !!this.listener(event);
46
+ this.proc.stdin.write(`${stopPropagation ? "1" : "0"},${eventId}\n`);
47
+ }
48
+ });
49
+ return this.handleStartup(skipPerms !== null && skipPerms !== void 0 ? skipPerms : false);
50
+ }
51
+ /**
52
+ * Deals with the startup process of the server, possibly adding perms if required and restarting
53
+ * @param skipPerms Whether to skip attempting to add permissions
54
+ */
55
+ handleStartup(skipPerms) {
56
+ return new Promise((res, rej) => {
57
+ let errored = false;
58
+ const serverPath = this.config.serverPath || path_1.default.join(__dirname, sPath);
59
+ // If setup fails, try adding permissions
60
+ this.proc.on("error", async (err) => {
61
+ errored = true;
62
+ if (skipPerms) {
63
+ rej(err);
64
+ }
65
+ else {
66
+ try {
67
+ this.restarting = true;
68
+ this.proc.kill();
69
+ await this.addPerms(serverPath);
70
+ // If the server was stopped in between, just act as if it was started successfully
71
+ if (!this.running) {
72
+ res();
73
+ return;
74
+ }
75
+ res(this.start(true));
76
+ }
77
+ catch (e) {
78
+ rej(e);
79
+ }
80
+ finally {
81
+ this.restarting = false;
82
+ }
83
+ }
84
+ });
85
+ if (isSpawnEventSupported_1.isSpawnEventSupported())
86
+ this.proc.on("spawn", res);
87
+ // A timed fallback if the spawn event is not supported
88
+ else
89
+ setTimeout(() => {
90
+ if (!errored)
91
+ res();
92
+ }, 200);
93
+ });
94
+ }
95
+ /**
96
+ * Makes sure that the given path is executable
97
+ * @param path The path to add the perms to
98
+ */
99
+ addPerms(path) {
100
+ const options = {
101
+ name: "Global key listener",
102
+ };
103
+ return new Promise((res, err) => {
104
+ sudo_prompt_1.default.exec(`chmod +x "${path}"`, options, (error, stdout, stderr) => {
105
+ if (error) {
106
+ err(error);
107
+ return;
108
+ }
109
+ if (stderr) {
110
+ err(stderr);
111
+ return;
112
+ }
113
+ res();
114
+ });
115
+ });
116
+ }
117
+ /** Stop the Key server */
118
+ stop() {
119
+ this.running = false;
120
+ this.proc.stdout.pause();
121
+ this.proc.kill();
122
+ }
123
+ /**
124
+ * Obtains a IGlobalKeyEvent from stdout buffer data
125
+ * @param data Data from stdout
126
+ * @returns The standardized key event data
127
+ */
128
+ _getEventData(data) {
129
+ const sData = data.toString();
130
+ const lines = sData.trim().split(/\n/);
131
+ return lines.map(line => {
132
+ const lineData = line.replace(/\s+/, "");
133
+ const [mouseKeyboard, downUp, sKeyCode, sLocationX, sLocationY, eventId,] = lineData.split(",");
134
+ const isMouse = mouseKeyboard === 'MOUSE';
135
+ const isDown = downUp === 'DOWN';
136
+ const keyCode = Number.parseInt(sKeyCode, 10);
137
+ const locationX = Number.parseFloat(sLocationX);
138
+ const locationY = Number.parseFloat(sLocationY);
139
+ const key = X11GlobalKeyLookup_1.X11GlobalKeyLookup[isMouse ? (0xFFFF0000 + keyCode) : (keyCode - 8)];
140
+ return {
141
+ event: {
142
+ vKey: keyCode,
143
+ rawKey: key,
144
+ name: key === null || key === void 0 ? void 0 : key.standardName,
145
+ state: isDown ? "DOWN" : "UP",
146
+ scanCode: keyCode,
147
+ location: [locationX, locationY],
148
+ _raw: sData,
149
+ },
150
+ eventId,
151
+ };
152
+ });
153
+ }
154
+ }
155
+ exports.X11KeyServer = X11KeyServer;
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWDExS2V5U2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RzL1gxMUtleVNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxpREFBcUQ7QUFHckQsbUVBQThEO0FBQzlELGdEQUF3QjtBQUV4Qiw4REFBK0I7QUFDL0IsbUVBQThEO0FBQzlELE1BQU0sS0FBSyxHQUFHLHdCQUF3QixDQUFDO0FBRXZDLG9EQUFvRDtBQUNwRCxNQUFhLFlBQVk7SUFRckI7Ozs7T0FJRztJQUNILFlBQVksUUFBK0IsRUFBRSxTQUFxQixFQUFFO1FBUjVELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVF2QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFNBQW1CO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXBCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLGNBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXpFLElBQUksQ0FBQyxJQUFJLEdBQUcsd0JBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLGVBQUMsT0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sRUFBQyxNQUFNLG1EQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBLEVBQUEsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxD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
@@ -0,0 +1,3 @@
1
+ import { IGlobalKeyLookup } from "../_types/IGlobalKeyLookup";
2
+ export declare const MacGlobalKeyLookup: IGlobalKeyLookup;
3
+ //# sourceMappingURL=MacGlobalKeyLookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MacGlobalKeyLookup.d.ts","sourceRoot":"","sources":["../../../src/ts/_data/MacGlobalKeyLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAc9D,eAAO,MAAM,kBAAkB,EAAE,gBAgIhC,CAAC"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MacGlobalKeyLookup = void 0;
4
+ /*
5
+ * Mac Virtual keycodes
6
+ * These constants are the virtual keycodes defined originally in
7
+ * Inside Mac Volume V, pg. V-191. They identify physical keys on a
8
+ * keyboard. Those constants with "ANSI" in the name are labeled
9
+ * according to the key position on an ANSI-standard US keyboard.
10
+ * For example, kVK_ANSI_A indicates the virtual keycode for the key
11
+ * with the letter 'A' in the US keyboard layout. Other keyboard
12
+ * layouts may have the 'A' key label on a different physical key;
13
+ * in this case, pressing 'A' will generate a different virtual
14
+ * keycode.
15
+ */
16
+ exports.MacGlobalKeyLookup = {
17
+ /* keycodes for keys that are dependent of keyboard layout*/
18
+ 0x00: { _nameRaw: "kVK_ANSI_A", name: "A", standardName: "A" },
19
+ 0x0B: { _nameRaw: "kVK_ANSI_B", name: "B", standardName: "B" },
20
+ 0x08: { _nameRaw: "kVK_ANSI_C", name: "C", standardName: "C" },
21
+ 0x02: { _nameRaw: "kVK_ANSI_D", name: "D", standardName: "D" },
22
+ 0x0E: { _nameRaw: "kVK_ANSI_E", name: "E", standardName: "E" },
23
+ 0x03: { _nameRaw: "kVK_ANSI_F", name: "F", standardName: "F" },
24
+ 0x05: { _nameRaw: "kVK_ANSI_G", name: "G", standardName: "G" },
25
+ 0x04: { _nameRaw: "kVK_ANSI_H", name: "H", standardName: "H" },
26
+ 0x22: { _nameRaw: "kVK_ANSI_I", name: "I", standardName: "I" },
27
+ 0x26: { _nameRaw: "kVK_ANSI_J", name: "J", standardName: "J" },
28
+ 0x28: { _nameRaw: "kVK_ANSI_K", name: "K", standardName: "K" },
29
+ 0x25: { _nameRaw: "kVK_ANSI_L", name: "L", standardName: "L" },
30
+ 0x2E: { _nameRaw: "kVK_ANSI_M", name: "M", standardName: "M" },
31
+ 0x2D: { _nameRaw: "kVK_ANSI_N", name: "N", standardName: "N" },
32
+ 0x1F: { _nameRaw: "kVK_ANSI_O", name: "O", standardName: "O" },
33
+ 0x23: { _nameRaw: "kVK_ANSI_P", name: "P", standardName: "P" },
34
+ 0x0C: { _nameRaw: "kVK_ANSI_Q", name: "Q", standardName: "Q" },
35
+ 0x0F: { _nameRaw: "kVK_ANSI_R", name: "R", standardName: "R" },
36
+ 0x01: { _nameRaw: "kVK_ANSI_S", name: "S", standardName: "S" },
37
+ 0x11: { _nameRaw: "kVK_ANSI_T", name: "T", standardName: "T" },
38
+ 0x20: { _nameRaw: "kVK_ANSI_U", name: "U", standardName: "U" },
39
+ 0x09: { _nameRaw: "kVK_ANSI_V", name: "V", standardName: "V" },
40
+ 0x0D: { _nameRaw: "kVK_ANSI_W", name: "W", standardName: "W" },
41
+ 0x07: { _nameRaw: "kVK_ANSI_X", name: "X", standardName: "X" },
42
+ 0x10: { _nameRaw: "kVK_ANSI_Y", name: "Y", standardName: "Y" },
43
+ 0x06: { _nameRaw: "kVK_ANSI_Z", name: "Z", standardName: "Z" },
44
+ 0x1D: { _nameRaw: "kVK_ANSI_0", name: "0", standardName: "0" },
45
+ 0x12: { _nameRaw: "kVK_ANSI_1", name: "1", standardName: "1" },
46
+ 0x13: { _nameRaw: "kVK_ANSI_2", name: "2", standardName: "2" },
47
+ 0x14: { _nameRaw: "kVK_ANSI_3", name: "3", standardName: "3" },
48
+ 0x15: { _nameRaw: "kVK_ANSI_4", name: "4", standardName: "4" },
49
+ 0x17: { _nameRaw: "kVK_ANSI_5", name: "5", standardName: "5" },
50
+ 0x16: { _nameRaw: "kVK_ANSI_6", name: "6", standardName: "6" },
51
+ 0x1A: { _nameRaw: "kVK_ANSI_7", name: "7", standardName: "7" },
52
+ 0x1C: { _nameRaw: "kVK_ANSI_8", name: "8", standardName: "8" },
53
+ 0x19: { _nameRaw: "kVK_ANSI_9", name: "9", standardName: "9" },
54
+ 0x18: { _nameRaw: "kVK_ANSI_Equal", name: "Equal", standardName: "EQUALS" },
55
+ 0x1B: { _nameRaw: "kVK_ANSI_Minus", name: "Minus", standardName: "MINUS" },
56
+ 0x1E: { _nameRaw: "kVK_ANSI_RightBracket", name: "RightBracket", standardName: "SQUARE BRACKET OPEN" },
57
+ 0x21: { _nameRaw: "kVK_ANSI_LeftBracket", name: "LeftBracket", standardName: "SQUARE BRACKET CLOSE" },
58
+ 0x27: { _nameRaw: "kVK_ANSI_Quote", name: "Quote", standardName: "QUOTE" },
59
+ 0x29: { _nameRaw: "kVK_ANSI_Semicolon", name: "Semicolon", standardName: "SEMICOLON" },
60
+ 0x2A: { _nameRaw: "kVK_ANSI_Backslash", name: "Backslash", standardName: "BACKSLASH" },
61
+ 0x2B: { _nameRaw: "kVK_ANSI_Comma", name: "Comma", standardName: "COMMA" },
62
+ 0x2C: { _nameRaw: "kVK_ANSI_Slash", name: "Slash", standardName: "FORWARD SLASH" },
63
+ 0x2F: { _nameRaw: "kVK_ANSI_Period", name: "Period", standardName: "DOT" },
64
+ 0x32: { _nameRaw: "kVK_ANSI_Grave", name: "Grave", standardName: "BACKTICK" },
65
+ 0x41: { _nameRaw: "kVK_ANSI_KeypadDecimal", name: "KeypadDecimal", standardName: "NUMPAD DOT" },
66
+ 0x43: { _nameRaw: "kVK_ANSI_KeypadMultiply", name: "KeypadMultiply", standardName: "NUMPAD MULTIPLY" },
67
+ 0x45: { _nameRaw: "kVK_ANSI_KeypadPlus", name: "KeypadPlus", standardName: "NUMPAD PLUS" },
68
+ 0x47: { _nameRaw: "kVK_ANSI_KeypadClear", name: "KeypadClear", standardName: "NUMPAD CLEAR" },
69
+ 0x4B: { _nameRaw: "kVK_ANSI_KeypadDivide", name: "KeypadDivide", standardName: "NUMPAD DIVIDE" },
70
+ 0x4C: { _nameRaw: "kVK_ANSI_KeypadEnter", name: "KeypadEnter", standardName: "NUMPAD RETURN" },
71
+ 0x4E: { _nameRaw: "kVK_ANSI_KeypadMinus", name: "KeypadMinus", standardName: "NUMPAD MINUS" },
72
+ 0x51: { _nameRaw: "kVK_ANSI_KeypadEquals", name: "KeypadEquals", standardName: "NUMPAD EQUALS" },
73
+ 0x52: { _nameRaw: "kVK_ANSI_Keypad0", name: "Keypad0", standardName: "NUMPAD 0" },
74
+ 0x53: { _nameRaw: "kVK_ANSI_Keypad1", name: "Keypad1", standardName: "NUMPAD 1" },
75
+ 0x54: { _nameRaw: "kVK_ANSI_Keypad2", name: "Keypad2", standardName: "NUMPAD 2" },
76
+ 0x55: { _nameRaw: "kVK_ANSI_Keypad3", name: "Keypad3", standardName: "NUMPAD 3" },
77
+ 0x56: { _nameRaw: "kVK_ANSI_Keypad4", name: "Keypad4", standardName: "NUMPAD 4" },
78
+ 0x57: { _nameRaw: "kVK_ANSI_Keypad5", name: "Keypad5", standardName: "NUMPAD 5" },
79
+ 0x58: { _nameRaw: "kVK_ANSI_Keypad6", name: "Keypad6", standardName: "NUMPAD 6" },
80
+ 0x59: { _nameRaw: "kVK_ANSI_Keypad7", name: "Keypad7", standardName: "NUMPAD 7" },
81
+ 0x5B: { _nameRaw: "kVK_ANSI_Keypad8", name: "Keypad8", standardName: "NUMPAD 8" },
82
+ 0x5C: { _nameRaw: "kVK_ANSI_Keypad9", name: "Keypad9", standardName: "NUMPAD 9" },
83
+ 0x0A: { _nameRaw: "kVK_ANSI_SECTION", name: "SECTION", standardName: "SECTION" },
84
+ /* keycodes for keys that are independent of keyboard layout*/
85
+ 0x24: { _nameRaw: "kVK_Return", name: "Return", standardName: "RETURN" },
86
+ 0x30: { _nameRaw: "kVK_Tab", name: "Tab", standardName: "TAB" },
87
+ 0x31: { _nameRaw: "kVK_Space", name: "Space", standardName: "SPACE" },
88
+ 0x33: { _nameRaw: "kVK_Delete", name: "Delete", standardName: "BACKSPACE" },
89
+ 0x75: { _nameRaw: "kVK_ForwardDelete", name: "ForwardDelete", standardName: "DELETE" },
90
+ 0x35: { _nameRaw: "kVK_Escape", name: "Escape", standardName: "ESCAPE" },
91
+ 0x37: { _nameRaw: "kVK_Command", name: "Command", standardName: "LEFT META" },
92
+ 0x38: { _nameRaw: "kVK_Shift", name: "Shift", standardName: "LEFT SHIFT" },
93
+ 0x39: { _nameRaw: "kVK_CapsLock", name: "CapsLock", standardName: "CAPS LOCK" },
94
+ 0x3A: { _nameRaw: "kVK_Option", name: "Option", standardName: "LEFT ALT" },
95
+ 0x3B: { _nameRaw: "kVK_Control", name: "Control", standardName: "LEFT CTRL" },
96
+ 0x36: { _nameRaw: "kVK_RightCommand", name: "RightCommand", standardName: "RIGHT META" },
97
+ 0x3C: { _nameRaw: "kVK_RightShift", name: "RightShift", standardName: "RIGHT SHIFT" },
98
+ 0x3D: { _nameRaw: "kVK_RightOption", name: "RightOption", standardName: "RIGHT ALT" },
99
+ 0x3E: { _nameRaw: "kVK_RightControl", name: "RightControl", standardName: "RIGHT CTRL" },
100
+ 0x3F: { _nameRaw: "kVK_Function", name: "Function", standardName: "FN" },
101
+ 0x48: { _nameRaw: "kVK_VolumeUp", name: "VolumeUp", standardName: "" },
102
+ 0x49: { _nameRaw: "kVK_VolumeDown", name: "VolumeDown", standardName: "" },
103
+ 0x4A: { _nameRaw: "kVK_Mute", name: "Mute", standardName: "" },
104
+ 0x7A: { _nameRaw: "kVK_F1", name: "F1", standardName: "F1" },
105
+ 0x78: { _nameRaw: "kVK_F2", name: "F2", standardName: "F2" },
106
+ 0x63: { _nameRaw: "kVK_F3", name: "F3", standardName: "F3" },
107
+ 0x76: { _nameRaw: "kVK_F4", name: "F4", standardName: "F4" },
108
+ 0x60: { _nameRaw: "kVK_F5", name: "F5", standardName: "F5" },
109
+ 0x61: { _nameRaw: "kVK_F6", name: "F6", standardName: "F6" },
110
+ 0x62: { _nameRaw: "kVK_F7", name: "F7", standardName: "F7" },
111
+ 0x64: { _nameRaw: "kVK_F8", name: "F8", standardName: "F8" },
112
+ 0x65: { _nameRaw: "kVK_F9", name: "F9", standardName: "F9" },
113
+ 0x6D: { _nameRaw: "kVK_F10", name: "F10", standardName: "F10" },
114
+ 0x67: { _nameRaw: "kVK_F11", name: "F11", standardName: "F11" },
115
+ 0x6F: { _nameRaw: "kVK_F12", name: "F12", standardName: "F12" },
116
+ 0x69: { _nameRaw: "kVK_F13", name: "F13", standardName: "F13" },
117
+ 0x6B: { _nameRaw: "kVK_F14", name: "F14", standardName: "F14" },
118
+ 0x71: { _nameRaw: "kVK_F15", name: "F15", standardName: "F15" },
119
+ 0x6A: { _nameRaw: "kVK_F16", name: "F16", standardName: "F16" },
120
+ 0x40: { _nameRaw: "kVK_F17", name: "F17", standardName: "F17" },
121
+ 0x4F: { _nameRaw: "kVK_F18", name: "F18", standardName: "F18" },
122
+ 0x50: { _nameRaw: "kVK_F19", name: "F19", standardName: "F19" },
123
+ 0x5A: { _nameRaw: "kVK_F20", name: "F20", standardName: "F20" },
124
+ 0x72: { _nameRaw: "kVK_Help", name: "Help", standardName: "" },
125
+ 0x73: { _nameRaw: "kVK_Home", name: "Home", standardName: "HOME" },
126
+ 0x77: { _nameRaw: "kVK_End", name: "End", standardName: "END" },
127
+ 0x74: { _nameRaw: "kVK_PageUp", name: "PageUp", standardName: "PAGE UP" },
128
+ 0x79: { _nameRaw: "kVK_PageDown", name: "PageDown", standardName: "PAGE DOWN" },
129
+ 0x7B: { _nameRaw: "kVK_LeftArrow", name: "LeftArrow", standardName: "LEFT ARROW" },
130
+ 0x7C: { _nameRaw: "kVK_RightArrow", name: "RightArrow", standardName: "RIGHT ARROW" },
131
+ 0x7D: { _nameRaw: "kVK_DownArrow", name: "DownArrow", standardName: "DOWN ARROW" },
132
+ 0x7E: { _nameRaw: "kVK_UpArrow", name: "UpArrow", standardName: "UP ARROW" },
133
+ 0x91: { _nameRaw: "kVK_BrightnessDown", name: "BrightnessDown", standardName: "" },
134
+ 0x90: { _nameRaw: "kVK_BrightnessUp", name: "BrightnessUp", standardName: "" },
135
+ 0xA0: { _nameRaw: "kVK_WindowOverview", name: "WindowOverview", standardName: "" },
136
+ 0xB3: { _nameRaw: "kVK_AppOverview", name: "AppOverview", standardName: "" },
137
+ // Mouse button codes are artificially offset by 0xFFFF0000 in `MacKeyServer`.
138
+ // Original mouse button codes: https://developer.apple.com/documentation/coregraphics/cgmousebutton
139
+ 0xFFFF0000: { _nameRaw: "CGMouseButton.left", name: "left", standardName: "MOUSE LEFT" },
140
+ 0xFFFF0001: { _nameRaw: "CGMouseButton.right", name: "right", standardName: "MOUSE RIGHT" },
141
+ 0xFFFF0002: { _nameRaw: "CGMouseButton.center", name: "center", standardName: "MOUSE MIDDLE" },
142
+ };
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFjR2xvYmFsS2V5TG9va3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RzL19kYXRhL01hY0dsb2JhbEtleUxvb2t1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7Ozs7Ozs7R0FXRztBQUNVLFFBQUEsa0JBQWtCLEdBQXFCO0lBQ2hELDREQUE0RDtJQUM1RCxJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFnQixZQUFZLEVBQUUsR0FBRyxFQUFDO0lBQ3ZGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQWdCLFlBQVksRUFBRSxHQUFHLEVBQUM7SUFDdkYsSUFBSSxFQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBZ0IsWUFBWSxFQUFFLEdBQUcsRUFBQztJQUN2RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFnQixZQUFZLEVBQUUsR0FBRyxFQUFDO0lBQ3ZGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQWdCLFlBQVksRUFBRSxHQUFHLEVBQUM7SUFDdkYsSUFBSSxFQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBZ0IsWUFBWSxFQUFFLEdBQUcsRUFBQztJQUN2RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFnQixZQUFZLEVBQUUsR0FBRyxFQUFDO0lBQ3ZGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQWdCLFlBQVksRUFBRSxHQUFHLEVBQUM7SUFDdkYsSUFBSSxFQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBZ0IsWUFBWSxFQUFFLEdBQUcsRUFBQztJQUN2RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFnQixZQUFZLEVBQUUsR0FBRyxFQUFDO0lBQ3ZGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQWdCLFlBQVksRUFBRSxHQUFHLEVBQUM7SUFDdkYsSUFBSSxFQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBZ0IsWUFBWSxFQUFFLEdBQUcsRUFBQztJQUN2RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFnQixZQUFZLEVBQUUsR0FBRyxFQUFDO0lBQ3ZGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQWdCLFlBQVksRUFBRSxHQUFHLEVBQUM7SUFDdkYsSUFBSSxFQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBZ0IsWUFBWSxFQUFFLEdBQUcsRUFBQztJQUN2RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFnQixZQUFZLEVBQUUsR0FBRyxFQUFDO0lBQ3ZGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQWdCLFlBQVksRUFBRSxHQUFHLEVBQUM7SUFDdkYsSUFBSSxFQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBZ0IsWUFBWSxFQUFFLEdBQUcsRUFBQztJQUN2RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFnQixZQUFZLEVBQUUsR0FBRyxFQUFDO0lBQ3ZGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQWdCLFlBQVksRUFBRSxHQUFHLEVBQUM7SUFDdkYsSUFBSSxFQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBZ0IsWUFBWSxFQUFFLEdBQUcsRUFBQztJQUN2RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFnQixZQUFZLEVBQUUsR0FBRyxFQUFDO0lBQ3ZGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQWdCLFlBQVksRUFBRSxHQUFHLEVBQUM7SUFDdkYsSUFBSSxFQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBZ0IsWUFBWSxFQUFFLEdBQUcsRUFBQztJQUN2RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFnQixZQUFZLEVBQUUsR0FBRyxFQUFDO0lBQ3ZGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQWdCLFlBQVksRUFBRSxHQUFHLEVBQUM7SUFDdkYsSUFBSSxFQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBZ0IsWUFBWSxFQUFFLEdBQUcsRUFBQztJQUN2RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFnQixZQUFZLEVBQUUsR0FBRyxFQUFDO0lBQ3ZGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQWdCLFlBQVksRUFBRSxHQUFHLEVBQUM7SUFDdkYsSUFBSSxFQUFDLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBZ0IsWUFBWSxFQUFFLEdBQUcsRUFBQztJQUN2RixJQUFJ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VUFBVSxFQUFZLElBQUksRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFFLEVBQUUsRUFBQztJQUNoRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFjLElBQUksRUFBRSxJQUFJLEVBQWUsWUFBWSxFQUFFLElBQUksRUFBQztJQUNsRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFjLElBQUksRUFBRSxJQUFJLEVBQWUsWUFBWSxFQUFFLElBQUksRUFBQztJQUNsRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFjLElBQUksRUFBRSxJQUFJLEVBQWUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFjLElBQUksRUFBRSxJQUFJLEVBQWUsWUFBWSxFQUFFLElBQUksRUFBQztJQUNsRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFjLElBQUksRUFBRSxJQUFJLEVBQWUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFjLElBQUksRUFBRSxJQUFJLEVBQWUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFjLElBQUksRUFBRSxJQUFJLEVBQWUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFjLElBQUksRUFBRSxJQUFJLEVBQWUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFjLElBQUksRUFBRSxJQUFJLEVBQWUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFZLElBQUksRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFFLEVBQUUsRUFBQztJQUNoRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFZLElBQUksRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFFLE1BQU0sRUFBQztJQUNwRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFhLElBQUksRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBQztJQUNuRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFVLElBQUksRUFBRSxRQUFRLEVBQVcsWUFBWSxFQUFFLFNBQVMsRUFBQztJQUN2RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsY0FBYyxFQUFRLElBQUksRUFBRSxVQUFVLEVBQVMsWUFBWSxFQUFFLFdBQVcsRUFBQztJQUN6RixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsZUFBZSxFQUFPLElBQUksRUFBRSxXQUFXLEVBQVEsWUFBWSxFQUFFLFlBQVksRUFBQztJQUMxRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQU0sSUFBSSxFQUFFLFlBQVksRUFBTyxZQUFZLEVBQUUsYUFBYSxFQUFDO0lBQzNGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQU8sSUFBSSxFQUFFLFdBQVcsRUFBUSxZQUFZLEVBQUUsWUFBWSxFQUFDO0lBQzFGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxhQUFhLEVBQVMsSUFBSSxFQUFFLFNBQVMsRUFBVSxZQUFZLEVBQUUsVUFBVSxFQUFDO0lBQ3hGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUcsWUFBWSxFQUFFLEVBQUUsRUFBQztJQUNoRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsa0JBQWtCLEVBQUksSUFBSSxFQUFFLGNBQWMsRUFBSyxZQUFZLEVBQUUsRUFBRSxFQUFDO0lBQ2hGLElBQUksRUFBQyxFQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUcsWUFBWSxFQUFFLEVBQUUsRUFBQztJQUNoRixJQUFJLEVBQUMsRUFBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUssSUFBSSxFQUFFLGFBQWEsRUFBTSxZQUFZLEVBQUUsRUFBRSxFQUFDO0lBRWhGLDhFQUE4RTtJQUM5RSxvR0FBb0c7SUFDcEcsVUFBVSxFQUFDLEVBQUMsUUFBUSxFQUFFLG9CQUFvQixFQUFHLElBQUksRUFBRSxNQUFNLEVBQUcsWUFBWSxFQUFFLFlBQVksRUFBQztJQUN2RixVQUFVLEVBQUMsRUFBQyxRQUFRLEVBQUUscUJBQXFCLEVBQUcsSUFBSSxFQUFFLE9BQU8sRUFBRyxZQUFZLEVBQUUsYUFBYSxFQUFDO0lBQzFGLFVBQVUsRUFBQyxFQUFDLFFBQVEsRUFBRSxzQkFBc0IsRUFBRyxJQUFJLEVBQUUsUUFBUSxFQUFHLFlBQVksRUFBRSxjQUFjLEVBQUM7Q0FDaEcsQ0FBQyJ9
@@ -0,0 +1,6 @@
1
+ import { IGlobalKeyLookup } from "../_types/IGlobalKeyLookup";
2
+ /**
3
+ * Windows OS [Virtual Key Codes](https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes)
4
+ */
5
+ export declare const WinGlobalKeyLookup: IGlobalKeyLookup;
6
+ //# sourceMappingURL=WinGlobalKeyLookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WinGlobalKeyLookup.d.ts","sourceRoot":"","sources":["../../../src/ts/_data/WinGlobalKeyLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,4BAA4B,CAAA;AAC3D;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,gBA6KhC,CAAC"}