收到 HID 事件,但鼠标输入仍然不起作用

收到 HID 事件,但鼠标输入仍然不起作用

我想了解 HID 事件和 libinput 之间缺少什么。我有一个设备正在发送正确的鼠标事件,记录自hid-recorder

例如,左键单击:

# ReportID: 11 / Button: 1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 | X:     0 | Y:     0 | Wheel:    0 | AC Pan:    0 
E: 000000.000000 8 0b 01 00 00 00 00 00 00
# ReportID: 11 / Button: 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 | X:     0 | Y:     0 | Wheel:    0 | AC Pan:    0 
E: 000000.074781 8 0b 00 00 00 00 00 00 00

SDP记录的相关部分是:

# 0x05, 0x01,                    // Usage Page (Generic Desktop)        456
# 0x09, 0x02,                    // Usage (Mouse)                       458
# 0xa1, 0x01,                    // Collection (Application)            460
# 0x85, 0x0b,                    //  Report ID (11)                     462
# 0x09, 0x01,                    //  Usage (Pointer)                    464
# 0xa1, 0x00,                    //  Collection (Physical)              466
# 0x95, 0x10,                    //   Report Count (16)                 468
# 0x75, 0x01,                    //   Report Size (1)                   470
# 0x15, 0x00,                    //   Logical Minimum (0)               472
# 0x25, 0x01,                    //   Logical Maximum (1)               474
# 0x05, 0x09,                    //   Usage Page (Button)               476
# 0x19, 0x01,                    //   Usage Minimum (1)                 478
# 0x29, 0x10,                    //   Usage Maximum (16)                480
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              482
# 0x05, 0x01,                    //   Usage Page (Generic Desktop)      484
# 0x16, 0x01, 0xf8,              //   Logical Minimum (-2047)           486
# 0x26, 0xff, 0x07,              //   Logical Maximum (2047)            489
# 0x75, 0x0c,                    //   Report Size (12)                  492
# 0x95, 0x02,                    //   Report Count (2)                  494
# 0x09, 0x30,                    //   Usage (X)                         496
# 0x09, 0x31,                    //   Usage (Y)                         498
# 0x81, 0x06,                    //   Input (Data,Var,Rel)              500
# 0x15, 0x81,                    //   Logical Minimum (-127)            502
# 0x25, 0x7f,                    //   Logical Maximum (127)             504
# 0x75, 0x08,                    //   Report Size (8)                   506
# 0x95, 0x01,                    //   Report Count (1)                  508
# 0x09, 0x38,                    //   Usage (Wheel)                     510
# 0x81, 0x06,                    //   Input (Data,Var,Rel)              512
# 0x95, 0x01,                    //   Report Count (1)                  514
# 0x05, 0x0c,                    //   Usage Page (Consumer Devices)     516
# 0x0a, 0x38, 0x02,              //   Usage (AC Pan)                    518
# 0x81, 0x06,                    //   Input (Data,Var,Rel)              521
# 0xc0,                          //  End Collection                     523
# 0xc0,                          // End Collection                      524

这是一个复杂的蓝牙设备(具体来说,是一个代理来自多个输入设备的事件的 Raspberry Pi:https://github.com/ruundii/bthidhub)。

有 2 只小鼠连接到正在代理的 RPi(每只小鼠在 SDP 中都有自己的报告 ID)。在 Ubuntu 笔记本电脑上,连接到 RPi 时,只有第一个鼠标输入可以工作,但在 Macbook 上,只有第二个鼠标(具有上述事件)可以工作。

我可以看到上面的事件随着 到达hid-recorder,但是 中没有事件libinput debug-events。那么,是否存在只能使用 1 个指针报告 ID 的限制(即 Linux 使用 SDP 中的第一个指针,而 Mac 使用最后一个指针)?有没有办法解决这样的限制?我的想法基本上是将来自 RPi 上多个输入设备的 SDP 记录部分附加在一起,然后仅转换这些设备的报告 ID,以便通过 RPi 代理多个输入设备。

相关内容