From 2905de64db54189b15358bfac0d45cb8158fee55 Mon Sep 17 00:00:00 2001 From: Perry Fraser Date: Sun, 16 Aug 2026 21:44:30 -0400 Subject: [PATCH] vte: don't emit double escape for meta+arrow keys When we write an arrow key escape sequence with meta as a modifier, TSM_VTE_FLAG_PREPEND_ESCAPE will get set by tsm_vte_handle_keyboard, causing us to write ^[^[[1;3A for meta+up arrow. Let's just unset that flag since we're always writing an escape character when writing a arrow escape code. --- src/tsm/tsm-vte.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tsm/tsm-vte.c b/src/tsm/tsm-vte.c index 44ec5a0..de0c67b 100644 --- a/src/tsm/tsm-vte.c +++ b/src/tsm/tsm-vte.c @@ -2811,6 +2811,8 @@ static void vte_write_arrow(struct tsm_vte *vte, char direction, unsigned int mo char code_with_modifier[6] = {'\e', '[', '1', ';', '0', 'A'}; char code[3] = {'\e', '[', 'A'}; + vte->flags &= ~TSM_VTE_FLAG_PREPEND_ESCAPE; + int modifier = csi_modifier_from_mask(mods); if (modifier) { code_with_modifier[4] = modifier;