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では上記のイベントを持つ2番目のマウスのみが機能します。
上記のイベントが到着すると表示されますが、hid-recorder
イベントはありませんlibinput debug-events
。それでは、1つのポインタだけを使用してIDを報告することに制限があります(たとえば、LinuxはSDPの最初のポインタを使用し、Macは最後のポインタを使用します)。そのような制限を避ける方法はありますか?私の考えは、基本的にRPi内の複数の入力デバイスのSDPレコード部分を一緒に追加し、RPiを介して複数の入力デバイスをプロキシするためにそのデバイスのレポートIDのみを変換することです。