Add duplicate bindings for terminals that support enhanced keys #139
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.
I enabled the Kitty keyboard enhancements in ulyssa/iamb#272, but this broke using some keybindings like
<C-I>
and<C-[>
since they no longer get sent as<Tab>
and<Esc>
respectively. These (and similar) should have duplicate entries in the Vim and Emacs keybindings so that enabling improved keypresses doesn't break using them. The key parsing code should also stop pretending that these are always the same keys, since people could reasonable want to set up custom mappings for one but not the other when using a terminal that supports sending theCSI u
sequences.There is a little bit of trickiness here: the crossterm representation for some keypresses like Alt+Shift+J sometimes uses
j
(Kitty keyboard enhancement protocol) and sometimes usesJ
(non-enhanced). I've tried to help avoid running into issues with this difference by normalizing keys and modifiers inTerminalKey::new
.