🚨 Not working properly on at least macOS 14.3.1.
This fork of SpaceK33z/iohook and wilix-team/iohook supports Electron 26-29 and Node 18-21.
Node.js global native keyboard and mouse listener.
This module can handle keyboard and mouse events via native hooks inside and outside your JavaScript/TypeScript application.
Found a bug? Have an idea? Feel free to post an issue or submit a PR.
Check out the documentation.
- Versions >= 0.6.0 support only officially supported platforms versions.
- Versions 0.5.X are the last to support Electron < 4.0.0
- Versions 0.4.X are the last to support for Node < 8.0 and Electron < 2.0.0
iohook provides prebuilt version for a bunch of OSes and platforms.
# On Linux (including WSL) platform, you will need libxkbcommon-x11 installed
sudo apt-get install -y libxkbcommon-x11-0
npm install iohook --save # or yarn add iohook
Q. Does this module require Java ?
A. No, this module doesn't require Java (like jnativehook) or any other runtimes.
Q. Is iohook compatible with Node/Electron version X.Y.Z ?
A. We try to match the currently supported version of both Node and Electron.
Are you using iohook in your project ? Please tell us in a PR so we an add it to the list !
Thanks to kwhat for the libuiohook project and ayoubserti for the first iohook prototype.
- vespakoen (prebuild system implementation)
- matthewshirley (Windows prebuild fix)
- djiit (project & community help)
- ezain (add feature enable/disable mouse click propagation)
- anoadragon453 (electron 4+ support)
- ykhwong (node-gyp usage, electron 9+ support)
- All the other contributors. Feel free to extend this list !