如何识别在osx上的USB设备的“path”和createReadStream从节点的数据?

我想编写一个应用程序来重新映射我在NodeJS中使用的脚踏板的按键。 我find了一个类似的脚本库。 然而,它硬编码的USBpath为Linux而不是OSX的设备。 这会引发一个错误:

failed to open file { Error: ENOENT: no such file or directory, open '/dev/usb/hiddev0' errno: -2, code: 'ENOENT', syscall: 'open', path: '/dev/usb/hiddev0' 

问:如何识别我的设备的USBpath,以便我可以从USB设备创build数据读取stream。

terminal命令:

 system_profiler SPUSBDataType 

输出:

 VEC USB Footpedal: Product ID: 0x00ff Vendor ID: 0x05f3 (PI Engineering, Inc) Version: 1.20 Speed: Up to 1.5 Mb/sec Manufacturer: VEC Location ID: 0x1d112000 / 9 Current Available (mA): 500 Current Required (mA): 100 Extra Operating Current (mA): 0 #! /usr/bin/env node 'use strict'; const fs = require('fs'); const robot = require('robotjs'); const DEFAULT_DEVICE_PATH = '/dev/usb/hiddev0'; // this path needs to change const DEFAULT_KEYS = ['a', 'b', 'c']; const RETRY_INTERVAL = 5 * 1000; const argv = require('yargs') .array('k') .alias('k', 'keys') .alias('p', 'path') .default('path', DEFAULT_DEVICE_PATH) .default('k', []) .argv; const keyMap = DEFAULT_KEYS.map((key, i) => (argv.keys[i] || key)); const state = [ false, false, false ]; function updateState(index, value) { const previousState = state[index]; const currentState = (value === 0x01); if (previousState !== currentState) { const key = keyMap[index]; robot.keyToggle(key, currentState ? 'down' : 'up'); } state[index] = currentState; } function openFile() { const stream = fs.createReadStream(argv.path); // so that I can read the stream here. const size = 8; const offset = 4; stream.on('data', function(chunk) { for (var i=0; i<chunk.length / size; i++) { updateState(i, chunk[i * size + offset]); } }); stream.on('error', function(err) { console.log('failed to open file', err); setTimeout(openFile, RETRY_INTERVAL); }); } openFile(); 

这里是一个图书馆,将给你任何HX USB设备OSX的path:

https://www.npmjs.com/package/node-hid

Interesting Posts