diff options
author | Samuel Mendoza-Jonas <sam@mendozajonas.com> | 2017-11-20 12:59:26 +1100 |
---|---|---|
committer | Samuel Mendoza-Jonas <sam@mendozajonas.com> | 2017-11-21 14:23:05 +1100 |
commit | 33a0f544151f44bb58924ad281aaca2dc58fe561 (patch) | |
tree | 6338043a97f91fd81f99ded4c14d88e4d6e487d5 | |
parent | 3a76e4214d5ca666e1d2d6c74e84309064c8a3ab (diff) | |
download | talos-petitboot-33a0f544151f44bb58924ad281aaca2dc58fe561.tar.gz talos-petitboot-33a0f544151f44bb58924ad281aaca2dc58fe561.zip |
ui/ncurses: Handle arrow key variants
In the vt100 'application' cursor mode arrow keys produce ^[Ox rather
than the usual ^[[x. Add this pattern to our defined keys so we don't
accidentally catch the escape key.
For reference:
http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-21.html
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
-rw-r--r-- | ui/ncurses/nc-cui.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c index 8060510..64b1f64 100644 --- a/ui/ncurses/nc-cui.c +++ b/ui/ncurses/nc-cui.c @@ -98,8 +98,18 @@ static void cui_start(void) define_key("\x1b\x4f\x46", KEY_END); define_key("OH", KEY_HOME); define_key("OF", KEY_END); + + /* Arrow keys in normal cursor mode */ define_key("\x1b\x5b\x41", KEY_UP); define_key("\x1b\x5b\x42", KEY_DOWN); + define_key("\x1b\x5b\x43", KEY_RIGHT); + define_key("\x1b\x5b\x44", KEY_LEFT); + /* Arrow keys in "application" cursor mode */ + define_key("\x1b\x4f\x41", KEY_UP); + define_key("\x1b\x4f\x42", KEY_DOWN); + define_key("\x1b\x4f\x43", KEY_RIGHT); + define_key("\x1b\x4f\x44", KEY_LEFT); + define_key("\x1b\x5b\x33\x7e", KEY_DC); while (getch() != ERR) /* flush stdin */ |