4

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

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


从这篇推荐的旧文章开始。libhidlibusb

看着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
4

1 回答 1

10

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 为您提供的控制。

于 2019-04-11T17:50:25.083 回答