Tim Culverhouse
fb649e689d
input(kitty): fix reporting of alternate keys
...
Fix reporting of alternate keys when using the kitty protocol. Alternate
keyboard layouts were failing to report the "base layout" key. This
implementation now matches kitty's output 1:1, and has some added unit
tests for cyrillic characters.
This also fixes a bug where a caps_lock modified key would report the
shifted key as well. The protocol explicitly requires that shifted keys
are only reported if the shift modifier is true.
2023-09-29 06:37:08 -05:00
Mitchell Hashimoto
35a4427f54
input: 0x7F is a control character, use helper
...
Fixes #556
One check for control chars was missing 0x7F. Since we do this three
times, extract it to a helper and call that.
2023-09-27 07:57:21 -07:00
Mitchell Hashimoto
9ad27924a6
input: correct xterm encoding for modified F1-F4
...
Fixes #499
2023-09-20 14:33:55 -07:00
Mitchell Hashimoto
62a35417ab
input: kitty alternates and text should not include control characters
2023-09-19 15:18:00 -07:00
Mitchell Hashimoto
39c2332d35
input: keypad enter should act as normal "\r" if no other seq matches
...
This matches Kitty behavior on both macOS and Linux. In certain keyboard
modes and Kitty keyboard modes, the behavior changes but those already
matched (tested).
2023-08-26 07:43:22 -07:00
Mitchell Hashimoto
e7c11f7d13
input: kitty should not encode modifier-only key unless "report all"
2023-08-24 21:24:41 -07:00
Mitchell Hashimoto
3a93aaf9cf
apprt/embedded: do not translate control characters
...
macOS translates inputs such as shift+tab into the control character tab
(ascii 0x09). Linux/GTK does not translate character inputs except to
printable characters. We don't want control character translations
because these are all handled manually by our key encoder (i.e.
translating ctrl+c to 0x03).
2023-08-24 15:01:57 -07:00
Mitchell Hashimoto
5e45dc3386
input: kitty encoding should only output unmodified utf8 if printable
2023-08-22 15:00:53 -07:00
Mitchell Hashimoto
99abff85dd
input: pc style function keys should use all mods, not effective
2023-08-21 08:10:27 -07:00
Mitchell Hashimoto
b7e1122224
input: remove old TODO. This is handled now in the app runtimes
2023-08-17 12:59:22 -07:00
Mitchell Hashimoto
91456fe420
input: repeat events need to be handled for Kitty w/o report events
2023-08-17 11:23:13 -07:00
Mitchell Hashimoto
78080f0cd6
input: proper optional entry handling
2023-08-17 09:52:44 -07:00
Mitchell Hashimoto
6493da0dd3
input: Kitty encodes alternate keys
2023-08-17 09:51:16 -07:00
Mitchell Hashimoto
37daf02804
core: use Kitty encoding if enabled
2023-08-17 09:02:43 -07:00
Mitchell Hashimoto
fb9dc74b29
input: lot more Kitty encoding logic
2023-08-17 08:55:37 -07:00
Mitchell Hashimoto
91ba53b081
input: KittySequence for encoding sequences
2023-08-17 08:43:40 -07:00
Mitchell Hashimoto
c5177f6609
input: begin kitty key encoding logic (not working yet)
2023-08-16 22:08:16 -07:00
Mitchell Hashimoto
9cef09c58d
input: do not send ctrl-sequences for ctrl-i,m,[
2023-08-16 14:17:31 -07:00
Mitchell Hashimoto
2ff2e018ba
input: clarify why we use all mods for unicode CSI u
2023-08-16 14:04:38 -07:00
Mitchell Hashimoto
dcf9cdd8bf
input: CSI u encoding for modified unicode chars
2023-08-16 13:57:17 -07:00
Mitchell Hashimoto
c254a8b09e
input: encoding should always write to the buf
2023-08-16 12:48:48 -07:00
Mitchell Hashimoto
aadb78394b
input: legacy encoding never emits sequence during dead key state
2023-08-16 12:48:48 -07:00
Mitchell Hashimoto
9b90692fc7
core: start on key2Callback for the new callback that uses KeyEncoder
2023-08-16 12:48:48 -07:00
Mitchell Hashimoto
a2d4e7ce29
input: legacy key encoding handles alt-as-esc for general utf8
2023-08-16 12:48:48 -07:00
Mitchell Hashimoto
871f797758
input: KeyEncoder handles the charCallback stuff now too
2023-08-16 12:48:48 -07:00
Mitchell Hashimoto
6555bb1410
input: KeyEncoder legacy encoding handles old keyCallback logic
2023-08-16 12:48:48 -07:00
Mitchell Hashimoto
f57fd99d3e
input: starting to work on KeyEncoder, got ctrl sequences
2023-08-16 12:48:48 -07:00