#linux #usb #mouse #libusb #hidapi
#linux #usb #мышь #libusb #hidapi
Вопрос:
Пишу некоторый код на C для USB-мыши.
Более конкретно, запись конфигурации и информации на мышь, такой как опрос, чувствительность, действия кнопок, цвета (подсветка), тактильные изменения, OLED и т.д.
Начал с этой старой статьи, где libhid
рекомендуется заменить libusb
.
Глядя на libhid, кажется, что с тех пор он умер. Последний коммит в этом проекте датирован 2012 годом, и он написан на C . Но я нашел несколько ссылок, в которых говорится, что нужно перейти на hidapi
.
Однако 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:
libusb рекомендует использовать hidapi для устройств USB HID. hidapi может использовать другой сервер в зависимости от операционной системы, например, hid.dll в Windows, либо hidraw, либо libusb в Linux, поэтому используются собственные драйверы USB.
Однако имейте в виду, что hidapi не дает вам такого же уровня контроля над отправляемыми вами пакетами. Это более высокий уровень, чем libusb, и некоторые параметры, которые он использует для запросов, фиксированы (например, значение bRequest).
hidapi также в настоящее время не поддерживается, если это вас беспокоит.
Обновление: С 4 июня 2019 года hidapi был перенесен в libusb / hidapi и в настоящее время снова активно поддерживается.
Лично я бы посоветовал использовать hidapi, если он отлично работает для вашего проекта, но если протокол устройства не соответствует стандарту HID, то у вас возникнут проблемы и, вероятно, потребуется контроль, который предоставляет вам libusb.