Compare commits

..

3 Commits

Author SHA1 Message Date
Ken Sanislo 189a50e926 perkey layouts: add POUND and ISO_BACKSLASH cells to MAIN_ISO
ISO keyboards have two physical keys that ANSI does not — POUND (#) at
row 3 col 12 between the right-of-quote position and Enter, and
ISO_BACKSLASH (<) at row 4 col 1 between LShift and Z. The firmware
reports them as zones 47 and 97 on G915 ISO models, but MAIN_ISO only
*subtracted* the ANSI backslash at row 2 col 13 without ever adding
those two cells back. They fell through to the unmapped pool and got
dropped by the EXTRAS_ALLOWLIST phantom-zone filter, so PerKey lighting
silently left them undrawable (issue #3239 — German G915).

Add both cells to MAIN_ISO with the UK QWERTY labels (# and \\) as the
default, and override them in the regional layouts: # / < on QWERTZ DE,
* / < on AZERTY FR. UK QWERTY inherits the defaults.

ANSI is unaffected — MAIN_ANSI still omits 47/97 so they keep getting
filtered as phantoms on ANSI keyboards like the G515.
2026-06-01 19:09:11 -04:00
Juan Jose del Rio Holgado f68230b83d cli/config: wrap argv in list for Gio.Application.run (PyGObject 3.56)
The remote-config path passes a yaml.dump(...) string to
Gio.Application.run(), whose argv parameter is Optional[list[str]].
Pre-3.56 PyGObject tolerated a bare str; the marshaller refactor in
the 3.55 dev series (MR !487) tightened this, and 3.56 now raises
TypeError: Unable to marshal str as an array.

Wrap the YAML string in a 1-element list. The receiver in
solaar.ui._command_line already does yaml.safe_load("".join(args)) on
the argv, so a 1-element argv reconstructs the original YAML cleanly
under both old and new PyGObject.
2026-05-28 08:19:06 -04:00
Matthaiks 7647cea478
po: Update Polish translation (#3236) 2026-05-24 17:48:53 -04:00
5 changed files with 838 additions and 409 deletions

View File

@ -231,7 +231,7 @@ def run(receivers, args, _find_receiver, find_device):
argl = ["config", dev.serial or dev.unitId, setting.name]
argl.extend([a for a in [args.value_key, args.extra_subkey, args.extra2] if a is not None])
args = yaml.dump(argl)
application.run(args)
application.run([args])
else:
if dev.persister and setting.persist:
dev.persister[setting.name] = setting._value

View File

@ -157,11 +157,17 @@ MAIN_ANSI: tuple[Cell, ...] = (
Cell(zone_id=108, row=5, col=13, group="main", label="Ctrl"),
)
# --- Main alpha block, ISO. Same as ANSI minus the row 2 col 13 backslash;
# on ISO that position is the top half of the L-shape Enter, addressed
# by zone 37 (the main Enter cell at row 3 col 13). Zone 46 is silently
# unaddressable on ISO layouts — same limitation as OpenRGB's UI.
MAIN_ISO: tuple[Cell, ...] = tuple(c for c in MAIN_ANSI if not (c.row == 2 and c.col == 13))
# --- Main alpha block, ISO. Drops the row 2 col 13 backslash (zone 46 is the
# upper half of the L-shape Enter on ISO, addressed by zone 37) and adds
# the two ISO-only keys: POUND (zone 47) at row 3 col 12 between ' and
# Enter, and ISO_BACKSLASH (zone 97) at row 4 col 1 between Shift and Z.
# Regional layouts override the labels to match local keycaps (# / < on
# QWERTZ, # / \ on UK QWERTY, * / < on AZERTY).
_ISO_EXTRA_KEYS: tuple[Cell, ...] = (
Cell(zone_id=47, row=3, col=12, group="main", label="#"),
Cell(zone_id=97, row=4, col=1, group="main", label="\\"),
)
MAIN_ISO: tuple[Cell, ...] = tuple(c for c in MAIN_ANSI if not (c.row == 2 and c.col == 13)) + _ISO_EXTRA_KEYS
# --- Curated allowlist for unmapped device zones surfaced in the bottom strip.
# G-keys, logo, media, brightness — the canonical "extras" Logitech firmware

View File

@ -56,6 +56,8 @@ _OVERRIDES: dict[int, str] = {
51: ";", # ,-position → semicolon
52: ":", # .-position → colon
53: "!", # /-position → exclamation
47: "*", # POUND key (row 3 col 12) — French * / µ
97: "<", # ISO_BACKSLASH (row 4 col 1), between Shift and W
}

View File

@ -38,6 +38,8 @@ _OVERRIDES: dict[int, str] = {
49: "Ä", # row 3 col 11
26: "Y", # row 4 col 2 — Y/Z swap
53: "-", # row 4 col 11
47: "#", # POUND key (row 3 col 12), between Ä and Enter
97: "<", # ISO_BACKSLASH (row 4 col 1), between Shift and Y
}

1225
po/pl.po

File diff suppressed because it is too large Load Diff