拦截输入设备发送的数据

时间:2014-07-24 11:26:40

标签: linux node.js bash stream usb

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

$ lsusb
... 
Bus 003 Device 046: ID fc08:0101  
....

Bus 003 Device 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。

1 个答案:

答案 0 :(得分:1)

尝试/dev/input/by-id/[Your piano]

例如,我的鼠标位于/dev/input/by-id/usb-Microsoft_Microsoft_5-Button_Mouse_with_IntelliEye_TM_-event-mouse