🔦 Node.js Library for HID Code Scanner
# 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
-
Execute:
hid-scanner
-
Scan QRCode with your scanner!
hid-scanner --devices
hid-scanner <product-name>
e.g.:
hid-scanner "MY SUPERB HID PRODUCT"
hid-scanner --help
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
})
- name, the key name
- char, the character to be typed in
- raw, the raw HID Usage ID (HEX)
-
libsub
is requiredsudo apt install libusb-1.0-0 libusb-1.0-0-dev
see https://github.com/node-hid/node-hid/#compiling-from-source
-
Build from source
npm install --build-from-source --driver=libusb
-
Link to global
npm link
npm test
./test/helpers/generate-hex.js <product-name>
e.g.:
./test/helpers/generate-hex.js > ./test/fixtures/0.hex.txt
The keymap file is automatically generated with: https://source.android.com/devices/input/keyboard-devices.html#hid-keyboard-and-keypad-page-0x07
npm run generate-keymap
or see all commands by executing:
./scripts/keymap-generator.js --help
- https://gist.github.com/MightyPork/6da26e382a7ad91b5496ee55fdc73db2
- https://source.android.com/devices/input/keyboard-devices.html
- node-hid/node-hid#228
- https://www.usb.org/document-library/hid-usage-tables-112
MIT © yelo, 2019 - present