Solaar/lib/solaar/ui/perkey
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
..
layouts Add G522 headset layout to per-key painter 2026-05-10 15:58:15 -07:00
__init__.py
binding.py
canvas.py
control.py
dialog.py
editor.py
layout.py
palette.py
protocol.py
tools.py