From Melchior Franz, "In KDE I switch desktops with Super-Tab, and occasionally I
get an excess Tab key report when switching back to an OSG application (usually FlightGear :-). Although KDE has consumed the Tab, it's sometimes still in the XKeymapEvent's key_vector, and followed by a Tab KeyRelease event. Avoid this artifact by - asking for a "fresh" keymap (via XQueryKeymap()), rather than using the unreliable(?) XKeymapEvent's key_vector, and by - flushing all key events on focus-in (to avoid the KeyRelease) After Super-press, Tab-press, Super-release, Tab-release (note the wrong release order!) I still get an extra Tab event. But this is not surprising and not exactly wrong either. Also it's hard to avoid, as we can't see what happened to the keyboard before we regained focus. Files changed: src/osgViewer/GraphicsWindowX11.cpp include/osgViewer/api/X11/GraphicsWindowX11"
This commit is contained in:
@@ -169,6 +169,7 @@ class OSGVIEWER_EXPORT GraphicsWindowX11 : public osgViewer::GraphicsWindow
|
||||
void getModifierMap(char* keymap) const;
|
||||
int getModifierMask() const;
|
||||
void syncLocks();
|
||||
void flushKeyEvents();
|
||||
|
||||
bool _valid;
|
||||
Display* _display;
|
||||
|
||||
Reference in New Issue
Block a user