我正在尝试使用 libusb 将一些使用 HidD_GetInputReport 的 Windows 代码移植到 linux。据我所知,我需要调用 usb_control_msg 但我在弄清楚要传递哪些参数时遇到问题。
我追求的报告 ID 是 0x01。这是我到目前为止所拥有的。
#define HID_GET_REPORT 0x01
#define HID_REPORT_TYPE_INPUT 0x01
#define INTERFACE_NUMBER 0x00
int reportId = 0x01;
int bytesSent = usb_control_msg(
devHandle,
USB_ENDPOINT_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
HID_GET_REPORT,
(HID_REPORT_TYPE_INPUT << 8) | reportId,
INTERFACE_NUMBER,
buf,
sizeof(buf),
10000);
我真的不确定 HID_GET_REPORT、HID_REPORT_TYPE_INPUT 和 INTERFACE_NUMBER。我在网上的一个例子中找到了它们。更改各种值确实会导致不同的返回码,但这些似乎也没有记录在任何地方。