我正在开发一个使用条形码扫描仪的后台应用程序。在我的linux操作系统上,条形码扫描仪被识别为USB HID (人机接口设备)设备。因此,默认的USB HID驱动程序被加载,扫描仪的行为就像键盘一样。
我可以使用pyxhook Python模块读取扫描器的STDIN内容。因此,即使我的进程在后台运行,我也可以读取来自条形码扫描器的输入。
我的问题是,后台应用程序也在读取来自常规键盘的输入,因为它还会写入STDIN。
我只想通过后台进程使用条形码扫描器的STDIN,而忽略其他HID设备的STDIN,但我不知道如何实现这一点。有什么想法吗?
发布于 2019-11-21 09:16:16
如果您在较低级别(evdev)截取输入,则可以按设备拆分。对于python,有python-evdev。您可以根据名称过滤设备,然后从名称开始。一个缺点是您必须自己将evdev事件转换为可读的输入(这是内核通常为您做的事情)。
我已经编写了一个用于将条形码保存到文件中的simple program,可以在RPi上运行(另外还支持GS1-128/SSCC-128/EAN-128)。
https://stackoverflow.com/questions/58803226
复制