我正在测试USB HID主机示例,到目前为止,我已经能够正确读取鼠标数据。但是,我想知道是否有人可以帮助我找到一种获取鼠标滚轮数据的方法。
我感谢您提供的任何指导或建议。谢谢!
致以诚挚的问候。
读取 ESP32 上的鼠标滚轮
就我而言,我更改了这一行:
ESP_ERROR_CHECK(hid_class_request_set_protocol(hid_device_handle, HID_REPORT_PROTOCOL_BOOT));
对此:
ESP_ERROR_CHECK(hid_class_request_set_protocol(hid_device_handle, HID_REPORT_PROTOCOL_REPORT));
然后我在不使用
hid_mouse_input_report_boot_t
结构的情况下解析了鼠标数据:
typedef struct {
int8_t button;
int8_t _unknown;
int16_t x_displacement;
int16_t y_displacement;
int8_t wheel;
} mouse_data;
static void hid_host_mouse_report_callback(const uint8_t *const data, const int length)
{
if (length != 7) {
return;
}
hid_print_new_device_report_header(HID_PROTOCOL_MOUSE);
mouse_data *mdata = (mouse_data *) data;
printf("X: %04d Y: %04d W: %04d |%c|%c|%c|%c --",
mdata->x_displacement, mdata->y_displacement, mdata->wheel,
(mdata->button == 0x1 || mdata->button == 0x3 ? 'o' : ' '),
(mdata->button == 0x4 ? 'o' : ' '),
(mdata->button == 0x2 || mdata->button == 0x3 ? 'o' : ' '),
(mdata->button == 0x10 ? 'B' : mdata->button == 0x8 ? 'F' : ' '));
printf("Raw Value(%d): ", length);
for (int i = 0; i < length; i++) {
printf("0x%X ", (unsigned int)data[i]);
}
printf("\r");
fflush(stdout);
}
您可能需要使用wireshark来找到适合您的鼠标的
mouse_data
结构。