Как использовать USB HID-устройство только одним процессом Python?

Я разрабатываю фоновое приложение с использованием сканера штрих-кода. Сканер штрих-кода распознается как устройство USB HID (Human Interface Device) в моей ОС Linux. Таким образом, загружен драйвер USB HID по умолчанию, и сканер ведет себя как клавиатура.

Я могу читать содержимое STDIN сканера с помощью модуля pyxhook Python. Таким образом, даже если мой процесс выполняется в фоновом режиме, я могу прочитать ввод со сканера штрих-кода.

Моя проблема в том, что фоновое приложение также считывает ввод с обычной клавиатуры, потому что оно также записывает в STDIN.

Я хотел бы использовать STDIN сканера штрих-кода только в фоновом режиме и игнорировать STDIN других HID-устройств, таких как клавиатура, но я понятия не имею, как это реализовать. Есть идеи?

1 ответ

Если вы перехватываете ввод на более низком уровне (evdev), вы можете разделить его по устройствам. Для python существует python-evdev. Вы можете фильтровать устройства по имени и переходить оттуда. Одним из недостатков является то, что вы должны сами переводить события evdev в читаемый ввод (что обычно ядро ​​делает за вас).

Я написал простую программу для сохранения штрих-кодов в файл для запуска на RPi (с дополнительной поддержкой GS1-128/SSCC-128/EAN-128).

Другие вопросы по тегам