wxGetKeyState as per feature request :).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24854 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -77,6 +77,7 @@ public:
|
||||
XFlush(m_display);
|
||||
XSetErrorHandler(m_old);
|
||||
}
|
||||
|
||||
private:
|
||||
Display *m_display;
|
||||
int (*m_old)(Display*, XErrorEvent *);
|
||||
@@ -505,5 +506,27 @@ void wxSetFullScreenStateX11(WXDisplay* display, WXWindow rootWindow,
|
||||
}
|
||||
}
|
||||
|
||||
bool wxGetKeyState(wxKeyCode key)
|
||||
{
|
||||
Display *pDisplay = wxApp::GetDisplay();
|
||||
int iKey = wxCharCodeWXToX(key);
|
||||
int iKeyMask = 0;
|
||||
Window wDummy1, wDummy2;
|
||||
int iDummy3, iDummy4, iDummy5, iDummy6;
|
||||
unsigned int iMask;
|
||||
XModifierKeymap* map = XGetModifierMapping(pDisplay);
|
||||
KeyCode keyCode = XKeysymToKeycode(pDisplay,iKey);
|
||||
if(keyCode == NoSymbol) return false;
|
||||
for(int i = 0; i < 8; ++i) {
|
||||
if( map->modifiermap[map->max_keypermod * i] == keyCode) {
|
||||
iKeyMask = 1 << i;
|
||||
}
|
||||
}
|
||||
XQueryPointer(pDisplay, DefaultRootWindow(pDisplay), &wDummy1, &wDummy2,
|
||||
&iDummy3, &iDummy4, &iDummy5, &iDummy6, &iMask );
|
||||
XFreeModifiermap(map);
|
||||
return (iMask & iKeyMask) != 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user