fix(keybinds): SUPER+? never fired — shifted keysym needs SHIFT in the modmask
All checks were successful
Check / eval (push) Successful in 2m53s
All checks were successful
Check / eval (push) Successful in 2m53s
? is typed as Shift+/, so Hyprland saw mods SUPER+SHIFT with keysym `question` and the exact-modmask match skipped the `$mod, question` bind — the keypress fell through to the focused window (caught on the Latitude, BACKLOG item 26; the menu itself was fine from a terminal). - keybinds.nix: bind is now `$mod SHIFT, question`. - rofi.nix prettyKeys collapses "SHIFT + ?" back to "?" so the cheatsheet row keeps the documented SUPER + ? label. - MEMORY.md gotcha: shifted keysyms need SHIFT in mods — invisible to eval-tier tests. Verified: V0 (flake check --no-build); V1 both surfaces (eval'd settings.bind renders `$mod SHIFT, question, exec, nomarchy-menu keybinds`; built nomarchy-menu's cheatsheet renders `SUPER + ?`). V3 queued: SUPER+? on the Latitude after home-update + relogin. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -25,20 +25,6 @@ next, in what order*.
|
|||||||
*Items 21–26: real-hardware QA findings from the Latitude 5410
|
*Items 21–26: real-hardware QA findings from the Latitude 5410
|
||||||
(Bernardo, 2026-07-04) — bugs found on metal outrank the queue.*
|
(Bernardo, 2026-07-04) — bugs found on metal outrank the queue.*
|
||||||
|
|
||||||
### 26. SUPER+? cheatsheet bind never fires on hardware
|
|
||||||
Reported (Latitude sweep #2): SUPER+? does nothing — the ? reaches the
|
|
||||||
focused terminal. Cause: keybinds.nix binds `$mod, question`, but
|
|
||||||
typing ? holds Shift, so Hyprland sees mods SUPER+SHIFT with keysym
|
|
||||||
`question` and its exact-modmask match skips a bind declaring SUPER
|
|
||||||
only (the "question already implies Shift" comment doesn't hold on
|
|
||||||
real input; headless V1/V2 never pressed the key). Fix: `$mod SHIFT,
|
|
||||||
question` (user-facing label stays SUPER+?); while there, audit the
|
|
||||||
bind list for other shifted keysyms (none today — letters carry
|
|
||||||
explicit SHIFT mods). Confirmed bind-only: `nomarchy-menu keybinds`
|
|
||||||
from a terminal opens the cheatsheet fine (Latitude, 2026-07-04).
|
|
||||||
**Verify:** V1 (rendered bind string in the HM generation); V3 retest
|
|
||||||
on the Latitude.
|
|
||||||
|
|
||||||
### 25. swaync text unreadable on summer-day (light-theme contrast)
|
### 25. swaync text unreadable on summer-day (light-theme contrast)
|
||||||
Reported: on summer-day, notification/control-centre text is invisible
|
Reported: on summer-day, notification/control-centre text is invisible
|
||||||
(contrast). Root cause (traced 2026-07-04): swaync.nix renders `.body`
|
(contrast). Root cause (traced 2026-07-04): swaync.nix renders `.body`
|
||||||
|
|||||||
@@ -33,7 +33,12 @@ QA machine), the **T14s** (webcam case).
|
|||||||
no comma layout was configured, so the bind wasn't rendered (the
|
no comma layout was configured, so the bind wasn't rendered (the
|
||||||
gate working as designed, not a failure) — retest after setting a
|
gate working as designed, not a failure) — retest after setting a
|
||||||
comma layout + rebuild + relogin. The SUPER+? no-op found en
|
comma layout + rebuild + relogin. The SUPER+? no-op found en
|
||||||
route IS a real bug → BACKLOG item 26.
|
route IS a real bug → BACKLOG item 26 (fix shipped — see the
|
||||||
|
dedicated SUPER+? entry below).
|
||||||
|
- [ ] **SUPER+? opens the cheatsheet** (item 26 fix) — after
|
||||||
|
`home-update` + relogin (or `hyprctl reload`), SUPER+? must open
|
||||||
|
the keybindings cheatsheet, whose row still reads `SUPER + ?`
|
||||||
|
(not `SUPER + SHIFT + ?`).
|
||||||
- [ ] **Keyboard hotplug picker (re-verify after in-flake graduation)** —
|
- [ ] **Keyboard hotplug picker (re-verify after in-flake graduation)** —
|
||||||
plug an external keyboard post-login, pick a layout in rofi, confirm
|
plug an external keyboard post-login, pick a layout in rofi, confirm
|
||||||
it applies per-device only, persists in `settings.keyboard.devices`,
|
it applies per-device only, persists in `settings.keyboard.devices`,
|
||||||
|
|||||||
@@ -17,6 +17,20 @@ Template:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 2026-07-04 — SUPER+? bind fix (iteration #8, item 26)
|
||||||
|
- **Task:** BACKLOG NOW#26 — cheatsheet bind never fires on hardware.
|
||||||
|
- **Did:** keybinds.nix: `$mod, question` → `$mod SHIFT, question`
|
||||||
|
(? is Shift+/, Hyprland matches the exact modmask); rofi.nix
|
||||||
|
prettyKeys collapses "SHIFT + ?" → "?" so the row stays SUPER + ?.
|
||||||
|
Gotcha added to MEMORY.md (shifted keysyms need SHIFT in mods).
|
||||||
|
- **Verified:** V0 (flake check --no-build); V1 both surfaces — eval'd
|
||||||
|
hyprland settings.bind renders `$mod SHIFT, question, exec,
|
||||||
|
nomarchy-menu keybinds`, and built nomarchy-menu's cheatsheet file
|
||||||
|
renders `SUPER + ?`. No other shifted keysyms in the bind list.
|
||||||
|
- **Pending:** V3 queued (SUPER+? on the Latitude after home-update +
|
||||||
|
relogin).
|
||||||
|
- **Next suggestion:** item 25 (swaync contrast on summer-day).
|
||||||
|
|
||||||
## 2026-07-04 — Latitude hardware sweep #2 (Bernardo; results booked, no code)
|
## 2026-07-04 — Latitude hardware sweep #2 (Bernardo; results booked, no code)
|
||||||
- **Task:** V3 sweep on the Latitude after pulling ≥18b8545 + reboot.
|
- **Task:** V3 sweep on the Latitude after pulling ≥18b8545 + reboot.
|
||||||
- **PASS:** waybar supervisor (theme switches clean; `pkill -x waybar`
|
- **PASS:** waybar supervisor (theme switches clean; `pkill -x waybar`
|
||||||
|
|||||||
@@ -47,6 +47,10 @@ iteration would otherwise rediscover.
|
|||||||
split (BACKLOG LATER) is the decided fix (§ Faster switches).
|
split (BACKLOG LATER) is the decided fix (§ Faster switches).
|
||||||
|
|
||||||
## Gotchas (cost a debugging session once)
|
## Gotchas (cost a debugging session once)
|
||||||
|
- Hyprland binds match the exact modmask: a shifted keysym (`question`)
|
||||||
|
needs SHIFT in `mods` or the bind never fires — the keypress falls
|
||||||
|
through to the focused window (§ item 26; caught on hardware, invisible
|
||||||
|
to eval-tier tests).
|
||||||
- Never kill a Wayland session-lock client (hyprlock): its crash
|
- Never kill a Wayland session-lock client (hyprlock): its crash
|
||||||
failsafe drops to a tty instead of unlocking (§ Hibernate
|
failsafe drops to a tty instead of unlocking (§ Hibernate
|
||||||
double-unlock).
|
double-unlock).
|
||||||
|
|||||||
@@ -33,8 +33,11 @@
|
|||||||
{ mods = "$mod"; key = "X"; action = "exec, nomarchy-menu power"; desc = "Power menu"; }
|
{ mods = "$mod"; key = "X"; action = "exec, nomarchy-menu power"; desc = "Power menu"; }
|
||||||
|
|
||||||
{ mods = "$mod"; key = "N"; action = "exec, swaync-client -t"; desc = "Notification centre"; }
|
{ mods = "$mod"; key = "N"; action = "exec, swaync-client -t"; desc = "Notification centre"; }
|
||||||
# SUPER+? (the "question" keysym already implies Shift on most layouts).
|
# SUPER+? — ? is typed as Shift+/, so SHIFT must be in the bind's
|
||||||
{ mods = "$mod"; key = "question"; action = "exec, nomarchy-menu keybinds"; desc = "Keybindings cheatsheet"; }
|
# modmask or Hyprland's exact-modifier match never fires (the key then
|
||||||
|
# falls through to the focused window; caught on hardware, item 26).
|
||||||
|
# The cheatsheet still renders this row as SUPER + ? (rofi.nix).
|
||||||
|
{ mods = "$mod SHIFT"; key = "question"; action = "exec, nomarchy-menu keybinds"; desc = "Keybindings cheatsheet"; }
|
||||||
|
|
||||||
# Menu functions — SUPER+CTRL+<mnemonic> jumps straight to a
|
# Menu functions — SUPER+CTRL+<mnemonic> jumps straight to a
|
||||||
# nomarchy-menu module (all also reachable from the SUPER+M picker).
|
# nomarchy-menu module (all also reachable from the SUPER+M picker).
|
||||||
|
|||||||
@@ -117,7 +117,10 @@ let
|
|||||||
let m = lib.replaceStrings [ "$mod" ] [ "SUPER" ] b.mods;
|
let m = lib.replaceStrings [ "$mod" ] [ "SUPER" ] b.mods;
|
||||||
prefix = if m == "" then "" else lib.concatStringsSep " + " (lib.splitString " " m) + " + ";
|
prefix = if m == "" then "" else lib.concatStringsSep " + " (lib.splitString " " m) + " + ";
|
||||||
key = lib.replaceStrings [ "question" "slash" ] [ "?" "/" ] b.key;
|
key = lib.replaceStrings [ "question" "slash" ] [ "?" "/" ] b.key;
|
||||||
in prefix + key;
|
# ? already implies Shift — the bind needs SHIFT in its modmask
|
||||||
|
# (keybinds.nix), but showing it would read double, so collapse
|
||||||
|
# "SHIFT + ?" back to the documented "?".
|
||||||
|
in lib.replaceStrings [ "SHIFT + ?" ] [ "?" ] (prefix + key);
|
||||||
cheatRows =
|
cheatRows =
|
||||||
map (b: padRight 22 (prettyKeys b) + b.desc) (keybinds.binds
|
map (b: padRight 22 (prettyKeys b) + b.desc) (keybinds.binds
|
||||||
++ lib.optionals (lib.hasInfix "," cfg.keyboard.layout)
|
++ lib.optionals (lib.hasInfix "," cfg.keyboard.layout)
|
||||||
|
|||||||
Reference in New Issue
Block a user