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 给你。
正在为 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 给你。