hidapi против libusb для Linux - PullRequest
1 голос
/ 21 марта 2019

Написание кода на C для USB-мыши.

Более конкретно, запись конфигурации и информации для мыши, таких как опрос, чувствительность, действия кнопок, цвета (свет), тактильные изменения, OLED и т. Д.


Начинается с этой старой статьи , где libhid рекомендуется более libusb.

Глядя на libhid , похоже, что он с тех пор умер. Последний коммит в этом проекте с 2012 года - и это C ++. Но я нашел несколько ссылок, говорящих о том, что нужно перейти на hidapi.

Однако, хидапи также кажется довольно мертвым. Последний коммит с 2016 года. А может, он просто стабильный?

Может показаться, что лучше использовать libusb в конце концов. Начиная с 15-летней статьи - это не так уж и много.

Вопрос, если я что-то упустил? libusb путь?

Провел несколько быстрых тестов с libusb-1.0.0-dev

#include <libusb-1.0/libusb.h>

и все работает хорошо - по крайней мере, для быстрых тестов, которые я сделал. Но библиотека HID, возможно, будет лучше?

Из нативных опций пакета у меня как минимум:

libhidapi-dev      
libhidapi-libusb0  
libhidrd0-dbg      
libhidapi-hidraw0  
libhidrd0          
libhidrd0-dev

И

libusb-0.1-4                 libusbmuxd4
libusb-1.0-0                 libusbmuxd-dev
libusb-1.0-0-dev             libusbmuxd-tools
libusb-1.0-doc               libusb-ocaml
libusbauth-configparser1     libusb-ocaml-dev
libusbauth-configparser-dev  libusbprog0v5
libusb-dev                   libusbprog-dev
libusbguard0                 libusbredirhost1
libusbhid-common             libusbredirhost-dev
libusb-java                  libusbredirparser1
libusb-java-dbg              libusbredirparser-dev
libusb-java-doc              libusbtc08-1
libusb-java-lib              libusbtc08-dev

1 Ответ

3 голосов
/ 11 апреля 2019

libusb рекомендуем использовать hidapi для устройств USB HID.hidapi может использовать другой бэкэнд в зависимости от ОС, например, hid.dll в Windows, либо hidraw или libusb в Linux, поэтому он использует собственные драйверы USB.

Имейте в виду, что hidapi не дает вам того жеуровень контроля над пакетами, которые вы отправляете.Это более высокий уровень, чем у libusb, и некоторые параметры, которые он использует для запросов, являются фиксированными (например, значение bRequest).

hidapi также в настоящее время не поддерживается , если это вас беспокоит.

Лично я бы сказал, что используйте hidapi, если он отлично работает для вашего проекта, но если протокол устройства не соответствует стандарту HID, у вас возникнут проблемы и, возможно, вам понадобится контроль, который дает вам libusb.

...