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 | |
parent | 7dcdd40c2749f5aff5ea9553acdba9e1218e90d1 (diff) | |
download | mu-4d6b5173e744173074e191976eb872349a661cd0.tar.gz |
2132 - support for ctrl + arrow keys
Diffstat (limited to 'termbox')
-rw-r--r-- | termbox/input.inl | 23 | ||||
-rw-r--r-- | termbox/termbox.h | 8 |
2 files changed, 27 insertions, 4 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) { diff --git a/termbox/termbox.h b/termbox/termbox.h index a94d2b85..d52f2565 100644 --- a/termbox/termbox.h +++ b/termbox/termbox.h @@ -130,8 +130,12 @@ struct tb_event { #define TB_KEY_MOUSE_RELEASE (0xFFFF-25) #define TB_KEY_MOUSE_WHEEL_UP (0xFFFF-26) #define TB_KEY_MOUSE_WHEEL_DOWN (0xFFFF-27) -#define TB_KEY_START_PASTE (0xFFFF-28) -#define TB_KEY_END_PASTE (0xFFFF-29) +#define TB_KEY_START_PASTE (0xFFFF-28) +#define TB_KEY_END_PASTE (0xFFFF-29) +#define TB_KEY_CTRL_ARROW_UP (0xFFFF-30) +#define TB_KEY_CTRL_ARROW_DOWN (0xFFFF-31) +#define TB_KEY_CTRL_ARROW_LEFT (0xFFFF-32) +#define TB_KEY_CTRL_ARROW_RIGHT (0xFFFF-33) /* These are all ASCII code points below SPACE character and a BACKSPACE key. */ #define TB_KEY_CTRL_TILDE 0x00 #define TB_KEY_CTRL_2 0x00 /* clash with 'CTRL_TILDE' */ |