Node.js global keyboard and mouse hook
npm install @akostiv/iohook

If you like this module or are interested in updates, follow me on Twitter https://twitter.com/wilixlead
npm i git+https://github.com:renjfk/iohook.git
json
"iohook": {
"targets": [
"node-51",
"electron-53"
],
"platforms": [
"win32",
"darwin",
"linux"
],
"arches": [
"x64",
"ia32"
]
}
`
NOTE: Please remember, when you install iohook, it try to use current node environment NOT ELECTRON OR NW.js$3
iohook support prebuilded binaries for next environment versions:
- electron:
- [47] 1.0.2
- [48] 1.2.8
- [49] 1.3.13
- [50] 1.4.15
- [51] 1.5.0
- [53] 1.6.0- node:
- [46] 4.6.1
- [47] 5.12.0
- [48] 6.9.4
- [51] 7.4.0
Support for node.js v0.12, io.js, nw.js is planed.
Manual compilation for your version of environment
iohook have prebuild binaries, it downloads when you try to install it.
But if you use specified version of node.js/nw.js/io.js/electron/etc. you can try compile it.
All what you need install os dependencies and start compilation:$3
- sudo apt install libx11-dev libxtst-dev libxt-dev libx11-xcb-dev
- sudo apt install libxkbcommon-dev libxkbcommon-x11-dev
- cd node_modules/iohook
- npm run build$3
- brew install cmake automake libtool pkg-config
- cd node_modules/iohook
- npm run build$3
- for Node.js usage just make sure that you have installed following components and it will be built by install script
- 
- 
- CMake.js
- for Electron go to installation dir (node_modules/iohook) and recompile it according to your Electron version. e.g. cmake-js rebuild -r electron -v 1.7.1Usage
Module is pretty simple for use. There is example: `javascript
'use strict';
const ioHook = require('iohook');ioHook.on("mousemove", event => {
console.log(event);
/* You get object like this
{
type: 'mousemove',
x: 700,
y: 400
}
*/
});
//Register and start hook
ioHook.start();
`
If type `ioHook.start(true);` you can enable debug logger in native lib. Use it if you have troubles with this module
$3
$3
Calls when user press and release a key. Event contain next object:
{keychar: 'f', keycode: 19, rawcode: 15, type: 'keypress'}$3
Calls when user press a key. Event contain next object:
{ keychar: 'd', keycode: 46, rawcode: 8, type: 'keydown' }$3
Calls when user release a key. Event contain next object:
{keychar: 'f', keycode: 19, rawcode: 15, type: 'keup'}$3
Calls when user click mouse button. Event contain next object:
{ button: 1, clicks: 1, x: 545, y: 696, type: 'mouseclick' }$3
Calls when user press and release a key. Event contain next object:
{ button: 1, clicks: 1, x: 545, y: 696, type: 'mousedown' }$3
Calls when user press and release a key. Event contain next object:
{ button: 1, clicks: 1, x: 545, y: 696, type: 'mouseup' }$3
Calls when user press and release a key. Event contain next object:
{ button: 0, clicks: 0, x: 521, y: 737, type: 'mousemove' }$3
Calls when user press and release a key. Event contain next object:
{ button: 0, clicks: 0, x: 373, y: 683, type: 'mousedrag' }$3
Calls when user press and release a key. Event contain next object:
{ amount: 3, clicks: 1, direction: 3, rotation: 1, type: 'mousewheel', x: 466, y: 683 }`