From ad5812a70d602eb70c687cff5c8827ffdecdfe93 Mon Sep 17 00:00:00 2001 From: Boris Faure Date: Mon, 14 Aug 2023 20:27:53 +0200 Subject: [PATCH] termptyesc: handle alternate escape (7728) --- src/bin/keyin.c | 4 ++++ src/bin/termpty.h | 1 + src/bin/termptyesc.c | 4 ++++ src/bin/termptyops.c | 1 + 4 files changed, 10 insertions(+) diff --git a/src/bin/keyin.c b/src/bin/keyin.c index fcfedb44..02ec473c 100644 --- a/src/bin/keyin.c +++ b/src/bin/keyin.c @@ -139,6 +139,10 @@ keyin_handle_key_to_pty(Termpty *ty, const Evas_Event_Key_Down *ev, { TERMPTY_WRITE_STR("\033O["); } + else if (ty->termstate.alternate_esc) + { + TERMPTY_WRITE_STR("\034"); + } else { if (alt) diff --git a/src/bin/termpty.h b/src/bin/termpty.h index 429f7386..28530084 100644 --- a/src/bin/termpty.h +++ b/src/bin/termpty.h @@ -133,6 +133,7 @@ typedef struct tag_Term_State { unsigned int combining_strike : 1; unsigned int sace_rectangular : 1; unsigned int esc_keycode : 1; + unsigned int alternate_esc : 1; int xmod[6]; } Term_State; diff --git a/src/bin/termptyesc.c b/src/bin/termptyesc.c index 44d4a6e4..08f92f22 100644 --- a/src/bin/termptyesc.c +++ b/src/bin/termptyesc.c @@ -547,6 +547,10 @@ _handle_esc_csi_reset_mode(Termpty *ty, Eina_Unicode cc, Eina_Unicode *b, DBG("%s application escape mode", mode ? "enable" : "disable"); ty->termstate.esc_keycode = !!mode; break; + case 7728: + DBG("%s alternate escape", mode ? "enable" : "disable"); + ty->termstate.alternate_esc = !!mode; + break; case 7766: // ignore WRN("TODO: %s scrollbar", mode ? "hide" : "show"); ty->decoding_error = EINA_TRUE; diff --git a/src/bin/termptyops.c b/src/bin/termptyops.c index cd7458da..e07ad68a 100644 --- a/src/bin/termptyops.c +++ b/src/bin/termptyops.c @@ -452,6 +452,7 @@ termpty_soft_reset_state(Termpty *ty) ty->termstate.hide_cursor = 0; ty->termstate.sace_rectangular = 0; ty->termstate.esc_keycode = 0; + ty->termstate.alternate_esc = 0; ty->mouse_mode = MOUSE_OFF; ty->mouse_ext = MOUSE_EXT_NONE; ty->bracketed_paste = 0;