python - 如何仅通过一个 Python 进程使用 USB HID 设备?
问题描述
我正在使用条形码扫描仪开发后台应用程序。条形码扫描仪在我的 Linux 操作系统上被识别为 USB HID(人机接口设备)设备。因此,默认的 USB HID 驱动程序已加载,扫描仪的行为就像键盘一样。
我可以使用 pyxhook Python 模块读取扫描仪的 STDIN 内容。因此,即使我的进程在后台运行,我也可以从条形码扫描仪读取输入。
我的问题是,后台应用程序也在从常规键盘读取输入,因为它也写入 STDIN。
我想仅通过后台进程使用条形码扫描仪的 STDIN,而忽略其他 HID 设备(如键盘)的 STDIN,但我不知道如何实现。任何想法?
解决方案
如果您在较低级别(evdev)上拦截输入,则可以按设备将其拆分。对于 python,有python-evdev。您可以根据名称过滤设备,然后从那里开始。一个缺点是您必须自己将 evdev 事件转换为可读输入(内核通常会为您执行此操作)。
我编写了一个简单的程序,用于将条形码保存到文件中,以在 RPi 上运行(额外支持 GS1-128/SSCC-128/EAN-128)。
推荐阅读
- cryptography - 从未使用 geth 加密包生成的 secpk256 公钥获取以太坊地址
- sql - sql查询基于where子句中的多列组合并处理'IN'或Not In运算符
- asterisk - Asterisk 编解码器 G.711.1
- python - BBox标签工具
- powershell - Powershell import-module 找不到模块 Configci
- docker - 为什么我有 tidy 缺少运行 docker 容器的错误
- javascript - 如何访问使用装饰器的对象?
- angular - 激活星云主题选项卡
- apache-zeppelin - 如何在封闭网络中设置 Hellium
- php - Wordpress 传输到仅加载 wp_header 元素的子域上的实时 Web 服务器