Merge pull request #8437 from DSkywalk/master

X11 auto-repeat event fixed
This commit is contained in:
Twinaphex 2019-03-10 23:17:53 +01:00 committed by GitHub
commit 75102a435f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -570,8 +570,22 @@ bool x11_alive(void *data)
case ButtonRelease:
break;
case KeyPress:
case KeyRelease:
/* When you receive a key release and the next event is a key press
of the same key combination, then it's auto-repeat and the
key wasn't actually released. */
if(XEventsQueued(g_x11_dpy, QueuedAfterReading))
{
XEvent next_event;
XPeekEvent(g_x11_dpy, &next_event);
if (next_event.type == KeyPress &&
next_event.xkey.time == event.xkey.time &&
next_event.xkey.keycode == event.xkey.keycode)
{
break; // Key wasn't actually released
}
}
case KeyPress:
if (event.xkey.window == g_x11_win)
x11_handle_key_event(keycode, &event, g_x11_xic, filter);
break;