Solaar/lib/solaar/ui
Ken Sanislo 4a7edd75ce headset RGB: LED Control as a claim switch + keyboard-style restructure
Rework headset RGB lighting so it mirrors the keyboard/mouse model
instead of its own ad-hoc shape.

LED Control (0x0620 HostMode) becomes a boolean toggle: whether Solaar
holds the headset's live-coloring claim. Off releases the LEDs so
another app (e.g. OpenRGB) can drive them; on lets Solaar drive.

0x0620 per-zone painting and the 0x0621 onboard effect are both live
LED control, so both are gated on the claim — UI rows grey out and
wire writes are skipped (value still persisted) when the claim isn't
held, mirroring the keyboard's RGBEffectSetting under rgb_control.

0x0621 HeadsetOnboardEffect is now the primary lighting setting, the
headset analog of keyboard 0x8071 zone effects. Its build reads the
cluster's supported-effect set so the picker offers only those; effect
id 0 is labelled "Static" to match every other Solaar device. The
redundant HeadsetLEDsPrimary (0x0620 single-colour host push) is
removed — that job is exactly the 0x0621 Static effect.

HeadsetPerZoneLighting is the per-key-style overlay: gated on the
claim AND the onboard effect being Static, since per-zone painting
overlays a Static cluster effect (the analog of keyboard per-key
needing rgb_control + zone Static).

The 0x0622 signature effects (startup/shutdown/passive colours) are
the only stored settings here and stay ungated — editable whether or
not Solaar holds the claim.

On re-claim HeadsetLEDControl.write reasserts the dominant layer:
per-zone painting when the onboard effect is Static, else the 0x0621
effect itself.
2026-05-21 10:13:00 -04:00
..
about about: add Ken Sanislo to Additional Programming credits 2026-05-13 19:03:44 -04:00
perkey G522 LIGHTSPEED headphones support 2026-05-21 10:13:00 -04: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 headset RGB: LED Control as a claim switch + keyboard-style restructure 2026-05-21 10:13:00 -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