VirtualBox

Ignore:
Timestamp:
Sep 22, 2008 3:15:40 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
36941
Message:

FE/Qt: ignore fake key release events generated by X11 when key repeat is active (when they can be detected without too much effort)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox4/src/VBoxConsoleView.cpp

    r12096 r12652  
    19911991        return true;
    19921992
     1993    /* When X11 sends events for repeated keys, it always inserts an
     1994     * XKeyRelease before the XKeyPress.  Since it nearly always
     1995     * (always?) uses the same time stamp for both, we can spot the
     1996     * unwanted event and discard it.  Of course, if we do miss one it
     1997     * isn't fatal for our purposes. */
     1998    if ((XKeyRelease == event->type) && XPending(event->xkey.display))
     1999    {
     2000        XEvent nextEvent;
     2001
     2002        XPeekEvent(event->xkey.display, &nextEvent);
     2003        if ((XKeyPress == nextEvent.type) &&
     2004            (event->xkey.keycode == nextEvent.xkey.keycode) &&
     2005            (event->xkey.time == nextEvent.xkey.time))
     2006            /* Discard it, don't pass it to Qt. */
     2007            return true;
     2008    }
     2009
    19932010    KeySym ks = ::XKeycodeToKeysym (event->xkey.display, event->xkey.keycode, 0);
    19942011
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette