Wondering what’s next for npm?Check out our public roadmap! »

    node-hid-stream

    1.1.0 • Public • Published

    npm version Build Status

    NODE HID STREAM

    Stream data from HID device in Node.js

    Wraps node-hid in a node.js Stream.

    HID devices, specifically, keyboard-like devices.

    Available Streams are:

    • Hidstream: Stream data from node-hid.
    • Keyboard: Stream for keyboard-like devices.
    • KeyboardCharacters: for keyboard-like devices that streams characters.
    • KeyboardLines: for keyboard-like devices stream lines split on ENTER. Can be used to read from barcode scanners.

    keyboard-like = (keyboards or barcode scanners)

    Installation

    You have to make sure you can install node-hid before you install this module.

    npm install node-hid-stream

    Usage

    Hidstream

    var Hidstream = require('node-hid-stream').Hidstream;
    var hidstream = new Hidstream({ vendorId: 3233, productId: 3233 });
     
    hidstream.on("data", function(data) {
      console.log(data); // Raw buffer from HDI device.
    });

    KeyboardLines

    var KeyboardLines = require('node-hid-stream').KeyboardLines;
    var lines = new KeyboardLines({ vendorId: 3233, productId: 3233 });
     
    lines.on("data", function(data) {
      // The user has pressed w, a, s & d, ENTER (simultaneously (why? I don't know))
      console.log(data); //  "wasd"
    });

    KeyboardCharacters

    var KeyboardCharacters = require('node-hid-stream').KeyboardCharacters;
    var characters = new KeyboardCharacters({ vendorId: 3233, productId: 3233 });
     
    characters.on("data", function(data) {
      // The user has pressed w, a, s & d (simultaneously (why? I don't know))
      console.log(data); //  "wasd"
    });

    Keyboard

    var Keyboard = require('node-hid-stream').Keyboard;
    var keyboard = new Keyboard({ vendorId: 3233, productId: 3233 });
     
    keyboard.on("data", function(data) {
      console.log(data); // easily consumed data format!
    });

    Sample Data Event from Keyboard stream:

    The user has pressed Ctrl + Alt + Del

    {  // HidKeyboardPacket
      modifiers: {
        leftShift: false,
        leftControl: true,
        leftAlt: true,
        leftMeta: false,
        rightCtrl: false,
        rightShift: false,
        rightAlt: false,
        rightMeta: false
      },
      keyCodes: [ 76 ],
      keyChars: [],
      errorStatus: false
    }

    The user has pressed w, a, s & d (simultaneously (why? I don't know))

    {  // HidKeyboardPacket
      modifiers: {
        leftShift: false,
        leftControl: false,
        leftAlt: false,
        leftMeta: false,
        rightCtrl: false,
        rightShift: false,
        rightAlt: false,
        rightMeta: false
      },
      keyCodes: [ 26, 4, 22, 7 ],
      charCodes: [ 'w', 'a', 's', 'd' ],
      errorStatus: false
    }

    HidKeyboardPacket

    HidKeyboardPacket has additional convenience methods

    • shift() returns true if left or right shift key is pressed.
    • control() returns true if left or right control key is pressed.
    • alt() returns true if left or right alt key is pressed.
    • meta() returns true if left or right meta key is pressed.
    • mod() returns true returns true if any of the modifier keys is pressed.
    • empty() returns true if no key or modifier is pressed.

    Contributions

    This is based on hidstream from Emily Rose

    Significant refactor contributed by @kubat

    Install

    npm i node-hid-stream

    DownloadsWeekly Downloads

    45

    Version

    1.1.0

    License

    MIT

    Unpacked Size

    52.2 kB

    Total Files

    39

    Last publish

    Collaborators

    • avatar