Linux 的 hidapi 与 libusb

hidapi vs libusb for Linux

正在为 USB 鼠标编写一些 C 代码。

更具体地说,将配置和信息写入鼠标,如轮询、灵敏度、按钮操作、颜色(灯光)、触觉改变、OLED 等。


this old article 开始,其中 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

libusb recommend using hidapi 用于 USB HID 设备。 hidapi 可以根据 OS 使用不同的后端,例如hid.dll 在 Windows 中,hidraw 或 libusb 在 Linux 中,因此它使用本机 USB 驱动程序。

请注意,hidapi 不会为您提供对发送的数据包的相同级别的控制。它比 libusb 更高级别,并且它用于请求的一些参数是固定的(例如 bRequest 值)。

hidapi 也是 not currently maintained,如果您担心的话。

更新:自 2019 年 6 月 4 日起,hidapi 已移至 libusb/hidapi,现在再次积极维护。

我个人建议使用 hidapi 如果它适合你的项目,但如果设备的协议不遵循 HID 标准那么你 运行 会遇到麻烦并且可能需要控制libusb 给你。