Solaar/lib/logitech_receiver
Ken Sanislo f3af38862d Add G522 headset layout to per-key painter
Wire the per-key painter UI to the G522's per-zone lighting setting and
ship a layout file matching the eight-LED earcup arrangement.

- lib/solaar/ui/perkey/layouts/headset_g522.py (new): 2x5 layout, four
  LEDs per earcup in a 2x2 grid with a gap column between, viewed from
  outside. Zone IDs used as labels (Logitech firmware numbering).
- lib/solaar/ui/perkey/layouts/__init__.py: register layout against
  feature 0x0620 (HEADSET_RGB_HOSTMODE) via name-substring match on
  "G522".
- lib/logitech_receiver/settings_templates.py: switch
  HeadsetPerZoneLighting from ChoicesMapValidator (limited to the
  COLORSPLUS named-color palette) to MapRangeValidator (any 24-bit
  RGB). Set editor_class so the painter UI takes over from the old
  MapChoice dropdowns. Drops choices_universe; matches the
  PerKeyLighting pattern.

LED positions per tester's reference:

    Left earcup          Right earcup
    | 8 | 7 |            | 6 | 5 |
    | 4 | 3 |            | 2 | 1 |
2026-05-10 15:58:15 -07:00
..
__init__.py Refactor: Distinguish module from package 2024-09-15 09:18:51 -04:00
advanced_para_eq.py G522 bug batch from log df178225 2026-05-10 15:39:17 -07:00
base.py Tighten Centurion probe and silence FeaturesArray query spam 2026-05-10 15:39:17 -07:00
base_usb.py device: Support per-slot unpair on Lightspeed receivers (CLI + GUI) (#3183) 2026-04-17 09:34:58 -04:00
centurion.py Fix FeatureNotSupported crash on pending CenturionReceiver 2026-05-10 15:39:17 -07:00
centurion_constants.py centurion: support PRO X 2 LIGHTSPEED headphones Centurion features (#3150) 2026-04-14 11:43:23 -04:00
common.py centurion: support PRO X 2 LIGHTSPEED headphones Centurion features (#3150) 2026-04-14 11:43:23 -04:00
descriptors.py Add G522 LIGHTSPEED headset support (Centurion 0x50 transport variant) 2026-05-10 15:39:16 -07:00
desktop_notifications.py testing: upgrade desktop notifications tests to take notifications availability into account 2025-01-02 10:47:53 -05:00
device.py Audit diagnostic logging added during G522 bring-up 2026-05-10 15:39:17 -07:00
diversion.py rules: remove use of XTest and use uinput in all cases 2026-03-08 20:58:43 -04:00
exceptions.py Use double quotes for module level docstrings 2024-06-02 09:54:21 -04:00
headset_rgb.py Refactor G522 RGB to match keyboard/mouse LED Control pattern 2026-05-10 15:39:17 -07:00
hidpp10.py cli: Fix crash when showing notification flags. (#3070) 2025-12-12 04:54:10 -05:00
hidpp10_constants.py device: Handle composite IntFlag.name on Python < 3.11 (#3187) 2026-04-16 11:38:25 -04:00
hidpp20.py G522 bug batch from log df178225 2026-05-10 15:39:17 -07:00
hidpp20_constants.py G522 mic-mute fix + cluster-info decode + 0x0623 probe 2026-05-10 15:39:17 -07:00
i18n.py Unify imports in logitech package 2024-05-23 16:42:18 -04:00
listener.py Add G522 LIGHTSPEED headset support (Centurion 0x50 transport variant) 2026-05-10 15:39:16 -07:00
logivoice.py LogiVoice: rewrite Parameters field tables and decode GetInfo bounds 2026-05-10 15:39:17 -07:00
notifications.py HEADSET_MIC_MUTE: handle device state-change notifications 2026-05-10 15:39:17 -07:00
onboard_eq.py Remove references to internal RE docs and lghub_agent from code comments 2026-05-10 15:39:17 -07:00
receiver.py device: Support per-slot unpair on Lightspeed receivers (CLI + GUI) (#3183) 2026-04-17 09:34:58 -04:00
rgb_effects_probe.py G522 mic-mute fix + cluster-info decode + 0x0623 probe 2026-05-10 15:39:17 -07:00
settings.py Don't misreport empty-ACK writes as failed (Setting.write) 2026-05-10 15:39:17 -07:00
settings_new.py settings: add setting for HAPTIC feature 2025-11-12 14:50:46 -05:00
settings_templates.py Add G522 headset layout to per-key painter 2026-05-10 15:58:15 -07:00
settings_validator.py Add per-key RGB color painter and replace MAP_CHOICE color validator 2026-05-10 17:52:55 -04:00
special_keys.py device: add special keys from Logitech 2025-10-16 20:57:15 -04:00