39c967c33b734a45487f4d72041dd19fa461f52d
Three correctness fixes to the hotkey recorder based on dogfood logs: 1. Modifier set now includes Super / OS / Hyper (webkit2gtk on Linux fires e.key === "Super" for the Windows key — previously that key got captured as the final trigger, producing invalid 'Ctrl+Shift+Super' strings the evdev parser rejected). 2. resolveTriggerKey() uses e.code (physical, shift-independent key) to resolve shifted punctuation back to the unshifted name the evdev parser understands: '+' -> '=', '|' -> '\\', etc. Letters and digits also use e.code (KeyA -> A, Digit1 -> 1) to avoid layout quirks. 3. Numpad keys intentionally not mapped to main-keyboard equivalents — they are distinct evdev codes. Leaves the parser to reject them so the user gets a toast instead of a silently-wrong binding. Registration failures now surface as a toast and revert settings.globalHotkey to the last successfully-registered value (if any), so the UI cannot lie about what is actually bound. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
Languages
Rust
56.1%
Svelte
26.8%
TypeScript
7.8%
Shell
3.2%
HTML
2.4%
Other
3.7%