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

이는 복잡한 Bluetooth 장치(특히 여러 입력 장치의 이벤트를 중개하는 Raspberry Pi)입니다.https://github.com/ruundii/bthidhub).

중개되는 RPi에 2개의 마우스가 연결되어 있습니다(각 마우스는 SDP에 자체 리포터 ID를 가지고 있습니다). Ubuntu 노트북에서는 RPi에 연결하면 첫 번째 마우스 입력만 작동하지만 Macbook에서는 위 이벤트가 있는 두 번째 마우스만 작동합니다.

위의 이벤트가 도착하면 볼 수 있지만 hid-recorder에는 이벤트가 없습니다 libinput debug-events. 그렇다면 1개의 포인터만 사용하여 ID를 보고하는 데 제한이 있습니까(예: Linux는 SDP의 첫 번째 포인터를 사용하고 Mac은 마지막 포인터를 사용함)? 그러한 제한을 피할 수 있는 방법이 있습니까? 내 생각은 기본적으로 RPi에 있는 여러 입력 장치의 SDP 레코드 부분을 함께 추가한 다음 RPi를 통해 여러 입력 장치를 프록시하기 위해 해당 장치의 보고 ID만 변환하는 것입니다.

관련 정보