diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-09-02 19:18:24 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-09-02 19:18:37 -0700 |
commit | 4d6b5173e744173074e191976eb872349a661cd0 (patch) | |
tree | eb40569e8ce86bd3012d8054099e409dd7bde274 /termbox/input.inl | |
parent | 7dcdd40c2749f5aff5ea9553acdba9e1218e90d1 (diff) | |
download | mu-4d6b5173e744173074e191976eb872349a661cd0.tar.gz |
2132 - support for ctrl + arrow keys
Diffstat (limited to 'termbox/input.inl')
-rw-r--r-- | termbox/input.inl | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/termbox/input.inl b/termbox/input.inl index 4cbba0a5..97ea1190 100644 --- a/termbox/input.inl +++ b/termbox/input.inl @@ -80,6 +80,26 @@ static int parse_escape_seq(struct tb_event *event, const char *buf, int len) event->key = TB_KEY_END_PASTE; return strlen("\033[201~"); } + if (starts_with(buf, len, "\033[1;5A")) { + event->ch = 0; + event->key = TB_KEY_CTRL_ARROW_UP; + return strlen("\033[1;5A"); + } + if (starts_with(buf, len, "\033[1;5B")) { + event->ch = 0; + event->key = TB_KEY_CTRL_ARROW_DOWN; + return strlen("\033[1;5B"); + } + if (starts_with(buf, len, "\033[1;5C")) { + event->ch = 0; + event->key = TB_KEY_CTRL_ARROW_RIGHT; + return strlen("\033[1;5C"); + } + if (starts_with(buf, len, "\033[1;5D")) { + event->ch = 0; + event->key = TB_KEY_CTRL_ARROW_LEFT; + return strlen("\033[1;5D"); + } return 0; } @@ -97,9 +117,8 @@ static bool extract_event(struct tb_event *event, struct bytebuffer *inbuf) //? FOO("%x\n", (unsigned char)buf[x]); //? } if (buf[0] == '\033') { -//? FOO("AAA\n"); int n = parse_escape_seq(event, buf, len); -//? FOO("AAA: %u %u %u %u\n", n, (unsigned int)event->type, (unsigned int)event->key, event->ch); +//? FOO("parsed: %u %u %u %u\n", n, (unsigned int)event->type, (unsigned int)event->key, event->ch); if (n != 0) { bool success = true; if (n < 0) { |