Solaar/lib/solaar/ui
Ken Sanislo c3382b0ba6 PerKey canvas: symmetric hash stripes for unset cells
The "no change" hash overlay used a single black-or-white stripe
color picked by the base luminance, so the perceived average of an
unset cell was uniformly biased toward black or white instead of
sitting on the actual base color. That made dark base cells look
darker than they really are on the keyboard, and light ones lighter.

Draw two interleaved stripe sets at base ± offset (per channel),
spaced by half-period so the dark and light stripes alternate
evenly across the cell. Equal coverage of the two stripe colors
keeps the perceived average at base.

When a channel is too close to 0 or 1 to fit the full offset
(±0.22), halve the offset on the constrained side. The cell's
average then drifts at the limits but stays centered on base
everywhere else — verified visually across mid-tones, primaries,
and near-black/white bases.

The "no zone base color known" path keeps the previous neutral-grey
look unchanged; the average-preservation property only applies when
there is a base color to preserve.
2026-05-12 12:51:36 -04:00
..
about Add Ukrainian credit to the about model 2026-02-28 09:50:44 -05:00
perkey PerKey canvas: symmetric hash stripes for unset cells 2026-05-12 12:51:36 -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 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