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
|
||||
(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)
|
||||
Reported: on summer-day, notification/control-centre text is invisible
|
||||
(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
|
||||
gate working as designed, not a failure) — retest after setting a
|
||||
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)** —
|
||||
plug an external keyboard post-login, pick a layout in rofi, confirm
|
||||
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)
|
||||
- **Task:** V3 sweep on the Latitude after pulling ≥18b8545 + reboot.
|
||||
- **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).
|
||||
|
||||
## 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
|
||||
failsafe drops to a tty instead of unlocking (§ Hibernate
|
||||
double-unlock).
|
||||
|
||||
@@ -33,8 +33,11 @@
|
||||
{ mods = "$mod"; key = "X"; action = "exec, nomarchy-menu power"; desc = "Power menu"; }
|
||||
|
||||
{ mods = "$mod"; key = "N"; action = "exec, swaync-client -t"; desc = "Notification centre"; }
|
||||
# SUPER+? (the "question" keysym already implies Shift on most layouts).
|
||||
{ mods = "$mod"; key = "question"; action = "exec, nomarchy-menu keybinds"; desc = "Keybindings cheatsheet"; }
|
||||
# SUPER+? — ? is typed as Shift+/, so SHIFT must be in the bind's
|
||||
# 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
|
||||
# nomarchy-menu module (all also reachable from the SUPER+M picker).
|
||||
|
||||
@@ -117,7 +117,10 @@ let
|
||||
let m = lib.replaceStrings [ "$mod" ] [ "SUPER" ] b.mods;
|
||||
prefix = if m == "" then "" else lib.concatStringsSep " + " (lib.splitString " " m) + " + ";
|
||||
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 =
|
||||
map (b: padRight 22 (prettyKeys b) + b.desc) (keybinds.binds
|
||||
++ lib.optionals (lib.hasInfix "," cfg.keyboard.layout)
|
||||
|
||||
Reference in New Issue
Block a user