diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-04-22 20:39:43 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-04-22 20:43:59 -0700 |
commit | 8e7827dfcf15ccbbade3e5d58c340dd5f72b7208 (patch) | |
tree | 3dcc48c2aa05041e4c2816810fe2dd92d4e9caef | |
parent | f674c4a51d760722867070defed638f246d79205 (diff) | |
download | mu-8e7827dfcf15ccbbade3e5d58c340dd5f72b7208.tar.gz |
1144 - dump termbox's support for modifier keys
-rw-r--r-- | cpp/termbox/input.inl | 43 | ||||
-rw-r--r-- | cpp/termbox/termbox.c | 22 | ||||
-rw-r--r-- | cpp/termbox/termbox.h | 4 |
3 files changed, 9 insertions, 60 deletions
diff --git a/cpp/termbox/input.inl b/cpp/termbox/input.inl index 8a4a14de..6493273c 100644 --- a/cpp/termbox/input.inl +++ b/cpp/termbox/input.inl @@ -1,20 +1,3 @@ -/* Sets the termbox input mode. Termbox has two input modes: - * 1. Esc input mode. - * When ESC sequence is in the buffer and it doesn't match any known - * ESC sequence => ESC means TB_KEY_ESC. - * 2. Alt input mode. - * When ESC sequence is in the buffer and it doesn't match any known - * sequence => ESC enables TB_MOD_ALT modifier for the next keyboard event. - * - * If 'mode' is TB_INPUT_CURRENT, it returns the current input mode. - */ -int tb_select_input_mode(int mode); -/* Possible values for mode. */ -#define TB_INPUT_CURRENT 0x0 -#define TB_INPUT_ESC 0x1 -#define TB_INPUT_ALT 0x2 -#define TB_INPUT_MOUSE 0x4 - // if s1 starts with s2 returns true, else false // len is the length of s1 // s2 should be null-terminated @@ -78,7 +61,7 @@ static int parse_escape_seq(struct tb_event *event, const char *buf, int len) return 0; } -static bool extract_event(struct tb_event *event, struct bytebuffer *inbuf, int inputmode) +static bool extract_event(struct tb_event *event, struct bytebuffer *inbuf) { const char *buf = inbuf->buf; const int len = inbuf->len; @@ -96,25 +79,11 @@ static bool extract_event(struct tb_event *event, struct bytebuffer *inbuf, int bytebuffer_truncate(inbuf, n); return success; } else { - // it's not escape sequence, then it's ALT or ESC, - // check inputmode - if (inputmode&TB_INPUT_ESC) { - // if we're in escape mode, fill ESC event, pop - // buffer, return success - event->ch = 0; - event->key = TB_KEY_ESC; - event->mod = 0; - bytebuffer_truncate(inbuf, 1); - return true; - } - if (inputmode&TB_INPUT_ALT) { - // if we're in alt mode, set ALT modifier to - // event and redo parsing - event->mod = TB_MOD_ALT; - bytebuffer_truncate(inbuf, 1); - return extract_event(event, inbuf, inputmode); - } - assert(!"never got here"); + // it's not escape sequence; assume it's esc + event->ch = 0; + event->key = TB_KEY_ESC; + bytebuffer_truncate(inbuf, 1); + return true; } } diff --git a/cpp/termbox/termbox.c b/cpp/termbox/termbox.c index 616a2539..3ecc0b4b 100644 --- a/cpp/termbox/termbox.c +++ b/cpp/termbox/termbox.c @@ -40,7 +40,6 @@ static struct bytebuffer input_buffer; static int termw = -1; static int termh = -1; -static int inputmode = TB_INPUT_ESC; static int outputmode = TB_OUTPUT_NORMAL; static int inout; @@ -269,21 +268,6 @@ void tb_clear(void) cellbuf_clear(&back_buffer); } -int tb_select_input_mode(int mode) -{ - if (mode) { - inputmode = mode; - if (mode&TB_INPUT_MOUSE) { - bytebuffer_puts(&output_buffer, funcs[T_ENTER_MOUSE]); - bytebuffer_flush(&output_buffer, inout); - } else { - bytebuffer_puts(&output_buffer, funcs[T_EXIT_MOUSE]); - bytebuffer_flush(&output_buffer, inout); - } - } - return inputmode; -} - int tb_select_output_mode(int mode) { if (mode) @@ -597,7 +581,7 @@ static int wait_fill_event(struct tb_event *event, struct timeval *timeout) // try to extract event from input buffer, return on success event->type = TB_EVENT_KEY; - if (extract_event(event, &input_buffer, inputmode)) + if (extract_event(event, &input_buffer)) return event->type; // it looks like input buffer is incomplete, let's try the short path, @@ -605,7 +589,7 @@ static int wait_fill_event(struct tb_event *event, struct timeval *timeout) int n = read_up_to(ENOUGH_DATA_FOR_PARSING); if (n < 0) return -1; - if (n > 0 && extract_event(event, &input_buffer, inputmode)) + if (n > 0 && extract_event(event, &input_buffer)) return event->type; // n == 0, or not enough data, let's go to select @@ -627,7 +611,7 @@ static int wait_fill_event(struct tb_event *event, struct timeval *timeout) if (n == 0) continue; - if (extract_event(event, &input_buffer, inputmode)) + if (extract_event(event, &input_buffer)) return event->type; } if (FD_ISSET(winch_fds[0], &events)) { diff --git a/cpp/termbox/termbox.h b/cpp/termbox/termbox.h index 73ee53b6..3e2228de 100644 --- a/cpp/termbox/termbox.h +++ b/cpp/termbox/termbox.h @@ -83,7 +83,6 @@ void tb_change_cell(int x, int y, uint32_t ch, uint16_t fg, uint16_t bg); struct tb_event { uint8_t type; /* fields for type TB_EVENT_KEY */ - uint8_t mod; uint16_t key; uint32_t ch; /* fields for type TB_EVENT_RESIZE */ @@ -99,9 +98,6 @@ struct tb_event { #define TB_EVENT_RESIZE 2 #define TB_EVENT_MOUSE 3 -/* Possible values for tb_event.mod. */ -#define TB_MOD_ALT 0x01 - /* Possible values for tb_event.key. * * These are a safe subset of terminfo keys, which exist on all popular |