keyspy 1.0.6 → 1.1.0
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.
- package/README.md +110 -3
- package/bin/keyspy +24 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +359 -0
- package/{build → dist}/index.d.ts +10 -10
- package/{build → dist}/index.d.ts.map +1 -1
- package/dist/index.js +156 -0
- package/{build/ts/X11KeyServer.d.ts → dist/platforms/linux/index.d.ts} +5 -5
- package/dist/platforms/linux/index.d.ts.map +1 -0
- package/dist/platforms/linux/index.js +181 -0
- package/dist/platforms/linux/keymap.d.ts +3 -0
- package/dist/platforms/linux/keymap.d.ts.map +1 -0
- package/dist/platforms/linux/keymap.js +144 -0
- package/{build/ts/MacKeyServer.d.ts → dist/platforms/mac/index.d.ts} +5 -5
- package/dist/platforms/mac/index.d.ts.map +1 -0
- package/dist/platforms/mac/index.js +181 -0
- package/dist/platforms/mac/keymap.d.ts +3 -0
- package/dist/platforms/mac/keymap.d.ts.map +1 -0
- package/dist/platforms/mac/keymap.js +155 -0
- package/{build/ts/WinKeyServer.d.ts → dist/platforms/windows/index.d.ts} +5 -5
- package/dist/platforms/windows/index.d.ts.map +1 -0
- package/dist/platforms/windows/index.js +110 -0
- package/{build/ts/_data/WinGlobalKeyLookup.d.ts → dist/platforms/windows/keymap.d.ts} +2 -2
- package/dist/platforms/windows/keymap.d.ts.map +1 -0
- package/{build/ts/_data/WinGlobalKeyLookup.js → dist/platforms/windows/keymap.js} +1 -1
- package/{build/ts/_types → dist/types}/IConfig.d.ts +2 -0
- package/dist/types/IConfig.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IConfig.js +1 -1
- package/{build/ts/_types → dist/types}/IGlobalKey.d.ts +1 -1
- package/dist/types/IGlobalKey.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IGlobalKey.js +1 -1
- package/dist/types/IGlobalKeyDownMap.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IGlobalKeyDownMap.js +1 -1
- package/dist/types/IGlobalKeyEvent.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IGlobalKeyEvent.js +1 -1
- package/dist/types/IGlobalKeyListener.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IGlobalKeyListener.js +1 -1
- package/dist/types/IGlobalKeyListenerRaw.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IGlobalKeyListenerRaw.js +1 -1
- package/dist/types/IGlobalKeyLookup.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IGlobalKeyLookup.js +1 -1
- package/dist/types/IGlobalKeyResult.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IGlobalKeyResult.js +1 -1
- package/dist/types/IGlobalKeyServer.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IGlobalKeyServer.js +1 -1
- package/{build/ts/_types → dist/types}/IMacConfig.d.ts +2 -0
- package/dist/types/IMacConfig.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IMacConfig.js +1 -1
- package/dist/types/IWindowsConfig.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IWindowsConfig.js +1 -1
- package/{build/ts/_types → dist/types}/IX11Config.d.ts +2 -0
- package/dist/types/IX11Config.d.ts.map +1 -0
- package/{build/ts/_types → dist/types}/IX11Config.js +1 -1
- package/dist/utils/permissions.d.ts +10 -0
- package/dist/utils/permissions.d.ts.map +1 -0
- package/dist/utils/permissions.js +115 -0
- package/dist/utils.d.ts +22 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +39 -0
- package/native/MacKeyServer/main.swift +326 -0
- package/native/WinKeyServer/main.cpp +402 -0
- package/native/X11KeyServer/main.cpp +118 -0
- package/package.json +69 -52
- package/runtime/MacKeyServer +0 -0
- package/scripts/download-binaries.js +7 -7
- package/build/index.js +0 -149
- package/build/ts/MacKeyServer.d.ts.map +0 -1
- package/build/ts/MacKeyServer.js +0 -159
- package/build/ts/WinKeyServer.d.ts.map +0 -1
- package/build/ts/WinKeyServer.js +0 -88
- package/build/ts/X11KeyServer.d.ts.map +0 -1
- package/build/ts/X11KeyServer.js +0 -159
- package/build/ts/_data/MacGlobalKeyLookup.d.ts +0 -3
- package/build/ts/_data/MacGlobalKeyLookup.d.ts.map +0 -1
- package/build/ts/_data/MacGlobalKeyLookup.js +0 -155
- package/build/ts/_data/WinGlobalKeyLookup.d.ts.map +0 -1
- package/build/ts/_data/X11GlobalKeyLookup.d.ts +0 -3
- package/build/ts/_data/X11GlobalKeyLookup.d.ts.map +0 -1
- package/build/ts/_data/X11GlobalKeyLookup.js +0 -144
- package/build/ts/_types/IConfig.d.ts.map +0 -1
- package/build/ts/_types/IGlobalKey.d.ts.map +0 -1
- package/build/ts/_types/IGlobalKeyDownMap.d.ts.map +0 -1
- package/build/ts/_types/IGlobalKeyEvent.d.ts.map +0 -1
- package/build/ts/_types/IGlobalKeyListener.d.ts.map +0 -1
- package/build/ts/_types/IGlobalKeyListenerRaw.d.ts.map +0 -1
- package/build/ts/_types/IGlobalKeyLookup.d.ts.map +0 -1
- package/build/ts/_types/IGlobalKeyResult.d.ts.map +0 -1
- package/build/ts/_types/IGlobalKeyServer.d.ts.map +0 -1
- package/build/ts/_types/IMacConfig.d.ts.map +0 -1
- package/build/ts/_types/IWindowsConfig.d.ts.map +0 -1
- package/build/ts/_types/IX11Config.d.ts.map +0 -1
- package/build/ts/isSpawnEventSupported.d.ts +0 -6
- package/build/ts/isSpawnEventSupported.d.ts.map +0 -1
- package/build/ts/isSpawnEventSupported.js +0 -18
- /package/{build/ts/_types → dist/types}/IGlobalKeyDownMap.d.ts +0 -0
- /package/{build/ts/_types → dist/types}/IGlobalKeyEvent.d.ts +0 -0
- /package/{build/ts/_types → dist/types}/IGlobalKeyListener.d.ts +0 -0
- /package/{build/ts/_types → dist/types}/IGlobalKeyListenerRaw.d.ts +0 -0
- /package/{build/ts/_types → dist/types}/IGlobalKeyLookup.d.ts +0 -0
- /package/{build/ts/_types → dist/types}/IGlobalKeyResult.d.ts +0 -0
- /package/{build/ts/_types → dist/types}/IGlobalKeyServer.d.ts +0 -0
- /package/{build/ts/_types → dist/types}/IWindowsConfig.d.ts +0 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.GlobalKeyboardListener = void 0;
|
|
21
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
22
|
+
const mac_1 = require("./platforms/mac");
|
|
23
|
+
const windows_1 = require("./platforms/windows");
|
|
24
|
+
const linux_1 = require("./platforms/linux");
|
|
25
|
+
__exportStar(require("./types/IGlobalKeyListener"), exports);
|
|
26
|
+
__exportStar(require("./types/IGlobalKeyEvent"), exports);
|
|
27
|
+
__exportStar(require("./types/IGlobalKey"), exports);
|
|
28
|
+
__exportStar(require("./types/IGlobalKeyDownMap"), exports);
|
|
29
|
+
__exportStar(require("./types/IWindowsConfig"), exports);
|
|
30
|
+
__exportStar(require("./types/IConfig"), exports);
|
|
31
|
+
__exportStar(require("./types/IGlobalKeyResult"), exports);
|
|
32
|
+
/**
|
|
33
|
+
* A cross-platform global keyboard listener. Ideal for setting up global keyboard shortcuts
|
|
34
|
+
* and key-loggers (usually for automation).
|
|
35
|
+
* This keyserver uses low-level hooks on Windows OS and Event Taps on Mac OS, which allows
|
|
36
|
+
* event propagation to be halted to the rest of the operating system as well as allowing
|
|
37
|
+
* any key to be used for shortcuts.
|
|
38
|
+
*/
|
|
39
|
+
class GlobalKeyboardListener {
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new keyboard listener
|
|
42
|
+
* @param config The optional configuration for the key listener
|
|
43
|
+
*/
|
|
44
|
+
constructor(config = {}) {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
/** Whether the server is currently running */
|
|
47
|
+
this.isRunning = false;
|
|
48
|
+
this.stopTimeoutID = 0;
|
|
49
|
+
/** The following listener is used to monitor which keys are being held down */
|
|
50
|
+
this.baseListener = (event) => {
|
|
51
|
+
if (event.name) {
|
|
52
|
+
switch (event.state) {
|
|
53
|
+
case "DOWN":
|
|
54
|
+
this.isDown[event.name] = true;
|
|
55
|
+
break;
|
|
56
|
+
case "UP":
|
|
57
|
+
this.isDown[event.name] = false;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
let stopPropagation = false;
|
|
62
|
+
for (const onKey of this.listeners) {
|
|
63
|
+
//Forward event
|
|
64
|
+
try {
|
|
65
|
+
const res = onKey(event, this.isDown);
|
|
66
|
+
//Handle catch data
|
|
67
|
+
if (res instanceof Object) {
|
|
68
|
+
if (res.stopPropagation)
|
|
69
|
+
stopPropagation = true;
|
|
70
|
+
if (res.stopImmediatePropagation)
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
else if (res) {
|
|
74
|
+
stopPropagation = true;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
console.error(e);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return stopPropagation;
|
|
82
|
+
};
|
|
83
|
+
this.listeners = [];
|
|
84
|
+
this.isDown = {};
|
|
85
|
+
this.config = config;
|
|
86
|
+
switch (node_os_1.default.platform()) {
|
|
87
|
+
case "win32":
|
|
88
|
+
this.keyServer = new windows_1.WinKeyServer(this.baseListener, config.windows);
|
|
89
|
+
break;
|
|
90
|
+
case "darwin":
|
|
91
|
+
this.keyServer = new mac_1.MacKeyServer(this.baseListener, {
|
|
92
|
+
...config.mac,
|
|
93
|
+
appName: ((_a = config.mac) === null || _a === void 0 ? void 0 : _a.appName) || config.appName,
|
|
94
|
+
});
|
|
95
|
+
break;
|
|
96
|
+
case "linux":
|
|
97
|
+
this.keyServer = new linux_1.X11KeyServer(this.baseListener, {
|
|
98
|
+
...config.x11,
|
|
99
|
+
appName: ((_b = config.x11) === null || _b === void 0 ? void 0 : _b.appName) || config.appName,
|
|
100
|
+
});
|
|
101
|
+
break;
|
|
102
|
+
default:
|
|
103
|
+
throw Error("This OS is not supported");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Add a global keyboard listener to the global keyboard listener server.
|
|
108
|
+
* @param listener The listener to add to the global keyboard listener
|
|
109
|
+
* @throws An exception if the process could not be started
|
|
110
|
+
*/
|
|
111
|
+
async addListener(listener) {
|
|
112
|
+
this.listeners.push(listener);
|
|
113
|
+
if (this.listeners.length === 1) {
|
|
114
|
+
clearTimeout(this.stopTimeoutID);
|
|
115
|
+
await this.start();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Remove a global keyboard listener from the global keyboard listener server.
|
|
120
|
+
* @param listener The listener to remove from the global keyboard listener
|
|
121
|
+
*/
|
|
122
|
+
removeListener(listener) {
|
|
123
|
+
var _a;
|
|
124
|
+
const index = this.listeners.indexOf(listener);
|
|
125
|
+
if (index !== -1) {
|
|
126
|
+
this.listeners.splice(index, 1);
|
|
127
|
+
if (this.listeners.length === 0) {
|
|
128
|
+
if (this.config.disposeDelay === -1)
|
|
129
|
+
this.stop();
|
|
130
|
+
else
|
|
131
|
+
this.stopTimeoutID = setTimeout(() => this.stop(), (_a = this.config.disposeDelay) !== null && _a !== void 0 ? _a : 100);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/** Removes all listeners and destroys the key server */
|
|
136
|
+
kill() {
|
|
137
|
+
this.listeners = [];
|
|
138
|
+
this.stop();
|
|
139
|
+
}
|
|
140
|
+
/** Start the key server */
|
|
141
|
+
start() {
|
|
142
|
+
let promise = Promise.resolve();
|
|
143
|
+
if (!this.isRunning)
|
|
144
|
+
promise = this.keyServer.start();
|
|
145
|
+
this.isRunning = true;
|
|
146
|
+
return promise;
|
|
147
|
+
}
|
|
148
|
+
/** Stop the key server */
|
|
149
|
+
stop() {
|
|
150
|
+
if (this.isRunning)
|
|
151
|
+
this.keyServer.stop();
|
|
152
|
+
this.isRunning = false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.GlobalKeyboardListener = GlobalKeyboardListener;
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBeUI7QUFDekIseUNBQStDO0FBQy9DLGlEQUFtRDtBQUNuRCw2Q0FBaUQ7QUFPakQsNkRBQTJDO0FBQzNDLDBEQUF3QztBQUN4QyxxREFBbUM7QUFDbkMsNERBQTBDO0FBQzFDLHlEQUF1QztBQUN2QyxrREFBZ0M7QUFDaEMsMkRBQXlDO0FBRXpDOzs7Ozs7R0FNRztBQUNILE1BQWEsc0JBQXNCO0lBYWpDOzs7T0FHRztJQUNILFlBQW1CLFNBQWtCLEVBQUU7O1FBWHZDLDhDQUE4QztRQUNwQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGtCQUFhLEdBQTRCLENBQUMsQ0FBQztRQWtGckQsK0VBQStFO1FBQ3ZFLGlCQUFZLEdBQTBCLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2YsUUFBUSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3BCLEtBQUssTUFBTTt3QkFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7d0JBQy9CLE1BQU07b0JBQ1IsS0FBSyxJQUFJO3dCQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQzt3QkFDaEMsTUFBTTtnQkFDVixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM1QixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsZUFBZTtnQkFDZixJQUFJLENBQUM7b0JBQ0gsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JB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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { IGlobalKeyServer } from "
|
|
2
|
-
import type { IGlobalKeyListenerRaw } from "
|
|
3
|
-
import type { IGlobalKeyEvent } from "
|
|
4
|
-
import type { IX11Config } from "
|
|
1
|
+
import type { IGlobalKeyServer } from "../../types/IGlobalKeyServer";
|
|
2
|
+
import type { IGlobalKeyListenerRaw } from "../../types/IGlobalKeyListenerRaw";
|
|
3
|
+
import type { IGlobalKeyEvent } from "../../types/IGlobalKeyEvent";
|
|
4
|
+
import type { IX11Config } from "../../types/IX11Config";
|
|
5
5
|
/** Use this class to listen to key events on X11 */
|
|
6
6
|
export declare class X11KeyServer implements IGlobalKeyServer {
|
|
7
7
|
protected listener: IGlobalKeyListenerRaw;
|
|
@@ -42,4 +42,4 @@ export declare class X11KeyServer implements IGlobalKeyServer {
|
|
|
42
42
|
eventId: string;
|
|
43
43
|
}[];
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=
|
|
45
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platforms/linux/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA6BzD,oDAAoD;AACpD,qBAAa,YAAa,YAAW,gBAAgB;IACnD,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;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE;CAkCrF"}
|
|
@@ -0,0 +1,181 @@
|
|
|
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 node_child_process_1 = require("node:child_process");
|
|
8
|
+
const keymap_1 = require("./keymap");
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
11
|
+
const sudo_prompt_1 = __importDefault(require("@expo/sudo-prompt"));
|
|
12
|
+
const utils_1 = require("../../utils");
|
|
13
|
+
// Binary loading paths - prioritize build/ then fallback to runtime/
|
|
14
|
+
const buildPath = "../../../build/X11KeyServer";
|
|
15
|
+
const runtimePath = "../../../runtime/X11KeyServer";
|
|
16
|
+
/**
|
|
17
|
+
* Get the server path, prioritizing build/ over runtime/
|
|
18
|
+
* @param customPath Optional custom path from config
|
|
19
|
+
* @param basePath Base path for relative resolution
|
|
20
|
+
* @returns The resolved server path
|
|
21
|
+
*/
|
|
22
|
+
function getServerPath(customPath, basePath = __dirname) {
|
|
23
|
+
if (customPath)
|
|
24
|
+
return customPath;
|
|
25
|
+
const buildServerPath = node_path_1.default.join(basePath, buildPath);
|
|
26
|
+
const runtimeServerPath = node_path_1.default.join(basePath, runtimePath);
|
|
27
|
+
// Check if build version exists first
|
|
28
|
+
if (node_fs_1.default.existsSync(buildServerPath)) {
|
|
29
|
+
return buildServerPath;
|
|
30
|
+
}
|
|
31
|
+
// Fallback to runtime version
|
|
32
|
+
return runtimeServerPath;
|
|
33
|
+
}
|
|
34
|
+
/** Use this class to listen to key events on X11 */
|
|
35
|
+
class X11KeyServer {
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new key server for x11
|
|
38
|
+
* @param listener The callback to report key events to
|
|
39
|
+
* @param config Additional optional configuration for the server
|
|
40
|
+
*/
|
|
41
|
+
constructor(listener, config = {}) {
|
|
42
|
+
this.running = false;
|
|
43
|
+
this.restarting = false;
|
|
44
|
+
this.listener = listener;
|
|
45
|
+
this.config = config;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Start the Key server and listen for keypresses
|
|
49
|
+
* @param skipPerms Whether to skip attempting to add permissions
|
|
50
|
+
*/
|
|
51
|
+
start(skipPerms) {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
this.running = true;
|
|
54
|
+
const serverPath = getServerPath(this.config.serverPath);
|
|
55
|
+
this.proc = (0, node_child_process_1.execFile)(serverPath);
|
|
56
|
+
if (this.config.onInfo)
|
|
57
|
+
(_a = this.proc.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (data) => { var _a, _b; return (_b = (_a = this.config).onInfo) === null || _b === void 0 ? void 0 : _b.call(_a, data.toString()); });
|
|
58
|
+
const onError = this.config.onError;
|
|
59
|
+
if (onError)
|
|
60
|
+
this.proc.on("close", (code) => {
|
|
61
|
+
if (!this.restarting && this.running)
|
|
62
|
+
onError(code);
|
|
63
|
+
});
|
|
64
|
+
(_b = this.proc.stdout) === null || _b === void 0 ? void 0 : _b.on("data", (data) => {
|
|
65
|
+
var _a;
|
|
66
|
+
const events = this._getEventData(data);
|
|
67
|
+
for (const { event, eventId } of events) {
|
|
68
|
+
const stopPropagation = !!this.listener(event);
|
|
69
|
+
(_a = this.proc.stdin) === null || _a === void 0 ? void 0 : _a.write(`${stopPropagation ? "1" : "0"},${eventId}\n`);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return this.handleStartup(skipPerms !== null && skipPerms !== void 0 ? skipPerms : false);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Deals with the startup process of the server, possibly adding perms if required and restarting
|
|
76
|
+
* @param skipPerms Whether to skip attempting to add permissions
|
|
77
|
+
*/
|
|
78
|
+
handleStartup(skipPerms) {
|
|
79
|
+
return new Promise((res, rej) => {
|
|
80
|
+
let errored = false;
|
|
81
|
+
const serverPath = getServerPath(this.config.serverPath);
|
|
82
|
+
// If setup fails, try adding permissions
|
|
83
|
+
this.proc.on("error", async (err) => {
|
|
84
|
+
errored = true;
|
|
85
|
+
if (skipPerms) {
|
|
86
|
+
rej(err);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
try {
|
|
90
|
+
this.restarting = true;
|
|
91
|
+
this.proc.kill();
|
|
92
|
+
await this.addPerms(serverPath);
|
|
93
|
+
// If the server was stopped in between, just act as if it was started successfully
|
|
94
|
+
if (!this.running) {
|
|
95
|
+
res();
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
res(this.start(true));
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
rej(e);
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
this.restarting = false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
if ((0, utils_1.isSpawnEventSupported)())
|
|
109
|
+
this.proc.on("spawn", res);
|
|
110
|
+
// A timed fallback if the spawn event is not supported
|
|
111
|
+
else
|
|
112
|
+
setTimeout(() => {
|
|
113
|
+
if (!errored)
|
|
114
|
+
res();
|
|
115
|
+
}, 200);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Makes sure that the given path is executable
|
|
120
|
+
* @param path The path to add the perms to
|
|
121
|
+
*/
|
|
122
|
+
addPerms(path) {
|
|
123
|
+
const options = {
|
|
124
|
+
name: this.config.appName || "KeySpy",
|
|
125
|
+
};
|
|
126
|
+
return new Promise((res, err) => {
|
|
127
|
+
sudo_prompt_1.default.exec(`chmod +x "${path}"`, options, (error, _stdout, stderr) => {
|
|
128
|
+
if (error) {
|
|
129
|
+
err(error);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (stderr) {
|
|
133
|
+
err(stderr);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
res();
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/** Stop the Key server */
|
|
141
|
+
stop() {
|
|
142
|
+
var _a;
|
|
143
|
+
this.running = false;
|
|
144
|
+
(_a = this.proc.stdout) === null || _a === void 0 ? void 0 : _a.pause();
|
|
145
|
+
this.proc.kill();
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Obtains a IGlobalKeyEvent from stdout buffer data
|
|
149
|
+
* @param data Data from stdout
|
|
150
|
+
* @returns The standardized key event data
|
|
151
|
+
*/
|
|
152
|
+
_getEventData(data) {
|
|
153
|
+
const sData = data.toString();
|
|
154
|
+
const lines = sData.trim().split(/\n/);
|
|
155
|
+
return lines.map((line) => {
|
|
156
|
+
const lineData = line.replace(/\s+/, "");
|
|
157
|
+
const [mouseKeyboard, downUp, sKeyCode, sLocationX, sLocationY, eventId] = lineData.split(",");
|
|
158
|
+
const isMouse = mouseKeyboard === "MOUSE";
|
|
159
|
+
const isDown = downUp === "DOWN";
|
|
160
|
+
const keyCode = Number.parseInt(sKeyCode, 10);
|
|
161
|
+
const locationX = Number.parseFloat(sLocationX);
|
|
162
|
+
const locationY = Number.parseFloat(sLocationY);
|
|
163
|
+
const key = keymap_1.X11GlobalKeyLookup[isMouse ? 0xffff0000 + keyCode : keyCode - 8];
|
|
164
|
+
const resolvedKey = (0, utils_1.resolveUnknownKey)(key, keyCode);
|
|
165
|
+
return {
|
|
166
|
+
event: {
|
|
167
|
+
vKey: keyCode,
|
|
168
|
+
rawKey: resolvedKey,
|
|
169
|
+
name: resolvedKey.standardName,
|
|
170
|
+
state: isDown ? "DOWN" : "UP",
|
|
171
|
+
scanCode: keyCode,
|
|
172
|
+
location: [locationX, locationY],
|
|
173
|
+
_raw: sData,
|
|
174
|
+
},
|
|
175
|
+
eventId,
|
|
176
|
+
};
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.X11KeyServer = X11KeyServer;
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGxhdGZvcm1zL2xpbnV4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLDJEQUFpRTtBQUdqRSxxQ0FBOEM7QUFDOUMsMERBQTZCO0FBQzdCLHNEQUF5QjtBQUV6QixvRUFBcUM7QUFDckMsdUNBQXVFO0FBRXZFLHFFQUFxRTtBQUNyRSxNQUFNLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQztBQUNoRCxNQUFNLFdBQVcsR0FBRywrQkFBK0IsQ0FBQztBQUVwRDs7Ozs7R0FLRztBQUNILFNBQVMsYUFBYSxDQUFDLFVBQW1CLEVBQUUsV0FBbUIsU0FBUztJQUN0RSxJQUFJLFVBQVU7UUFBRSxPQUFPLFVBQVUsQ0FBQztJQUVsQyxNQUFNLGVBQWUsR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkQsTUFBTSxpQkFBaUIsR0FBRyxtQkFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFM0Qsc0NBQXNDO0lBQ3RDLElBQUksaUJBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsOEJBQThCO0lBQzlCLE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQztBQUVELG9EQUFvRDtBQUNwRCxNQUFhLFlBQVk7SUFRdkI7Ozs7T0FJRztJQUNILFlBQVksUUFBK0IsRUFBRSxTQUFxQixFQUFFO1FBUjVELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVF6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFNBQW1COztR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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keymap.d.ts","sourceRoot":"","sources":["../../../src/platforms/linux/keymap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AASrE,eAAO,MAAM,kBAAkB,EAAE,gBAuIhC,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.X11GlobalKeyLookup = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* Linux keycodes from `linux/input-event-codes.h`.[^1]
|
|
6
|
+
* X11 keycodes equal linux + 8.[^2]
|
|
7
|
+
*
|
|
8
|
+
* [^1]: https://github.com/torvalds/linux/blob/13bc32bad7059d6c5671e9d037e6e3ed001cc0f4/include/uapi/linux/input-event-codes.h#L75-L262
|
|
9
|
+
* [^2]: https://github.com/freedesktop/xorg-xf86-input-evdev/blob/469a30f158edceda99fe8a086abbeefffa010e02/src/evdev.c#L280
|
|
10
|
+
*/
|
|
11
|
+
exports.X11GlobalKeyLookup = {
|
|
12
|
+
0: { _nameRaw: "KEY_RESERVED", name: "RESERVED", standardName: "" },
|
|
13
|
+
1: { _nameRaw: "KEY_ESC", name: "ESCAPE", standardName: "ESCAPE" },
|
|
14
|
+
2: { _nameRaw: "KEY_1", name: "1", standardName: "1" },
|
|
15
|
+
3: { _nameRaw: "KEY_2", name: "2", standardName: "2" },
|
|
16
|
+
4: { _nameRaw: "KEY_3", name: "3", standardName: "3" },
|
|
17
|
+
5: { _nameRaw: "KEY_4", name: "4", standardName: "4" },
|
|
18
|
+
6: { _nameRaw: "KEY_5", name: "5", standardName: "5" },
|
|
19
|
+
7: { _nameRaw: "KEY_6", name: "6", standardName: "6" },
|
|
20
|
+
8: { _nameRaw: "KEY_7", name: "7", standardName: "7" },
|
|
21
|
+
9: { _nameRaw: "KEY_8", name: "8", standardName: "8" },
|
|
22
|
+
10: { _nameRaw: "KEY_9", name: "9", standardName: "9" },
|
|
23
|
+
11: { _nameRaw: "KEY_0", name: "0", standardName: "0" },
|
|
24
|
+
12: { _nameRaw: "KEY_MINUS", name: "MINUS", standardName: "MINUS" },
|
|
25
|
+
13: { _nameRaw: "KEY_EQUAL", name: "EQUALS", standardName: "EQUALS" },
|
|
26
|
+
14: { _nameRaw: "KEY_BACKSPACE", name: "BACKSPACE", standardName: "BACKSPACE" },
|
|
27
|
+
15: { _nameRaw: "KEY_TAB", name: "TAB", standardName: "TAB" },
|
|
28
|
+
16: { _nameRaw: "KEY_Q", name: "Q", standardName: "Q" },
|
|
29
|
+
17: { _nameRaw: "KEY_W", name: "W", standardName: "W" },
|
|
30
|
+
18: { _nameRaw: "KEY_E", name: "E", standardName: "E" },
|
|
31
|
+
19: { _nameRaw: "KEY_R", name: "R", standardName: "R" },
|
|
32
|
+
20: { _nameRaw: "KEY_T", name: "T", standardName: "T" },
|
|
33
|
+
21: { _nameRaw: "KEY_Y", name: "Y", standardName: "Y" },
|
|
34
|
+
22: { _nameRaw: "KEY_U", name: "U", standardName: "U" },
|
|
35
|
+
23: { _nameRaw: "KEY_I", name: "I", standardName: "I" },
|
|
36
|
+
24: { _nameRaw: "KEY_O", name: "O", standardName: "O" },
|
|
37
|
+
25: { _nameRaw: "KEY_P", name: "P", standardName: "P" },
|
|
38
|
+
26: { _nameRaw: "KEY_LEFTBRACE", name: "LEFTBRACE", standardName: "SQUARE BRACKET OPEN" },
|
|
39
|
+
27: { _nameRaw: "KEY_RIGHTBRACE", name: "RIGHTBRACE", standardName: "SQUARE BRACKET CLOSE" },
|
|
40
|
+
28: { _nameRaw: "KEY_ENTER", name: "ENTER", standardName: "RETURN" },
|
|
41
|
+
29: { _nameRaw: "KEY_LEFTCTRL", name: "LEFTCTRL", standardName: "LEFT CTRL" },
|
|
42
|
+
30: { _nameRaw: "KEY_A", name: "A", standardName: "A" },
|
|
43
|
+
31: { _nameRaw: "KEY_S", name: "S", standardName: "S" },
|
|
44
|
+
32: { _nameRaw: "KEY_D", name: "D", standardName: "D" },
|
|
45
|
+
33: { _nameRaw: "KEY_F", name: "F", standardName: "F" },
|
|
46
|
+
34: { _nameRaw: "KEY_G", name: "G", standardName: "G" },
|
|
47
|
+
35: { _nameRaw: "KEY_H", name: "H", standardName: "H" },
|
|
48
|
+
36: { _nameRaw: "KEY_J", name: "J", standardName: "J" },
|
|
49
|
+
37: { _nameRaw: "KEY_K", name: "K", standardName: "K" },
|
|
50
|
+
38: { _nameRaw: "KEY_L", name: "L", standardName: "L" },
|
|
51
|
+
39: { _nameRaw: "KEY_SEMICOLON", name: "SEMICOLON", standardName: "SEMICOLON" },
|
|
52
|
+
40: { _nameRaw: "KEY_APOSTROPHE", name: "APOSTROPHE", standardName: "QUOTE" },
|
|
53
|
+
41: { _nameRaw: "KEY_GRAVE", name: "GRAVE", standardName: "BACKTICK" },
|
|
54
|
+
42: { _nameRaw: "KEY_LEFTSHIFT", name: "LEFTSHIFT", standardName: "LEFT SHIFT" },
|
|
55
|
+
43: { _nameRaw: "KEY_BACKSLASH", name: "BACKSLASH", standardName: "BACKSLASH" },
|
|
56
|
+
44: { _nameRaw: "KEY_Z", name: "Z", standardName: "Z" },
|
|
57
|
+
45: { _nameRaw: "KEY_X", name: "X", standardName: "X" },
|
|
58
|
+
46: { _nameRaw: "KEY_C", name: "C", standardName: "C" },
|
|
59
|
+
47: { _nameRaw: "KEY_V", name: "V", standardName: "V" },
|
|
60
|
+
48: { _nameRaw: "KEY_B", name: "B", standardName: "B" },
|
|
61
|
+
49: { _nameRaw: "KEY_N", name: "N", standardName: "N" },
|
|
62
|
+
50: { _nameRaw: "KEY_M", name: "M", standardName: "M" },
|
|
63
|
+
51: { _nameRaw: "KEY_COMMA", name: "COMMA", standardName: "COMMA" },
|
|
64
|
+
52: { _nameRaw: "KEY_DOT", name: "DOT", standardName: "DOT" },
|
|
65
|
+
53: { _nameRaw: "KEY_SLASH", name: "SLASH", standardName: "FORWARD SLASH" },
|
|
66
|
+
54: { _nameRaw: "KEY_RIGHTSHIFT", name: "RIGHTSHIFT", standardName: "RIGHT SHIFT" },
|
|
67
|
+
55: { _nameRaw: "KEY_KPASTERISK", name: "KPASTERISK", standardName: "NUMPAD MULTIPLY" },
|
|
68
|
+
56: { _nameRaw: "KEY_LEFTALT", name: "LEFTALT", standardName: "LEFT ALT" },
|
|
69
|
+
57: { _nameRaw: "KEY_SPACE", name: "SPACE", standardName: "SPACE" },
|
|
70
|
+
58: { _nameRaw: "KEY_CAPSLOCK", name: "CAPSLOCK", standardName: "CAPS LOCK" },
|
|
71
|
+
59: { _nameRaw: "KEY_F1", name: "F1", standardName: "F1" },
|
|
72
|
+
60: { _nameRaw: "KEY_F2", name: "F2", standardName: "F2" },
|
|
73
|
+
61: { _nameRaw: "KEY_F3", name: "F3", standardName: "F3" },
|
|
74
|
+
62: { _nameRaw: "KEY_F4", name: "F4", standardName: "F4" },
|
|
75
|
+
63: { _nameRaw: "KEY_F5", name: "F5", standardName: "F5" },
|
|
76
|
+
64: { _nameRaw: "KEY_F6", name: "F6", standardName: "F6" },
|
|
77
|
+
65: { _nameRaw: "KEY_F7", name: "F7", standardName: "F7" },
|
|
78
|
+
66: { _nameRaw: "KEY_F8", name: "F8", standardName: "F8" },
|
|
79
|
+
67: { _nameRaw: "KEY_F9", name: "F9", standardName: "F9" },
|
|
80
|
+
68: { _nameRaw: "KEY_F10", name: "F10", standardName: "F10" },
|
|
81
|
+
69: { _nameRaw: "KEY_NUMLOCK", name: "NUMLOCK", standardName: "NUM LOCK" },
|
|
82
|
+
70: { _nameRaw: "KEY_SCROLLLOCK", name: "SCROLLLOCK", standardName: "SCROLL LOCK" },
|
|
83
|
+
71: { _nameRaw: "KEY_KP7", name: "KP7", standardName: "NUMPAD 7" },
|
|
84
|
+
72: { _nameRaw: "KEY_KP8", name: "KP8", standardName: "NUMPAD 8" },
|
|
85
|
+
73: { _nameRaw: "KEY_KP9", name: "KP9", standardName: "NUMPAD 9" },
|
|
86
|
+
74: { _nameRaw: "KEY_KPMINUS", name: "KPMINUS", standardName: "NUMPAD MINUS" },
|
|
87
|
+
75: { _nameRaw: "KEY_KP4", name: "KP4", standardName: "NUMPAD 4" },
|
|
88
|
+
76: { _nameRaw: "KEY_KP5", name: "KP5", standardName: "NUMPAD 5" },
|
|
89
|
+
77: { _nameRaw: "KEY_KP6", name: "KP6", standardName: "NUMPAD 6" },
|
|
90
|
+
78: { _nameRaw: "KEY_KPPLUS", name: "KPPLUS", standardName: "NUMPAD PLUS" },
|
|
91
|
+
79: { _nameRaw: "KEY_KP1", name: "KP1", standardName: "NUMPAD 1" },
|
|
92
|
+
80: { _nameRaw: "KEY_KP2", name: "KP2", standardName: "NUMPAD 2" },
|
|
93
|
+
81: { _nameRaw: "KEY_KP3", name: "KP3", standardName: "NUMPAD 3" },
|
|
94
|
+
82: { _nameRaw: "KEY_KP0", name: "KP0", standardName: "NUMPAD 0" },
|
|
95
|
+
83: { _nameRaw: "KEY_KPDOT", name: "KPDOT", standardName: "NUMPAD DOT" },
|
|
96
|
+
85: { _nameRaw: "KEY_ZENKAKUHANKAKU", name: "ZENKAKUHANKAKU", standardName: "" },
|
|
97
|
+
86: { _nameRaw: "KEY_102ND", name: "102ND", standardName: "" },
|
|
98
|
+
87: { _nameRaw: "KEY_F11", name: "F11", standardName: "F11" },
|
|
99
|
+
88: { _nameRaw: "KEY_F12", name: "F12", standardName: "F12" },
|
|
100
|
+
89: { _nameRaw: "KEY_RO", name: "RO", standardName: "" },
|
|
101
|
+
90: { _nameRaw: "KEY_KATAKANA", name: "KATAKANA", standardName: "" },
|
|
102
|
+
91: { _nameRaw: "KEY_HIRAGANA", name: "HIRAGANA", standardName: "" },
|
|
103
|
+
92: { _nameRaw: "KEY_HENKAN", name: "HENKAN", standardName: "" },
|
|
104
|
+
93: { _nameRaw: "KEY_KATAKANAHIRAGANA", name: "KATAKANAHIRAGANA", standardName: "" },
|
|
105
|
+
94: { _nameRaw: "KEY_MUHENKAN", name: "MUHENKAN", standardName: "" },
|
|
106
|
+
95: { _nameRaw: "KEY_KPJPCOMMA", name: "KPJPCOMMA", standardName: "" },
|
|
107
|
+
96: { _nameRaw: "KEY_KPENTER", name: "KPENTER", standardName: "NUMPAD RETURN" },
|
|
108
|
+
97: { _nameRaw: "KEY_RIGHTCTRL", name: "RIGHTCTRL", standardName: "RIGHT CTRL" },
|
|
109
|
+
98: { _nameRaw: "KEY_KPSLASH", name: "KPSLASH", standardName: "" },
|
|
110
|
+
99: { _nameRaw: "KEY_SYSRQ", name: "SYSRQ", standardName: "" },
|
|
111
|
+
100: { _nameRaw: "KEY_RIGHTALT", name: "RIGHTALT", standardName: "RIGHT ALT" },
|
|
112
|
+
101: { _nameRaw: "KEY_LINEFEED", name: "LINEFEED", standardName: "" },
|
|
113
|
+
102: { _nameRaw: "KEY_HOME", name: "HOME", standardName: "HOME" },
|
|
114
|
+
103: { _nameRaw: "KEY_UP", name: "UP", standardName: "UP ARROW" },
|
|
115
|
+
104: { _nameRaw: "KEY_PAGEUP", name: "PAGEUP", standardName: "PAGE UP" },
|
|
116
|
+
105: { _nameRaw: "KEY_LEFT", name: "LEFT", standardName: "LEFT ARROW" },
|
|
117
|
+
106: { _nameRaw: "KEY_RIGHT", name: "RIGHT", standardName: "RIGHT ARROW" },
|
|
118
|
+
107: { _nameRaw: "KEY_END", name: "END", standardName: "END" },
|
|
119
|
+
108: { _nameRaw: "KEY_DOWN", name: "DOWN", standardName: "DOWN ARROW" },
|
|
120
|
+
109: { _nameRaw: "KEY_PAGEDOWN", name: "PAGEDOWN", standardName: "PAGE DOWN" },
|
|
121
|
+
110: { _nameRaw: "KEY_INSERT", name: "INSERT", standardName: "INS" },
|
|
122
|
+
111: { _nameRaw: "KEY_DELETE", name: "DELETE", standardName: "DELETE" },
|
|
123
|
+
112: { _nameRaw: "KEY_MACRO", name: "MACRO", standardName: "" },
|
|
124
|
+
113: { _nameRaw: "KEY_MUTE", name: "MUTE", standardName: "" },
|
|
125
|
+
114: { _nameRaw: "KEY_VOLUMEDOWN", name: "VOLUMEDOWN", standardName: "" },
|
|
126
|
+
115: { _nameRaw: "KEY_VOLUMEUP", name: "VOLUMEUP", standardName: "" },
|
|
127
|
+
116: { _nameRaw: "KEY_POWER", name: "POWER", standardName: "" },
|
|
128
|
+
117: { _nameRaw: "KEY_KPEQUAL", name: "KPEQUAL", standardName: "NUMPAD EQUALS" },
|
|
129
|
+
118: { _nameRaw: "KEY_KPPLUSMINUS", name: "KPPLUSMINUS", standardName: "" },
|
|
130
|
+
119: { _nameRaw: "KEY_PAUSE", name: "PAUSE", standardName: "" },
|
|
131
|
+
120: { _nameRaw: "KEY_SCALE", name: "SCALE", standardName: "" },
|
|
132
|
+
121: { _nameRaw: "KEY_KPCOMMA", name: "KPCOMMA", standardName: "" },
|
|
133
|
+
122: { _nameRaw: "KEY_HANGEUL", name: "HANGEUL", standardName: "" },
|
|
134
|
+
123: { _nameRaw: "KEY_HANJA", name: "HANJA", standardName: "" },
|
|
135
|
+
124: { _nameRaw: "KEY_YEN", name: "YEN", standardName: "" },
|
|
136
|
+
125: { _nameRaw: "KEY_LEFTMETA", name: "LEFTMETA", standardName: "LEFT META" },
|
|
137
|
+
126: { _nameRaw: "KEY_RIGHTMETA", name: "RIGHTMETA", standardName: "RIGHT META" },
|
|
138
|
+
127: { _nameRaw: "KEY_COMPOSE", name: "COMPOSE", standardName: "" },
|
|
139
|
+
// Mouse button codes are artificially offset by 0xFFFF0000 in `X11KeyServer`.
|
|
140
|
+
0xffff0001: { _nameRaw: "1", name: "Button1", standardName: "MOUSE LEFT" },
|
|
141
|
+
0xffff0002: { _nameRaw: "2", name: "Button2", standardName: "MOUSE MIDDLE" },
|
|
142
|
+
0xffff0003: { _nameRaw: "3", name: "Button3", standardName: "MOUSE RIGHT" },
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5bWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsYXRmb3Jtcy9saW51eC9rZXltYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7Ozs7OztHQU1HO0FBQ1UsUUFBQSxrQkFBa0IsR0FBcUI7SUFDbEQsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7SUFDbkUsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUU7SUFDbEUsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdEQsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdEQsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdEQsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdEQsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdEQsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdEQsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdEQsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdEQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUU7SUFDbkUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUU7SUFDckUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUU7SUFDL0UsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUU7SUFDN0QsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxxQkFBcUIsRUFBRTtJQUN6RixFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUU7SUFDNUYsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUU7SUFDcEUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUU7SUFDN0UsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDdkQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUU7SUFDL0UsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRTtJQUM3RSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRTtJQUN0RSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRTtJQUNoRixFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRTtJQUMvRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRTtJQUNuRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRTtJQUM3RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRTtJQUMzRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFO0lBQ25GLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRTtJQUN2RixFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRTtJQUMxRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRTtJQUNuRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRTtJQUM3RSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUMxRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUMxRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUMxRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUMxRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUMxRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUMxRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUMxRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUMxRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRTtJQUMxRCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRTtJQUM3RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRTtJQUMxRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFO0lBQ25GLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFO0lBQzlFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFO0lBQzNFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFO0lBRXhFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtJQUNoRixFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtJQUM5RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRTtJQUM3RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRTtJQUM3RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtJQUN4RCxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtJQUNwRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtJQUNwRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtJQUNoRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7SUFDcEYsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7SUFDcEUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7SUFDdEUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUU7SUFDL0UsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUU7SUFDaEYsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7SUFDbEUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7SUFDOUQsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUU7SUFDOUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7SUFDckUsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUU7SUFDakUsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUU7SUFDakUsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUU7SUFDeEUsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUU7SUFDdkUsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUU7SUFDMUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUU7SUFDOUQsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUU7SUFDdkUsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlB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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { IGlobalKeyServer } from "
|
|
2
|
-
import type { IGlobalKeyListenerRaw } from "
|
|
3
|
-
import type { IGlobalKeyEvent } from "
|
|
4
|
-
import type { IMacConfig } from "
|
|
1
|
+
import type { IGlobalKeyServer } from "../../types/IGlobalKeyServer";
|
|
2
|
+
import type { IGlobalKeyListenerRaw } from "../../types/IGlobalKeyListenerRaw";
|
|
3
|
+
import type { IGlobalKeyEvent } from "../../types/IGlobalKeyEvent";
|
|
4
|
+
import type { IMacConfig } from "../../types/IMacConfig";
|
|
5
5
|
/** Use this class to listen to key events on Mac OS */
|
|
6
6
|
export declare class MacKeyServer implements IGlobalKeyServer {
|
|
7
7
|
protected listener: IGlobalKeyListenerRaw;
|
|
@@ -42,4 +42,4 @@ export declare class MacKeyServer implements IGlobalKeyServer {
|
|
|
42
42
|
eventId: string;
|
|
43
43
|
}[];
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=
|
|
45
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platforms/mac/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA6BzD,uDAAuD;AACvD,qBAAa,YAAa,YAAW,gBAAgB;IACnD,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;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE;CAkCrF"}
|