billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=28fcabc8604a41d53a2efc9bd2ad90ffc562f4a7
commit 28fcabc8604a41d53a2efc9bd2ad90ffc562f4a7 Author: Boris Faure <bill...@gmail.com> Date: Sun Mar 2 11:06:46 2014 +0100 fix Alt+X. Adopt the rxvt way. Closes T713 --- src/bin/keyin.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++----- src/bin/termio.c | 7 +---- 2 files changed, 76 insertions(+), 13 deletions(-) diff --git a/src/bin/keyin.c b/src/bin/keyin.c index 7fd222d..3347470 100644 --- a/src/bin/keyin.c +++ b/src/bin/keyin.c @@ -77,8 +77,57 @@ static const Keyout alt_keyout[] = KEY("Right", "\033[1;3C"), KEY("Up", "\033[1;3A"), KEY("Down", "\033[1;3B"), + KEY("End", "\033[1;3F"), KEY("BackSpace", "\033\177"), - + KEY("Return", "\033\015"), + KEY("space", "\033\040"), + KEY("Home", "\033[1;3H"), + KEY("End", "\033[1;3F"), + KEY("Prior", "\033[5;3~"), + KEY("Next", "\033[6;3~"), + KEY("Insert", "\033[2;3~"), + KEY("Delete", "\033[3;3~"), + KEY("Menu", "\033[29;3~"), + KEY("Find", "\033[1;3~"), + KEY("Help", "\033[28;3~"), + KEY("Execute", "\033[3;3~"), + KEY("Select", "\033[4;3~"), + KEY("F1", "\033[11;3~"), // \033OP + KEY("F2", "\033[12;3~"), // \033OQ + KEY("F3", "\033[13;3~"), // \033OR + KEY("F4", "\033[14;3~"), // \033OR + KEY("F5", "\033[15;3~"), + KEY("F6", "\033[17;3~"), + KEY("F7", "\033[18;3~"), + KEY("F8", "\033[19;3~"), + KEY("F9", "\033[20;3~"), + KEY("F10", "\033[21;3~"), + KEY("F11", "\033[23;3~"), + KEY("F12", "\033[24;3~"), + KEY("F13", "\033[25;3~"), + KEY("F14", "\033[26;3~"), + KEY("F15", "\033[28;3~"), + KEY("F16", "\033[29;3~"), + KEY("F17", "\033[31;3~"), + KEY("F18", "\033[32;3~"), + KEY("F19", "\033[33;3~"), + KEY("F20", "\033[34;3~"), + KEY("F21", "\033[35;3~"), + KEY("F22", "\033[36;3~"), + KEY("F23", "\033[37;3~"), + KEY("F24", "\033[38;3~"), + KEY("F25", "\033[39;3~"), + KEY("F26", "\033[40;3~"), + KEY("F27", "\033[41;3~"), + KEY("F28", "\033[42;3~"), + KEY("F29", "\033[43;3~"), + KEY("F30", "\033[44;3~"), + KEY("F31", "\033[45;3~"), + KEY("F32", "\033[46;3~"), + KEY("F33", "\033[47;3~"), + KEY("F34", "\033[48;3~"), + KEY("F35", "\033[49;3~"), + KEY(NULL, "END") }; @@ -220,13 +269,16 @@ void keyin_handle(Termpty *ty, Evas_Event_Key_Down *ev, int alt, int shift, int ctrl) { - if (ty->state.crlf) - { - if (_key_try(ty, crlf_keyout, ev)) return; - } - else + if (!alt) { - if (_key_try(ty, nocrlf_keyout, ev)) return; + if (ty->state.crlf) + { + if (_key_try(ty, crlf_keyout, ev)) return; + } + else + { + if (_key_try(ty, nocrlf_keyout, ev)) return; + } } if ( ((ty->state.alt_kp) && (shift)) @@ -268,6 +320,22 @@ keyin_handle(Termpty *ty, Evas_Event_Key_Down *ev, else if (alt) { if (_key_try(ty, alt_keyout, ev)) return; + if (ev->key[0] > 0 && ev->key[1] == '\0') + { + char echo[2]; + /* xterm and rxvt differ here about their default options: */ + /* xterm, altSendsEscape off + + echo[0] = ev->key[0] | 0x80; + termpty_write(ty, echo, 1); + */ + + /* rxvt, with meta8 off, chose it because of utf-8 */ + echo[0] = 033; + echo[1] = ev->key[0]; + termpty_write(ty, echo, 2); + return; + } } if (ty->state.appcursor) diff --git a/src/bin/termio.c b/src/bin/termio.c index d6b400f..ff2eff7 100644 --- a/src/bin/termio.c +++ b/src/bin/termio.c @@ -2190,12 +2190,6 @@ _smart_cb_key_down(void *data, Evas *e EINA_UNUSED, evas_object_smart_callback_call(data, "cmdbox", NULL); goto end; } - else if (!strcmp(ev->key, "Return")) - { - _compose_seq_reset(sd); - _paste_selection(data, ELM_SEL_TYPE_PRIMARY); - goto end; - } } if ((alt) && (ctrl) && (!shift)) { @@ -2278,6 +2272,7 @@ _smart_cb_key_down(void *data, Evas *e EINA_UNUSED, } else goto end; } + keyin_handle(sd->pty, ev, alt, shift, ctrl); end: if (sd->config->flicker_on_key) --