fix: patch uiohook-napi to use listen-only CGEventTap on macOS

Fixes system-wide freeze when Accessibility permissions are enabled.
Two changes to libuiohook/src/darwin/input_hook.c via pnpm patch:
- Switch kCGEventTapOptionDefault to kCGEventTapOptionListenOnly
- Strip mouse move/drag/scroll/left/right-click events from mask

Listen-only taps are passive observers that cannot freeze the system.
Keeps keyboard events and mouse buttons 3+ for PTT side buttons.
Windows and Linux native paths are completely untouched.
This commit is contained in:
Jannis Braun
2026-03-22 23:40:37 +01:00
parent 313ff4ef87
commit 46126d671f
3 changed files with 116 additions and 3 deletions
+63 -2
View File
@@ -4,6 +4,11 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
patchedDependencies:
uiohook-napi@1.5.5:
hash: 58cc6a1bd7f69277c47fa5fb1d8342d52acc5a48c420c0e5854857ee6e783d51
path: patches/uiohook-napi@1.5.5.patch
importers:
.: {}
@@ -15,8 +20,11 @@ importers:
version: 6.8.3
uiohook-napi:
specifier: ^1.5.5
version: 1.5.5
version: 1.5.5(patch_hash=58cc6a1bd7f69277c47fa5fb1d8342d52acc5a48c420c0e5854857ee6e783d51)
devDependencies:
'@electron/rebuild':
specifier: ^3.7.1
version: 3.7.2
electron:
specifier: ^40.0.0
version: 40.8.2
@@ -788,6 +796,12 @@ packages:
resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==}
engines: {node: '>=12'}
'@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2':
resolution: {tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2}
version: 10.2.0-electron.1
engines: {node: '>=12.13.0'}
hasBin: true
'@electron/notarize@2.5.0':
resolution: {integrity: sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==}
engines: {node: '>= 10.0.0'}
@@ -802,6 +816,11 @@ packages:
engines: {node: '>=12.13.0'}
hasBin: true
'@electron/rebuild@3.7.2':
resolution: {integrity: sha512-19/KbIR/DAxbsCkiaGMXIdPnMCJLkcf8AvGnduJtWBs/CBwiAjY1apCqOLVxrXg+rtXFCngbXhBanWjxLUt1Mg==}
engines: {node: '>=12.13.0'}
hasBin: true
'@electron/universal@2.0.1':
resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==}
engines: {node: '>=16.4'}
@@ -4290,6 +4309,10 @@ packages:
peerDependencies:
react: '>=16.0.0'
proc-log@2.0.1:
resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
@@ -6143,6 +6166,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2':
dependencies:
env-paths: 2.2.1
exponential-backoff: 3.1.3
glob: 8.1.0
graceful-fs: 4.2.11
make-fetch-happen: 10.2.1
nopt: 6.0.0
proc-log: 2.0.1
semver: 7.7.4
tar: 6.2.1
which: 2.0.2
transitivePeerDependencies:
- bluebird
- supports-color
'@electron/notarize@2.5.0':
dependencies:
debug: 4.4.3
@@ -6182,6 +6221,26 @@ snapshots:
- bluebird
- supports-color
'@electron/rebuild@3.7.2':
dependencies:
'@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2
'@malept/cross-spawn-promise': 2.0.0
chalk: 4.1.2
debug: 4.4.3
detect-libc: 2.1.2
fs-extra: 10.1.0
got: 11.8.6
node-abi: 3.87.0
node-api-version: 0.2.1
ora: 5.4.1
read-binary-file-arch: 1.0.6
semver: 7.7.4
tar: 6.2.1
yargs: 17.7.2
transitivePeerDependencies:
- bluebird
- supports-color
'@electron/universal@2.0.1':
dependencies:
'@electron/asar': 3.4.1
@@ -9856,6 +9915,8 @@ snapshots:
clsx: 2.1.1
react: 18.3.1
proc-log@2.0.1: {}
process-nextick-args@2.0.1: {}
process-warning@3.0.0: {}
@@ -10730,7 +10791,7 @@ snapshots:
typescript@5.9.3: {}
uiohook-napi@1.5.5:
uiohook-napi@1.5.5(patch_hash=58cc6a1bd7f69277c47fa5fb1d8342d52acc5a48c420c0e5854857ee6e783d51):
dependencies:
node-gyp-build: 4.8.4