123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #include "precomp_wasabi_bfc.h"
- #include "std_keyboard.h"
- int Std::keyDown(int code)
- {
- #ifdef WIN32
- return !!(GetKeyState(code) & 0x8000);
- #elif defined(LINUX)
- if ( code == MK_RBUTTON || code == MK_LBUTTON ) {
- Window t1, t2;
- int rx, ry, wx, wy;
- unsigned int buttons;
-
- XQueryPointer( Linux::getDisplay(), Linux::RootWin(), &t1, &t2,
- &rx, &ry, &wx, &wy, &buttons );
-
- if ( code == MK_RBUTTON )
- return buttons & Button3Mask;
- else
- return buttons & Button1Mask;
- }
-
- int code1 = XKeysymToKeycode( Linux::getDisplay(), code & 0xFFFF );
- int code2 = XKeysymToKeycode( Linux::getDisplay(), (code>>16) & 0xFFFF );
-
- char keys_return[32] = {0};
- XQueryKeymap( Linux::getDisplay(), keys_return );
-
- if ( code1 && code2 )
- return (keys_return[ (code1 >> 3) & 31 ] & (1 << (code1 & 7))) ||
- (keys_return[ (code2 >> 3) & 31 ] & (1 << (code2 & 7)));
-
- return (keys_return[ (code1 >> 3) & 31 ] & (1 << (code1 & 7)));
- #else
- return 0;
- #warning port me!
- #endif
- }
- // TODO: add async flag to be able to choose between GetKeyState/GetAsyncKeyState (win32) GetCurrentKeyModifiers/GetCurrentEventkeyModifiers (mac)
- bool Std::keyModifier(int code)
- {
- #ifdef WIN32
- return !!(GetKeyState(code) & 0x8000);
- #elif defined(__APPLE__)
- return GetCurrentKeyModifiers() & code;
- #elif defined(LINUX)
- #error port me
- #endif
- }
|