mirror of
https://github.com/neovim/neovim
synced 2025-07-29 09:51:52 +00:00
feat(tui): recognize X1 and X2 mouse events
Ref: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Other-buttons
This commit is contained in:
@ -403,6 +403,7 @@ static unsigned handle_mouse_event(const char **ptr, uint8_t *buf, unsigned bufs
|
|||||||
|
|
||||||
if (type != KS_EXTRA
|
if (type != KS_EXTRA
|
||||||
|| !((mouse_code >= KE_LEFTMOUSE && mouse_code <= KE_RIGHTRELEASE)
|
|| !((mouse_code >= KE_LEFTMOUSE && mouse_code <= KE_RIGHTRELEASE)
|
||||||
|
|| (mouse_code >= KE_X1MOUSE && mouse_code <= KE_X2RELEASE)
|
||||||
|| (mouse_code >= KE_MOUSEDOWN && mouse_code <= KE_MOUSERIGHT)
|
|| (mouse_code >= KE_MOUSEDOWN && mouse_code <= KE_MOUSERIGHT)
|
||||||
|| mouse_code == KE_MOUSEMOVE)) {
|
|| mouse_code == KE_MOUSEMOVE)) {
|
||||||
return bufsize;
|
return bufsize;
|
||||||
|
@ -387,6 +387,10 @@ static void forward_mouse_event(TermInput *input, TermKeyKey *key)
|
|||||||
len += (size_t)snprintf(buf + len, sizeof(buf) - len, "Middle");
|
len += (size_t)snprintf(buf + len, sizeof(buf) - len, "Middle");
|
||||||
} else if (button == 3) {
|
} else if (button == 3) {
|
||||||
len += (size_t)snprintf(buf + len, sizeof(buf) - len, "Right");
|
len += (size_t)snprintf(buf + len, sizeof(buf) - len, "Right");
|
||||||
|
} else if (button == 8) {
|
||||||
|
len += (size_t)snprintf(buf + len, sizeof(buf) - len, "X1");
|
||||||
|
} else if (button == 9) {
|
||||||
|
len += (size_t)snprintf(buf + len, sizeof(buf) - len, "X2");
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (ev) {
|
switch (ev) {
|
||||||
|
@ -327,6 +327,12 @@ TermKeyResult termkey_interpret_mouse(TermKey *tk, const TermKeyKey *key, TermKe
|
|||||||
btn = code + 4 - 64;
|
btn = code + 4 - 64;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 128:
|
||||||
|
case 129:
|
||||||
|
*event = drag ? TERMKEY_MOUSE_DRAG : TERMKEY_MOUSE_PRESS;
|
||||||
|
btn = code + 8 - 128;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
*event = TERMKEY_MOUSE_UNKNOWN;
|
*event = TERMKEY_MOUSE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user