Skip to content

Keylogger for NodeJS and Linux that grabs the input device exclusively using ioctl EVIOCGRAB.

License

Notifications You must be signed in to change notification settings

pfirpfel/node-exclusive-keyboard

Repository files navigation

node-exclusive-keyboard

Keylogger for NodeJS and Linux that grabs the input device exclusively.

Useful 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.

Installation

npm install --save exclusive-keyboard

Usage

Set access control right to device for user username:

sudo setfacl -m u:username:r /dev/input/by-id/usb-Logitech_Logitech_USB_Keyboard-event-kbd
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

new ExclusiveKeyboard(dev, exclusive)

  • 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)

close()

Releases the grabbed device and closes the file descriptor. Emits 'close' event when done.

ExclusiveKeyboard.Keys

Mapping of key codes to key ids, see keycodes.js.

Event keyup(event)

Example event:

{
  timeS: 39234,
  timeMS: 3812,
  keyCode: 71,
  keyId: 'KEY_KP7',
  type: 'keyup',
  dev: 'by-id/usb-SEM_Trust_Numpad-event-kbd'
}

Event keypress(event)

Example event:

{
  timeS: 39234,
  timeMS: 3812,
  keyCode: 71,
  keyId: 'KEY_KP7',
  type: 'keypress',
  dev: 'by-id/usb-SEM_Trust_Numpad-event-kbd'
}

Event keydown(event)

{
  timeS: 39234,
  timeMS: 3812,
  keyCode: 71,
  keyId: 'KEY_KP7',
  type: 'keydown',
  dev: 'by-id/usb-SEM_Trust_Numpad-event-kbd'
}

Event error(error)

Event close()

Contributors

Thank you to the following contributors:

About

Keylogger for NodeJS and Linux that grabs the input device exclusively using ioctl EVIOCGRAB.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published