feat: keycode resolution, keycode triggers #3366
Open
+162
−11
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.
Solves the issues with multiple layouts and exotic xkb keymaps behaving undesirably. By allowing for binds to physical keys and/or resolving all keybinds against default xkb layout. This allows niri to match behavior of majority of applications in regards with keysym resolution and mapping.
Related discussions: #3255 (solves), #2134 (useful proposal, but stale), #1919 (solves),
Related issues: #283 (solves)
Similar PR: #1920 (draft)
Note on variants: Pull request contains two variants for the same functionality provided in two commits. Cleaner (var2) and "Safer" (var1). Var1 is not much safer because avoiding xkb mutex lock and unwrap doesn't yeild any significant performance, nor will it remove other unwraps used by the libraries handling xkb connection.