Взаимодействие с необработанными HID-устройствами с использованием Python? - PullRequest
0 голосов
/ 10 апреля 2020

Я хотел бы написать код Python для связи с устройством (клавиатурой) через его сырой скрытый интерфейс. Клавиатура представляет несколько устройств HID хосту (клавиатура, системные клавиши, мышь, raw hid и т. Д. c), и я могу определить правильное устройство только по атрибутам «Страница использования» и «Использование».

Я посмотрел на модуль Python hid (как упаковано в python3-hidapi-0.7.99.post20-13.fc31.x86_64 в Fedora 31), но в возвращаемом значении hid.enumerate() значения для usage_page и usage равны 0 во всех случаях:

>>> import hid
>>> import pprint
>>> pprint.pprint([(x['path'], x['usage_page']) for x in hid.enumerate() if x['vendor_id'] == 1240 and x['product_id'] == 61138])
[(b'0002:0010:00', 0),
 (b'0002:0010:02', 0),
 (b'0002:0010:03', 0),
 (b'0002:0010:01', 0),
 (b'0002:0010:04', 0),
 (b'0002:0010:05', 0)]

Есть ли способ получить информацию usage_page из Python? Похоже, это раскрыто в дескрипторе отчета об устройстве, доступном в sysfs через /sys/class/hidraw/hidraw<N>/device/report_descriptor, но я бы хотел не изобретать велосипед заново, если возможно, написать свой собственный код перечисления.

...