Repository navigation
Reserve first keymap slot so the first character is not typed on the Escape keycode - #79
Open
rockets-cn wants to merge 1 commit into
Open
rockets-cn wants to merge 1 commit into
rockets-cn wants to merge 1 commit into
Conversation
…Escape keycode wtype maps its N-th unique character to physical keycode N+8 in the generated XKB keymap, so the first character always lands on keycode 9 -- the physical position of the Escape key. Compositors route virtual-keyboard key index N to keycode N+8, which means the first character's key event carries the Escape keycode. Chromium special-cases key events on the Escape keycode: for non-ASCII (Unicode-range) keysyms the character is never inserted, so the first character typed into Chromium-based apps (browsers, Electron, VS Code) silently disappears. ASCII characters and apps that do not special-case Escape (e.g. foot) are unaffected. Fix by reserving keymap slot 1 as a NoSymbol placeholder so the first real character starts at slot 2 (physical keycode 10). Repro: focus a browser input field, run: wtype -- "今天天气" -> only "天天" is inserted (first char dropped). Verified fixed with Chromium 155 on Wayland (Hyprland + fcitx5) and foot.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reserve first keymap slot so the first character is not typed on the Escape keycode
wtype maps its N-th unique character to physical keycode N+8 in the
generated XKB keymap, so the first character always lands on keycode 9
-- the physical position of the Escape key. Compositors route
virtual-keyboard key index N to keycode N+8, which means the first
character's key event carries the Escape keycode.
Chromium special-cases key events on the Escape keycode: for
non-ASCII (Unicode-range) keysyms the character is never inserted, so
the first character typed into Chromium-based apps (browsers, Electron,
VS Code) silently disappears. ASCII characters and apps that do not
special-case Escape (e.g. foot) are unaffected.
Fix by reserving keymap slot 1 as a NoSymbol placeholder so the first
real character starts at slot 2 (physical keycode 10).
Repro: focus a browser input field, run: wtype -- "今天天气"
-> only "天天" is inserted (first char dropped). Verified fixed with
Chromium 155 on Wayland (Hyprland + fcitx5) and foot.