Linux 截取输入设备发送的数据

Linux 截取输入设备发送的数据,linux,node.js,bash,stream,usb,Linux,Node.js,Bash,Stream,Usb,我正在尝试记录任何输入数据,这些数据来自通过usb连接到计算机的钢琴 $ lsusb ... Bus 003 Device 046: ID fc08:0101 .... 总线003设备046:ID fc08:0101是我的钢琴 如果我做了$cat/dev/bus/usb/003/046我会得到一些奇怪的东西: �P e�2 $ $A$$ $ $ �% % 此外,我还编写了一个小NodeJS脚本,它应该创建一个读取流和日志数据: var Fs = require("fs"

我正在尝试记录任何输入数据,这些数据来自通过usb连接到计算机的钢琴

$ lsusb
... 
Bus 003 Device 046: ID fc08:0101  
....
总线003设备046:ID fc08:0101
是我的钢琴

如果我做了
$cat/dev/bus/usb/003/046
我会得到一些奇怪的东西:

�P   e�2   $   $A$$ $ $ �%   %
此外,我还编写了一个小NodeJS脚本,它应该创建一个读取流和日志数据:

var Fs = require("fs");

var str = Fs.createReadStream("/dev/bus/usb/003/046");
str.on("data", function (chunk) {
    console.log("data: " + chunk.toString());
});

str.on("error", function (chunk) {
    console.log("error" + chunk.toString());
});

str.on("end", function (chunk) {
    console.log("ended");
});
输出:

$ node read.js 
data: �P e�2   $   $A$$ $ $ �%   %
ended
这条河为什么要结束?如何捕获来自钢琴的数据

可以解析数据并记录我按下的钢琴键吗


我正在运行Ubuntu 14.04。

试试
/dev/input/by id/[你的钢琴]


例如,我的鼠标位于
/dev/input/by id/usb-Microsoft\u-Microsoft\u-5-Button\u mouse\u with\u-IntelliEye\u TM\u-事件鼠标

我建议您使用
perl
。阅读下一个模块描述Device::USB(),您将获得脚本语言的完整
libusb
库。IMHO-handy.@jm666你能用一个例子来添加答案吗?我认为
/dev/bus/usb/003/046
不是一个字符设备,你可以在其中
cat
无休止地读取输入。@konsolebox但是字符设备是什么?这是我第一次尝试这样做…不幸的是没有,因为我在OSX上,安装模块时遇到问题。(在Linux上应该没有问题)。但您可以在Metaspan中查看许多示例,例如,使用设备::usb等控制玩具usb火箭发射器。给自己一些时间,在matecapn中搜索“设备::USB”&阅读。。。(比如:)那么我只有一个文件是usb-Chicony\u Electronics\u Co.\u Ltd.\u USB2.0\u HD\u UVC\u WebCam\u 0x0001-event-if00,看起来像是我的网络摄像头。嗯,你能用
cat/proc/bus/input/devices
找到它吗?然后我不知道伙计,我所有连接的usb设备都列在那里了。