Ticket #3954: fix mouse handling with newer terminfo entries.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
Egmont Koblinger 2020-02-14 22:14:19 +01:00 committed by Andrew Borodin
parent 9bb351508a
commit b92c7f86b4
3 changed files with 21 additions and 5 deletions

View File

@ -2120,8 +2120,15 @@ tty_get_event (struct Gpm_Event *event, gboolean redo_event, gboolean block)
#endif /* KEY_MOUSE */
|| c == MCKEY_EXTENDED_MOUSE))
{
/* Mouse event */
xmouse_get_event (event, c == MCKEY_EXTENDED_MOUSE);
/* Mouse event. See tickets 2956 and 3954 for extended mode detection. */
gboolean extended = c == MCKEY_EXTENDED_MOUSE;
#ifdef KEY_MOUSE
extended = extended || (c == KEY_MOUSE && xmouse_seq == NULL
&& xmouse_extended_seq != NULL);
#endif /* KEY_MOUSE */
xmouse_get_event (event, extended);
c = (event->type != 0) ? EV_MOUSE : EV_NONE;
}
else if (c == MCKEY_BRACKETED_PASTING_START)

View File

@ -90,7 +90,9 @@ init_mouse (void)
case MOUSE_XTERM_NORMAL_TRACKING:
case MOUSE_XTERM_BUTTON_EVENT_TRACKING:
if (xmouse_seq != NULL)
define_sequence (MCKEY_MOUSE, xmouse_seq, MCKEY_NOACTION);
if (xmouse_extended_seq != NULL)
define_sequence (MCKEY_EXTENDED_MOUSE, xmouse_extended_seq, MCKEY_NOACTION);
break;

View File

@ -361,9 +361,16 @@ tty_init_xterm_support (gboolean is_xterm)
}
}
/* No termcap for SGR extended mouse (yet), hardcode it for now */
/* There's only one termcap entry "kmous", typically containing "\E[M" or "\E[<".
* We need the former in xmouse_seq, the latter in xmouse_extended_seq.
* See tickets 2956 and 3954 for details. */
if (xmouse_seq != NULL)
{
if (strcmp (xmouse_seq, ESC_STR "[<") == 0)
xmouse_seq = NULL;
xmouse_extended_seq = ESC_STR "[<";
}
}
/* --------------------------------------------------------------------------------------------- */