Solaar/lib/solaar/ui
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
..
about Add Ukrainian credit to the about model 2026-02-28 09:50:44 -05:00
perkey Add G522 headset layout to per-key painter 2026-05-10 15:58:15 -07:00
__init__.py ui: better handling of missing devices 2026-03-13 13:41:59 -04:00
action.py device: Support per-slot unpair on Lightspeed receivers (CLI + GUI) (#3183) 2026-04-17 09:34:58 -04:00
common.py Introduce error types 2025-01-02 08:29:32 -05:00
config_panel.py Add per-key RGB color painter and replace MAP_CHOICE color validator 2026-05-10 17:52:55 -04:00
desktop_notifications.py tests: fix ui desktop notifications test 2025-01-02 15:04:41 -05:00
diversion_rules.py Add per-key RGB color painter and replace MAP_CHOICE color validator 2026-05-10 17:52:55 -04:00
icons.py Add support for battery-0N0 icon naming scheme 2026-04-20 21:52:00 -04:00
pair_window.py solaar/ui: Remove outdated logger enabled checks 2025-01-02 09:26:31 -05:00
rule_actions.py rules: fix debug messages for MouseClick rule 2025-11-02 21:01:33 +09:00
rule_base.py Enforce rules on RuleComponentUI subclasses 2025-01-01 10:46:04 -05:00
rule_conditions.py fix: center labels and remove buggy entry resizing logic 2025-09-30 10:42:25 -04:00
tray.py solaar/ui: Remove outdated logger enabled checks 2025-01-02 09:26:31 -05:00
window.py centurion: support PRO X 2 LIGHTSPEED headphones Centurion features (#3150) 2026-04-14 11:43:23 -04:00