From fb67770ed697ed4898f9019640bb389f2f6f588e Mon Sep 17 00:00:00 2001 From: "Diogo Franco (Kovensky)" Date: Thu, 25 Jul 2013 21:08:39 -0300 Subject: getch2: Support ESC keypresses again Due to the termcap matching and the hardcoded fallbacks, the ESC keypress has to be followed by another non-matching keypress (such as another ESC) for it to be accepted. We drop the second ESC in case it was typed twice. --- osdep/getch2.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'osdep') diff --git a/osdep/getch2.c b/osdep/getch2.c index 4ac955788c..4917a19827 100644 --- a/osdep/getch2.c +++ b/osdep/getch2.c @@ -386,7 +386,15 @@ bool getch2(struct input_ctx *input_ctx) if (utf8_len > 1) { state = STATE_UTF8; } else if (utf8_len == 1) { - mp_input_put_key(input_ctx, c); + switch (c) { + case 0x1b: /* ESC that's not part of escape sequence */ + mp_input_put_key(input_ctx, MP_KEY_ESC); + if (getch2_len > 1 && getch2_buf[1] == 0x1b) + walk_buf(1) /* eat the second ESC if it was typed twice */ + break; + default: + mp_input_put_key(input_ctx, c); + } walk_buf(1); } else walk_buf(getch2_pos); -- cgit v1.2.3