keyspy 1.0.5 → 1.0.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.
- package/README.md +18 -29
- package/build/ts/MacKeyServer.js +2 -2
- package/build/ts/X11KeyServer.js +2 -2
- package/package.json +43 -43
package/README.md
CHANGED
@@ -4,15 +4,31 @@
|
|
4
4
|
|
5
5
|
keyspy is a modern, lightweight library that provides global keyboard and mouse event monitoring across Windows, macOS, and Linux. Unlike other solutions, keyspy uses pre-compiled native binaries and a multi-process architecture for maximum stability and compatibility.
|
6
6
|
|
7
|
-
##
|
7
|
+
## 🤔 Why keyspy?
|
8
|
+
|
9
|
+
Choosing the right keyboard listener for your Node.js project can be challenging. Here's how keyspy compares to other popular solutions:
|
10
|
+
|
11
|
+
| Feature | Electron globalShortcut | IOHook | **keyspy** |
|
12
|
+
|---------|-------------------------|---------|------------|
|
13
|
+
| **Zero compilation** | ❌ Electron required | ❌ node-gyp required | ✅ Pre-compiled binaries |
|
14
|
+
| **Package size** | 🟡 Large (Electron) | 🟡 Medium | ✅ Small (on-demand download) |
|
15
|
+
| **System shortcuts** | ✅ Yes | ✅ Yes | ✅ Yes |
|
16
|
+
| **Event blocking** | ✅ Yes | ✅ Yes | ✅ Yes |
|
17
|
+
| **Cross-platform** | ✅ Yes | ✅ Yes | ✅ Yes |
|
18
|
+
| **TypeScript** | ✅ Built-in | 🟡 Community types | ✅ Built-in |
|
19
|
+
| **Stability** | ✅ Very stable | 🟡 Can crash Node.js | ✅ Multi-process isolation |
|
8
20
|
|
9
|
-
|
21
|
+
### 🎯 **keyspy Advantages**
|
10
22
|
|
11
23
|
- **🚀 Zero Setup**: Pre-compiled binaries downloaded automatically, no compilation required
|
12
24
|
- **📦 Smaller Package**: Binaries downloaded on-demand (not bundled), reducing package size by ~90%
|
13
25
|
- **📱 Universal macOS**: ARM64 + x86_64 universal binaries for all Apple Silicon and Intel Macs
|
14
26
|
- **🔄 Modern Stack**: TypeScript, automated testing, and modern development tools
|
15
27
|
- **🏗️ Automated Releases**: GitHub Actions handle cross-platform compilation and publishing
|
28
|
+
- **🛡️ Stable Architecture**: Multi-process design prevents Node.js crashes
|
29
|
+
- **⚡ High Performance**: Optimized native implementations for each platform
|
30
|
+
|
31
|
+
> **📚 Project Origin**: keyspy is a modernized version of [node-global-key-listener](https://github.com/LaunchMenu/node-global-key-listener), rebuilt with modern tooling and enhanced features.
|
16
32
|
|
17
33
|
## ✨ Features
|
18
34
|
|
@@ -119,34 +135,7 @@ yarn add keyspy
|
|
119
135
|
|
120
136
|
The package automatically detects your platform and downloads the appropriate pre-compiled binary during installation. No compilation required!
|
121
137
|
|
122
|
-
## 🤔 Why keyspy?
|
123
|
-
|
124
|
-
Choosing the right keyboard listener for your Node.js project can be challenging. Here's how keyspy compares to other popular solutions:
|
125
|
-
|
126
|
-
| Feature | Electron globalShortcut | IOHook | **keyspy** |
|
127
|
-
|---------|------------------------|--------|------------|
|
128
|
-
| **Setup Complexity** | Simple | Complex (node-gyp) | **Simple** |
|
129
|
-
| **System Shortcuts** | ❌ Limited | ✅ Full | **✅ Full** |
|
130
|
-
| **Event Blocking** | ❌ No | ✅ Yes | **✅ Yes** |
|
131
|
-
| **Node.js Compatibility** | ❌ Electron only | ⚠️ Version dependent | **✅ All versions** |
|
132
|
-
| **Compilation Required** | ❌ No | ❌ Yes | **✅ No** |
|
133
|
-
| **Arbitrary Key Support** | ❌ Limited | ⚠️ Limited | **✅ Full** |
|
134
|
-
| **Process Architecture** | In-process | In-process | **Multi-process** |
|
135
|
-
|
136
|
-
### 🎯 **keyspy Advantages**
|
137
|
-
|
138
|
-
- **🔧 Zero Setup**: Pre-compiled binaries work out of the box
|
139
|
-
- **🌐 Universal**: Compatible with all Node.js versions (14+)
|
140
|
-
- **🔒 System-Level**: Capture any key combination, including OS shortcuts
|
141
|
-
- **🛡️ Stable**: Multi-process architecture prevents crashes
|
142
|
-
- **📝 TypeScript**: Full type definitions included
|
143
|
-
- **🎮 Flexible**: Listen to individual keys or complex combinations
|
144
|
-
|
145
|
-
### ⚠️ **Considerations**
|
146
138
|
|
147
|
-
- **Permissions**: macOS requires Accessibility permissions
|
148
|
-
- **Antivirus**: Some antivirus software may flag the native binaries
|
149
|
-
- **Performance**: Small overhead due to inter-process communication
|
150
139
|
|
151
140
|
## 🛠️ Development
|
152
141
|
|
package/build/ts/MacKeyServer.js
CHANGED
@@ -7,7 +7,7 @@ exports.MacKeyServer = void 0;
|
|
7
7
|
const node_child_process_1 = require("node:child_process");
|
8
8
|
const MacGlobalKeyLookup_1 = require("./_data/MacGlobalKeyLookup");
|
9
9
|
const node_path_1 = __importDefault(require("node:path"));
|
10
|
-
const sudo_prompt_1 = __importDefault(require("sudo-prompt"));
|
10
|
+
const sudo_prompt_1 = __importDefault(require("@expo/sudo-prompt"));
|
11
11
|
const isSpawnEventSupported_1 = require("./isSpawnEventSupported");
|
12
12
|
const sPath = "../../bin/MacKeyServer";
|
13
13
|
/** Use this class to listen to key events on Mac OS */
|
@@ -156,4 +156,4 @@ class MacKeyServer {
|
|
156
156
|
}
|
157
157
|
}
|
158
158
|
exports.MacKeyServer = MacKeyServer;
|
159
|
-
//# sourceMappingURL=data:application/json;base64,
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFjS2V5U2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RzL01hY0tleVNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSwyREFBaUU7QUFHakUsbUVBQWdFO0FBQ2hFLDBEQUE2QjtBQUU3QixvRUFBcUM7QUFDckMsbUVBQWdFO0FBQ2hFLE1BQU0sS0FBSyxHQUFHLHdCQUF3QixDQUFDO0FBRXZDLHVEQUF1RDtBQUN2RCxNQUFhLFlBQVk7SUFRdkI7Ozs7T0FJRztJQUNILFlBQVksUUFBK0IsRUFBRSxTQUFxQixFQUFFO1FBUjVELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVF6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFNBQW1COztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxtQkFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFBLDZCQUFRLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDcEIsTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sMENBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLGVBQUMsT0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sRUFBQyxNQUFNLG1EQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBLEVBQUEsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FB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
|
package/build/ts/X11KeyServer.js
CHANGED
@@ -7,7 +7,7 @@ exports.X11KeyServer = void 0;
|
|
7
7
|
const node_child_process_1 = require("node:child_process");
|
8
8
|
const X11GlobalKeyLookup_1 = require("./_data/X11GlobalKeyLookup");
|
9
9
|
const node_path_1 = __importDefault(require("node:path"));
|
10
|
-
const sudo_prompt_1 = __importDefault(require("sudo-prompt"));
|
10
|
+
const sudo_prompt_1 = __importDefault(require("@expo/sudo-prompt"));
|
11
11
|
const isSpawnEventSupported_1 = require("./isSpawnEventSupported");
|
12
12
|
const sPath = "../../bin/X11KeyServer";
|
13
13
|
/** Use this class to listen to key events on X11 */
|
@@ -156,4 +156,4 @@ class X11KeyServer {
|
|
156
156
|
}
|
157
157
|
}
|
158
158
|
exports.X11KeyServer = X11KeyServer;
|
159
|
-
//# sourceMappingURL=data:application/json;base64,
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWDExS2V5U2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RzL1gxMUtleVNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSwyREFBaUU7QUFHakUsbUVBQWdFO0FBQ2hFLDBEQUE2QjtBQUU3QixvRUFBcUM7QUFDckMsbUVBQWdFO0FBQ2hFLE1BQU0sS0FBSyxHQUFHLHdCQUF3QixDQUFDO0FBRXZDLG9EQUFvRDtBQUNwRCxNQUFhLFlBQVk7SUFRdkI7Ozs7T0FJRztJQUNILFlBQVksUUFBK0IsRUFBRSxTQUFxQixFQUFFO1FBUjVELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVF6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFNBQW1COztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxtQkFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFBLDZCQUFRLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDcEIsTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sMENBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLGVBQUMsT0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sRUFBQyxNQUFNLG1EQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBLEVBQUEsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FB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
|
package/package.json
CHANGED
@@ -1,81 +1,81 @@
|
|
1
1
|
{
|
2
2
|
"name": "keyspy",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.7",
|
4
4
|
"description": "A cross-platform global keyboard and mouse listener for Node.js",
|
5
|
-
"types": "build/index.d.ts",
|
6
5
|
"main": "build/index.js",
|
6
|
+
"types": "build/index.d.ts",
|
7
7
|
"files": [
|
8
8
|
"build/**/*",
|
9
9
|
"scripts/download-binaries.js",
|
10
10
|
"README.md",
|
11
11
|
"LICENSE"
|
12
12
|
],
|
13
|
-
"engines": {
|
14
|
-
"node": ">=14.0.0"
|
15
|
-
},
|
16
13
|
"scripts": {
|
17
|
-
"dev": "tsc --watch",
|
18
14
|
"build": "tsc",
|
19
|
-
"postinstall": "node scripts/download-binaries.js",
|
20
15
|
"build:native": "node scripts/build-native.js",
|
21
|
-
"
|
22
|
-
"
|
23
|
-
"test:integration": "jest tests/integration",
|
24
|
-
"test:coverage": "jest --coverage",
|
25
|
-
"test:watch": "jest --watch",
|
26
|
-
"test:manual": "npx ts-node examples/manual-test.ts",
|
27
|
-
"lint": "biome lint .",
|
28
|
-
"lint:fix": "biome lint --write .",
|
16
|
+
"clean": "rm -rf build dist coverage test-results .turbo",
|
17
|
+
"dev": "tsc --watch",
|
29
18
|
"format": "biome format --write .",
|
30
19
|
"format:check": "biome format .",
|
31
|
-
"
|
20
|
+
"lint": "biome lint .",
|
21
|
+
"lint:fix": "biome lint --write .",
|
22
|
+
"postinstall": "node scripts/download-binaries.js",
|
32
23
|
"prepare": "npm run build",
|
33
24
|
"prepublishOnly": "npm run build && npm run test",
|
34
25
|
"release": "release-it",
|
35
26
|
"release:dry": "release-it --dry-run",
|
36
|
-
"release:
|
27
|
+
"release:major": "release-it major",
|
37
28
|
"release:minor": "release-it minor",
|
38
|
-
"release:
|
29
|
+
"release:patch": "release-it patch",
|
30
|
+
"test": "jest",
|
31
|
+
"test:coverage": "jest --coverage",
|
32
|
+
"test:integration": "jest tests/integration",
|
33
|
+
"test:manual": "npx ts-node examples/manual-test.ts",
|
34
|
+
"test:unit": "jest tests/unit",
|
35
|
+
"test:watch": "jest --watch"
|
39
36
|
},
|
40
|
-
"
|
41
|
-
"
|
42
|
-
|
37
|
+
"dependencies": {
|
38
|
+
"@expo/sudo-prompt": "^9.3.2"
|
39
|
+
},
|
40
|
+
"devDependencies": {
|
41
|
+
"@biomejs/biome": "^1.9.4",
|
42
|
+
"@release-it/conventional-changelog": "^10.0.1",
|
43
|
+
"@types/jest": "^29.5.14",
|
44
|
+
"@types/node": "^22.15.30",
|
45
|
+
"jest": "^29.7.0",
|
46
|
+
"jest-junit": "^16.0.0",
|
47
|
+
"release-it": "^19.0.3",
|
48
|
+
"ts-jest": "^29.3.4",
|
49
|
+
"ts-node": "^10.9.2",
|
50
|
+
"turbo": "^2.5.4",
|
51
|
+
"typescript": "^5.8.3"
|
43
52
|
},
|
44
53
|
"keywords": [
|
45
|
-
"
|
46
|
-
"listener",
|
54
|
+
"cross-platform",
|
47
55
|
"global",
|
48
|
-
"
|
56
|
+
"hook",
|
57
|
+
"key",
|
49
58
|
"keyboard",
|
59
|
+
"listener",
|
60
|
+
"monitor",
|
50
61
|
"mouse",
|
51
|
-
"
|
52
|
-
"
|
53
|
-
"spy",
|
54
|
-
"monitor"
|
62
|
+
"node",
|
63
|
+
"spy"
|
55
64
|
],
|
56
65
|
"author": "teomyth",
|
57
66
|
"license": "MIT",
|
67
|
+
"repository": {
|
68
|
+
"type": "git",
|
69
|
+
"url": "git+https://github.com/teomyth/keyspy.git"
|
70
|
+
},
|
58
71
|
"bugs": {
|
59
72
|
"url": "https://github.com/teomyth/keyspy/issues"
|
60
73
|
},
|
61
74
|
"homepage": "https://github.com/teomyth/keyspy#readme",
|
62
|
-
"
|
63
|
-
"
|
64
|
-
"@release-it/conventional-changelog": "^8.0.2",
|
65
|
-
"@types/jest": "^29.5.0",
|
66
|
-
"@types/node": "^20.0.0",
|
67
|
-
"jest": "^29.7.0",
|
68
|
-
"jest-junit": "^16.0.0",
|
69
|
-
"release-it": "^17.8.2",
|
70
|
-
"ts-jest": "^29.2.0",
|
71
|
-
"ts-node": "^10.9.2",
|
72
|
-
"turbo": "^2.3.0",
|
73
|
-
"typescript": "^5.6.3"
|
75
|
+
"engines": {
|
76
|
+
"node": ">=18.0.0"
|
74
77
|
},
|
75
78
|
"publishConfig": {
|
76
79
|
"access": "public"
|
77
|
-
},
|
78
|
-
"dependencies": {
|
79
|
-
"sudo-prompt": "github:ElBonds/sudo-prompt"
|
80
80
|
}
|
81
81
|
}
|