mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-04 04:06:06 -05:00
input: kitty: always treat composed characters as ‘printable’
Certain dead key combinations results different escape sequences in
foot, compared to kitty, when the kitty keyboard protocol is used.
if (composed && is_text)
key = utf32;
else {
key = xkb_keysym_to_utf32(sym_to_use);
if (key == 0)
return false;
/* The *shifted* key. May be the same as the unshifted
* key - if so, this is filtered out below, when
* emitting the CSI */
alternate = xkb_keysym_to_utf32(sym);
}
If is_text=false, we’ll fall through to the non-composed
logic. is_text is set to true if the character is printable *and*
there aren’t any non-consumed modifiers enabled.
shift+space is one example where shift is *not* consumed (typically -
may be layouts where it is).
As a result, pressing ", followed by shift+space with the
international english keyboard layout (where " is a dead key) results
in different sequences in foot and kitty.
This patch fixes this by always treating composed characters as
printable.
Closes #1120
This commit is contained in:
parent
4abf46955f
commit
801970aa33
2 changed files with 5 additions and 1 deletions
|
|
@ -88,11 +88,15 @@
|
|||
* Crash when application emitted an invalid `CSI 38;5;<idx>m`, `CSI
|
||||
38:5:<idx>m`, `CSI 48;5;<idx>m` or `CSI 48:5:<idx>m` sequence
|
||||
([#1111][1111]).
|
||||
* Certain dead-key combinations resulting in different escape
|
||||
sequences compared to kitty, when the kitty keyboard protocol is
|
||||
used ([#1120][1120]).
|
||||
|
||||
[1055]: https://codeberg.org/dnkl/foot/issues/1055
|
||||
[1092]: https://codeberg.org/dnkl/foot/issues/1092
|
||||
[1097]: https://codeberg.org/dnkl/foot/issues/1097
|
||||
[1111]: https://codeberg.org/dnkl/foot/issues/1111
|
||||
[1120]: https://codeberg.org/dnkl/foot/issues/1120
|
||||
|
||||
|
||||
### Security
|
||||
|
|
|
|||
2
input.c
2
input.c
|
|
@ -1239,7 +1239,7 @@ emit_escapes:
|
|||
? ctx->level0_syms.syms[0]
|
||||
: sym;
|
||||
|
||||
if (composed && is_text)
|
||||
if (composed)
|
||||
key = utf32;
|
||||
else {
|
||||
key = xkb_keysym_to_utf32(sym_to_use);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue