simpler implementation that also works over remote connections by Kevin O.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72373 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -36,7 +36,7 @@
|
|||||||
#include "wx/module.h"
|
#include "wx/module.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/osx/core/cfstring.h"
|
#include "wx/osx/private.h"
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// implementation
|
// implementation
|
||||||
@@ -673,73 +673,8 @@ bool wxGetKeyState (wxKeyCode key)
|
|||||||
wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key !=
|
wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key !=
|
||||||
WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons"));
|
WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons"));
|
||||||
|
|
||||||
if (wxHIDModule::sm_keyboards.GetCount() == 0)
|
CGKeyCode cgcode = wxCharCodeWXToOSX((wxKeyCode)key);
|
||||||
{
|
return CGEventSourceKeyState(kCGEventSourceStateCombinedSessionState, cgcode);
|
||||||
int nKeyboards = wxHIDKeyboard::GetCount();
|
|
||||||
|
|
||||||
for(int i = 1; i <= nKeyboards; ++i)
|
|
||||||
{
|
|
||||||
wxHIDKeyboard* keyboard = new wxHIDKeyboard();
|
|
||||||
if(keyboard->Create(i))
|
|
||||||
{
|
|
||||||
wxHIDModule::sm_keyboards.Add(keyboard);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delete keyboard;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
wxASSERT_MSG(wxHIDModule::sm_keyboards.GetCount() != 0,
|
|
||||||
wxT("No keyboards found!"));
|
|
||||||
}
|
|
||||||
|
|
||||||
for(size_t i = 0; i < wxHIDModule::sm_keyboards.GetCount(); ++i)
|
|
||||||
{
|
|
||||||
wxHIDKeyboard* keyboard = (wxHIDKeyboard*)
|
|
||||||
wxHIDModule::sm_keyboards[i];
|
|
||||||
|
|
||||||
switch(key)
|
|
||||||
{
|
|
||||||
case WXK_SHIFT:
|
|
||||||
if( keyboard->IsActive(WXK_SHIFT) ||
|
|
||||||
keyboard->IsActive(WXK_RSHIFT) )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WXK_ALT:
|
|
||||||
if( keyboard->IsActive(WXK_ALT) ||
|
|
||||||
keyboard->IsActive(WXK_RALT) )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WXK_CONTROL:
|
|
||||||
if( keyboard->IsActive(WXK_CONTROL) ||
|
|
||||||
keyboard->IsActive(WXK_RCONTROL) )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WXK_RAW_CONTROL:
|
|
||||||
if( keyboard->IsActive(WXK_RAW_CONTROL) ||
|
|
||||||
keyboard->IsActive(WXK_RAW_RCONTROL) )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if( keyboard->IsActive(key) )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false; //not down/error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //__DARWIN__
|
#endif //__DARWIN__
|
||||||
|
Reference in New Issue
Block a user