From 752d25498285487113cdda44f671b6c6e31b4ec9 Mon Sep 17 00:00:00 2001 From: Flyinghead Date: Wed, 26 Sep 2018 10:08:49 +0200 Subject: [PATCH] X11: keyboard auto-repeat detection --- core/linux-dist/x11.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/linux-dist/x11.cpp b/core/linux-dist/x11.cpp index aa621f4cc..f5e491752 100644 --- a/core/linux-dist/x11.cpp +++ b/core/linux-dist/x11.cpp @@ -311,6 +311,16 @@ void input_x11_handle() case KeyPress: case KeyRelease: { + if (e.type == KeyRelease && XEventsQueued(display, QueuedAfterReading)) + { + XEvent nev; + XPeekEvent(display, &nev); + + if (nev.type == KeyPress && nev.xkey.time == e.xkey.time && + nev.xkey.keycode == e.xkey.keycode) + // Key wasn’t actually released: auto repeat + continue; + } // Dreamcast keyboard emulation if (e.xkey.keycode == KEY_LSHIFT || e.xkey.keycode == KEY_RSHIFT) if (e.type == KeyRelease)