fix x11 auto-repeat event

This commit is contained in:
David Skywalker 2019-03-09 19:06:01 +01:00
parent 99035dbb0a
commit 46036894d4

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 acutally 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 wasnt actually released
}
}
case KeyPress:
if (event.xkey.window == g_x11_win)
x11_handle_key_event(keycode, &event, g_x11_xic, filter);
break;