Fix mouse when key_mouse contains 1006 sequence

This commit is contained in:
Přemysl Eric Janouch 2021-11-04 14:13:03 +01:00
parent 2f348c79b7
commit 8265f075b1
Signed by: p
GPG Key ID: A0420B94F92B9493
1 changed files with 5 additions and 7 deletions

View File

@ -250,26 +250,24 @@ load_terminfo (termo_ti_t *ti, const char *term)
else else
ti->set_mouse_string = strdup (set_mouse_string); ti->set_mouse_string = strdup (set_mouse_string);
bool have_mouse = false; // We handle 1006 and 1015 unconditionally in driver-csi.c,
if (!mouse_report_string && strstr (term, "xterm")) // and don't want to have the handling diverted by recent terminfo;
mouse_report_string = "\x1b[M"; // let's hardcode the ancient 1000 sequence locally
if (mouse_report_string) if (mouse_report_string)
{ {
have_mouse = true;
trie_node_t *node = malloc (sizeof *node); trie_node_t *node = malloc (sizeof *node);
if (!node) if (!node)
goto fail; goto fail;
node->type = TYPE_MOUSE; node->type = TYPE_MOUSE;
if (!insert_seq (ti, mouse_report_string, node)) if (!insert_seq (ti, "\x1b[M", node))
{ {
free (node); free (node);
goto fail; goto fail;
} }
} }
if (!have_mouse) if (!mouse_report_string && strstr (term, "xterm") != term)
ti->tk->guessed_mouse_proto = TERMO_MOUSE_PROTO_NONE; ti->tk->guessed_mouse_proto = TERMO_MOUSE_PROTO_NONE;
else if (strstr (term, "rxvt") == term) else if (strstr (term, "rxvt") == term)
// urxvt didn't understand the SGR protocol until version 9.25, // urxvt didn't understand the SGR protocol until version 9.25,