aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md83
1 files changed, 83 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..dba118d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,83 @@
+# 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](https://github.com/taosx/node-keylogger/) and [node-ioctl](https://github.com/santigimeno/node-ioctl).
+
+## Installation
+```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
+
+### `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:
+```js
+{
+ 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:
+```js
+{
+ timeS: 39234,
+ timeMS: 3812,
+ keyCode: 71,
+ keyId: 'KEY_KP7',
+ type: 'keypress',
+ dev: 'by-id/usb-SEM_Trust_Numpad-event-kbd'
+}
+```
+
+### Event `keydown(event)`
+```js
+{
+ 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()`