我希望能够拥有一个可能已经插入的HID设备,并消耗它的输出,同时防止其他人(X11或终端)消耗它的输出。
如果可以的话,我不想假装成一个终端,而是要独占某个特定的HID或字符设备。这个想法是有些HID设备可能会被x/终端识别为鼠标/键盘,但第二个鼠标或键盘可以用于其他用途,但为了实现这一点,您需要确保它们不会向打开的终端发送虚假输入。
有没有人知道如何实现这个想法?
我希望能够拥有一个可能已经插入的HID设备,并消耗它的输出,同时防止其他人(X11或终端)消耗它的输出。
如果可以的话,我不想假装成一个终端,而是要独占某个特定的HID或字符设备。这个想法是有些HID设备可能会被x/终端识别为鼠标/键盘,但第二个鼠标或键盘可以用于其他用途,但为了实现这一点,您需要确保它们不会向打开的终端发送虚假输入。
有没有人知道如何实现这个想法?
我已经完成了这个任务——我的具体应用是一个守护进程,从 USB HID 条形码读取器(呈现为 USB HID 键盘设备)中读取事件。
为此,我使用了事件设备接口,打开与所需设备对应的 /dev/input/event*
设备。您随后可以在该设备上发出 EVIOCGRAB
ioctl 命令,以独占模式使用并且在事件(表示按键,鼠标移动等)可用时从设备中读取这些事件。
(当设备被独占使用时,只有您的应用程序会看到来自该设备的事件)。
int fd = open(devPathFile",O_RDWR | O_NONBLOCK,S_IRUSR | S_IWUSR)
打开设备并获取文件描述符号fd
,然后使用ioctl(fd,EVIOCGRAB,1)
来获取独占使用权。不要忘记处理将关闭您的程序的信号,以便您可以释放该独占性(虽然可能会在应用程序上自动发生... - SlySvenprocess.stdin.resume(); process.stdin.on("data", function (chunk) { console.log(chunk.toString()); }); process.on("SIGINT", function() { console.log("Detected Ctrl+C (SIGINT)"); process.exit(); });
- user1529413