Skip to content

imyelo/hid-scanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HID Scanner

🔦 Node.js Library for HID Code Scanner

Installation

# install as a cli
npm i @yelo/hid-scanner --build-from-source --driver=libusb -g
# or install as a dependency
npm i @yelo/hid-scanner --build-from-source --driver=libusb --save

Usage

CLI Usage

Basic

  1. Execute:

    hid-scanner
  2. Scan QRCode with your scanner!

List devices

hid-scanner --devices

Use another hid device (with other product name)

hid-scanner <product-name>

e.g.:

hid-scanner "MY SUPERB HID PRODUCT"

More information

hid-scanner --help

Library Usage

const { Scanner } = require('@yelo/hid-scanner')
const scanner = new Scanner('SM-2D PRODUCT HID KBW')
/**
 * or:
 *    const scanner = new Scanner(Scanner.devices()[0])
 */

let string = ''
scanner.on('key', (event) => {
  const { name, char } = event
  if (!char) {
    console.log(`Press: ${name}`)
    return
  }
  if (char === '\n') {
    console.info(`Input: ${string}`)
    string = ''
    return
  }
  string += char
})

Key Event Struct

  • name, the key name
  • char, the character to be typed in
  • raw, the raw HID Usage ID (HEX)

Development

Local installation for Linux

  1. libsub is required

    sudo apt install libusb-1.0-0 libusb-1.0-0-dev

    see https://github.com/node-hid/node-hid/#compiling-from-source

  2. Build from source

    npm install --build-from-source --driver=libusb
  3. Link to global

    npm link

Testing

npm test

Generate HEX fixture for testing

./test/helpers/generate-hex.js <product-name>

e.g.:

./test/helpers/generate-hex.js > ./test/fixtures/0.hex.txt

Keymap

The keymap file is automatically generated with: https://source.android.com/devices/input/keyboard-devices.html#hid-keyboard-and-keypad-page-0x07

Generate keymap

npm run generate-keymap

or see all commands by executing:

./scripts/keymap-generator.js --help

References

License

MIT © yelo, 2019 - present