适用于 Linux 的 hidapi 与 libusb

use*_*816 3 linux usb mouse libusb hidapi

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

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


与开始了这个古老的文章,其中libhid建议了libusb

看着libhid它似乎已经死了。该项目的最后一次提交是从 2012 年开始的,它是 C++。但我发现一些链接说应该转到hidapi.

然而,hidapi似乎也已经死了。2016 年的最后一次提交。或者它可能只是稳定的?

libusb毕竟,它看起来像一个更好的使用。从一篇 15 年前的文章开始 - 这并没有那么夸张。

问题是我是否遗漏了什么?是libusb要走的路吗?

已经做了一些快速测试 libusb-1.0.0-dev

#include <libusb-1.0/libusb.h>
Run Code Online (Sandbox Code Playgroud)

并且效果很好 - 至少对于我所做的快速测试而言是这样。但是 HID 库也许会更好?

从本机包选项我至少有:

libhidapi-dev      
libhidapi-libusb0  
libhidrd0-dbg      
libhidapi-hidraw0  
libhidrd0          
libhidrd0-dev
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Hay*_*ack 8

libusb建议对 USB HID 设备使用 hidapi。hidapi 可以根据操作系统使用不同的后端,例如 Windows 中的 hid.dll,Linux 中的 hidraw 或 libusb,因此它使用本地 USB 驱动程序。

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

hidapi 目前也未维护,如果您担心的话。

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

就我个人而言,如果 hidapi 适合您的项目,我会说使用它,但如果设备的协议不遵循 HID 标准,那么您会遇到麻烦,并且可能需要 libusb 为您提供的控制。