mirror of
https://github.com/glfw/glfw.git
synced 2026-09-22 16:52:57 +00:00
Replaced repeat kluge with detectable auto repeat.
This commit is contained in:
@@ -498,32 +498,6 @@ static void processEvent(XEvent *event)
|
||||
if (window == NULL)
|
||||
return;
|
||||
|
||||
// Do not report key releases for key repeats. For key repeats we
|
||||
// will get KeyRelease/KeyPress pairs with similar or identical
|
||||
// time stamps. User selected key repeat filtering is handled in
|
||||
// _glfwInputKey/_glfwInputChar.
|
||||
if (XEventsQueued(_glfw.x11.display, QueuedAfterReading))
|
||||
{
|
||||
XEvent nextEvent;
|
||||
XPeekEvent(_glfw.x11.display, &nextEvent);
|
||||
|
||||
if (nextEvent.type == KeyPress &&
|
||||
nextEvent.xkey.window == event->xkey.window &&
|
||||
nextEvent.xkey.keycode == event->xkey.keycode)
|
||||
{
|
||||
// This last check is a hack to work around key repeats
|
||||
// leaking through due to some sort of time drift
|
||||
// Toshiyuki Takahashi can press a button 16 times per
|
||||
// second so it's fairly safe to assume that no human is
|
||||
// pressing the key 50 times per second (value is ms)
|
||||
if ((nextEvent.xkey.time - event->xkey.time) < 20)
|
||||
{
|
||||
// Do not report anything for this event
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_glfwInputKey(window, translateKey(event->xkey.keycode), GLFW_RELEASE);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user