Keylogger for NodeJS and Linux that grabs the input device exclusively
npm install exclusive-keyboardUseful for capturing USB input devices that act like keyboards, so that their inputs do no pollute other processes like terminals.
Based on node-keylogger and node-ioctl.
bash
npm install --save exclusive-keyboard
`Usage
Set access control right to device for user
username:
`bash
sudo setfacl -m u:username:r /dev/input/by-id/usb-Logitech_Logitech_USB_Keyboard-event-kbd
``js
const ExclusiveKeyboard = require('exclusive-keyboard');const keyboard = new ExclusiveKeyboard('by-id/usb-Logitech_Logitech_USB_Keyboard-event-kbd', true);
keyboard.on('keyup', console.log);
keyboard.on('keydown', console.log);
keyboard.on('keypress', console.log);
keyboard.on('close', console.log);
keyboard.on('error', console.error);
`API
$3
* dev (string): Device name (part after '/dev/input/'). Example: 'event0' would use '/dev/input/event0'
* exclusive (boolean): If true, grab device exclusively using ioctl EVIOCGRAB (default: true)$3
Releases the grabbed device and closes the file descriptor. Emits 'close' event when done.$3
Mapping of key codes to key ids, see keycodes.js.$3
Example event:
`js
{
timeS: 39234,
timeMS: 3812,
keyCode: 71,
keyId: 'KEY_KP7',
type: 'keyup',
dev: 'by-id/usb-SEM_Trust_Numpad-event-kbd'
}
`$3
Example event:
`js
{
timeS: 39234,
timeMS: 3812,
keyCode: 71,
keyId: 'KEY_KP7',
type: 'keypress',
dev: 'by-id/usb-SEM_Trust_Numpad-event-kbd'
}
`$3
`js
{
timeS: 39234,
timeMS: 3812,
keyCode: 71,
keyId: 'KEY_KP7',
type: 'keydown',
dev: 'by-id/usb-SEM_Trust_Numpad-event-kbd'
}
``