Conversation
SUPER+C/V/X/A inject Ctrl chords via send_key_state using letter keysyms. On a non-Latin active layout those keysyms are missing, so Hyprland errors with "key not found" and paste/copy/cut/select-all do nothing. Send the physical XKB keycodes instead so the chords stay layout-independent. Fixes omacom#12570
|
One source-supported regression: fixed QWERTY positions change the injected shortcut on other Latin layouts. Preserve logical letters on non-QWERTY layoutsThe new keycode constants bypass keysym lookup, but a physical keycode does not preserve the letter across layouts. With a single Dvorak layout ( Source-traced normal-application chords, not observed application behavior:
Hyprland 0.56.2 accepts Impact: these shortcuts can invoke unrelated actions or do nothing instead of copy/paste/cut/select-all. Ctrl+Q can quit applications that bind it; individual client reactions were not tested. Suggested change: preserve logical letter selection on non-QWERTY layouts. Make the non-Latin fallback aware of the layout used for the injected event, rather than applying US physical positions globally. Verified: source inspection confirms that Review informationTest scope: conclusions are supported by pinned Omarchy/Hyprland source and XKB layout definitions. No compositor or application-level clipboard testing; proposed corrections are untested. Community review: Independent automated community review, unaffiliated with the Omarchy team, intended to help prepare PRs for their review. Automated AI review: Astra Medium initial inspection and synthesis, independent Opus 5.5 High and GPT 6 Sol Xhigh technical reviews, and a fresh Astra Medium editorial check. |
Summary
Universal copy/paste/cut/select-all (
SUPER+C/V/X/A) synthesizeCtrlchords withsend_key_stateusing letter keysym names. When the active XKB layout is non-Latin (e.g. Russian), those keysyms are absent from the keymap, Hyprland reportskey not found, and the shortcut does nothing.Send the physical XKB keycodes (
code:38/53/54/55for A/X/C/V) instead so the injected chords stay layout-independent. Terminal still getsCtrl+Shift+C/Von the same physical keys.Why still needed
Still broken on current
quattro. Prior attempts (#9130, #7283, and several closed duplicates) are CONFLICTING/DIRTY againstquattro, so this is a fresh minimal tip.Test plan
bash test/shell.d/hyprland-default-config-test.shkb_layout = us,ruand Russian active:SUPER+Vpastes,SUPER+Ccopies (no Hyprland "key not found" toast)Ctrl+Shift+C/V)Fixes #12570