Shift does not alter input produced by [Control-]BackSpace
As far as I can tell, BackSpace and Shift-BackSpace produce the same input (
^?) and cannot be differentiated by programs running in the terminal. The same is true of Control-BackSpace and Control-Shift-BackSpace (which produce
^H). Could foot provide some way of making these key sequences produce different inputs which programs running in the terminal could distinguish?
Arrow keys and the Delete key, for example, produce different input sequences in all these cases.
This could plausibly be solved as part of #325, but doesn't strictly require customizability.
This is a longstanding weakness of the xterm input protocol (which most other terminals emulate) and is quite well documented here.
foot already does emit some distinct escape sequences for certain extended keys (beyond the basic xterm protocol) but, as you've seen, it's still not comprehensive.
In theory it's possible for foot to start emitting distinct sequences for some of the key combos that are still missing, but it's not possible to solve all of the weaknesses of the xterm protocol in a way that doesn't cause breakage in apps that aren't prepared to deal with it. Hence why the new kitty keyboard protocol (also described in the link above) is only enabled on request and has various levels of verbosity depending on the needs of the application.
There are a few extended keyboard modes that can be enabled on request in xterm (and other terminals), but they're quite limited and (IMO) poorly designed.
I think applicatations that want to support binding any and all key combos would be best served by supporting the kitty protocol. The basic encoding scheme is already supported by some applications (and other terminals) because it's based on the existing CSI u encoding that was proposed separately a few years back.
There's already an open issue (#319) to track adding support for this new protocol to foot.
Ok, it sounds like this can be considered a dupe/subset of implementing Kitty's protocol. Thanks for the explanation.
Deleting a branch is permanent. It CANNOT be undone. Continue?