Solaar/lib/hidapi
Ken Sanislo e5f7da6bf5 Add G522 LIGHTSPEED headset support (Centurion 0x50 transport variant)
The G522 uses a Centurion protocol variant with report ID 0x50 that adds
a device address byte at frame position [1], shifting all CPL fields by
+1 compared to the PRO X 2's 0x51 variant. This commit adds transport-
layer support for both variants while consolidating per-handle centurion
state into a single CenturionHandleState dataclass.

Key changes:
- Consolidate _centurion_handles (set) and _centurion_protocol_versions
  (dict) into a single dict[int, CenturionHandleState] keyed by handle
- Add _unwrap_centurion_frame() helper that auto-detects 0x50 vs 0x51
  from raw frame bytes and learns the device address on first RX
- Add _centurion_frame_header() to build the correct TX header per variant
- Detect both report IDs in udev report descriptor parsing
- Adjust bridge fragment chunk sizes for 0x50's extra header byte
- Propagate full CenturionHandleState when opening per-thread handles

Wire format verified against G522 diagnostic logs from LGSTrayEx#15.
2026-05-10 15:39:16 -07:00
..
__init__.py hidapi: Explicitly load hidapi/udev implementation 2024-10-11 07:42:38 -04:00
common.py Add G522 LIGHTSPEED headset support (Centurion 0x50 transport variant) 2026-05-10 15:39:16 -07:00
hidapi_impl.py Skip Logitech webcams to prevent them from locking up during HID++ checks on Macs 2026-02-28 10:50:36 -05:00
hidconsole.py tools: improve flags for hidconsole 2025-12-19 10:55:50 -05:00
udev_impl.py Add G522 LIGHTSPEED headset support (Centurion 0x50 transport variant) 2026-05-10 15:39:16 -07:00