Add more complete support for kitty keyboard protocol
We support the basic
CSI u encoding, upon which the kitty keyboard protocol is based, but there are a number of things we need to do before we can enable the full kitty protocol at startup.
The first thing to figure out is how to properly support binding e.g. Ctrl+Shift+q and Ctrl+q as separate key combos. Due to the way key bindings were handled historically, both in dte itself and in terminals in general, these 2 combos are currently ambiguous and effectively inseparable. This stemmed from the fact that older terminals never sent distinct escape sequences for e.g. Ctrl+Shift+q - they either reserved the Ctrl+Shift prefix for their own internal bindings or sent key sequences to the client as if Shift wasn't pressed.
parse_key_string()to interpret either
C-cas Ctrl+c (for backwards compat.).
C-S-cis Ctrl+Shift+c (previously unbindable).
parse_key_string()to translate e.g.
M-S-a(for backwards compat.). These 2 now result in the same
KeyCode, but the latter is considered the canonical form.
Update various quirks in
KeyCodenormalization, to reflect the above changes.
\e[>1uat startup, for supported terminals.
Update built-in key bindings (in
config/binding/default) with new canonical key strings.
Update example key strings in documentation to new canonical form.
Add support for "report alternate keys" mode (
0b100) and start emitting
Prefer "base layout key", if present.
Allow binding Ctrl+i separately from Tab.
Allow binding Ctrl+m separately from Enter.
Allow binding Ctrl+[ separately from Esc.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information