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)