X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/43201491cd3c657e94ad9efbc2cd664f6a22b544..f86a4930f2c69058684496a1882343fe8e709bf2:/src/osx/core/hid.cpp diff --git a/src/osx/core/hid.cpp b/src/osx/core/hid.cpp index 3bc287cb17..f2b79db202 100644 --- a/src/osx/core/hid.cpp +++ b/src/osx/core/hid.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/osx/corefoundation/hid.cpp +// Name: src/osx/core/hid.cpp // Purpose: DARWIN HID layer for WX Implementation // Author: Ryan Norton // Modified by: @@ -24,8 +24,7 @@ #pragma hdrstop #endif -//DARWIN _ONLY_ -#ifdef __DARWIN__ +#if wxOSX_USE_COCOA_OR_CARBON #include "wx/osx/core/hid.h" @@ -37,7 +36,7 @@ #include "wx/module.h" #endif -#include "wx/osx/core/cfstring.h" +#include "wx/osx/private.h" // ============================================================================ // implementation @@ -98,7 +97,7 @@ bool wxHIDDevice::Create (int nClass, int nType, int nDev) CFRelease(pClass); } - //Now get the maching services + //Now get the matching services io_iterator_t pIterator; if( IOServiceGetMatchingServices(m_pPort, pDictionary, &pIterator) != kIOReturnSuccess ) @@ -262,7 +261,7 @@ size_t wxHIDDevice::GetCount (int nClass, int nType) CFRelease(pClass); } - //Now get the maching services + //Now get the matching services io_iterator_t pIterator; if( IOServiceGetMatchingServices(pPort, pDictionary, &pIterator) != kIOReturnSuccess ) @@ -422,7 +421,7 @@ enum WXK_RSHIFT = 400, WXK_RALT, WXK_RCONTROL, - WXK_RMENU + WXK_RAW_RCONTROL, }; // ---------------------------------------------------------------------------- @@ -602,7 +601,7 @@ void wxHIDKeyboard::DoBuildCookies(CFArrayRef Array) //Menu keys, Shift, other specials case kHIDUsage_KeyboardLeftControl: - AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_CONTROL); + AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_RAW_CONTROL); break; case kHIDUsage_KeyboardLeftShift: AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_SHIFT); @@ -611,10 +610,10 @@ void wxHIDKeyboard::DoBuildCookies(CFArrayRef Array) AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_ALT); break; case kHIDUsage_KeyboardLeftGUI: - AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_MENU); + AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_CONTROL); break; case kHIDUsage_KeyboardRightControl: - AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_RCONTROL); + AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_RAW_RCONTROL); break; case kHIDUsage_KeyboardRightShift: AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_RSHIFT); @@ -623,7 +622,7 @@ void wxHIDKeyboard::DoBuildCookies(CFArrayRef Array) AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_RALT); break; case kHIDUsage_KeyboardRightGUI: - AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_RMENU); + AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_RCONTROL); break; //Default @@ -674,73 +673,8 @@ bool wxGetKeyState (wxKeyCode key) wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key != WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons")); - if (wxHIDModule::sm_keyboards.GetCount() == 0) - { - 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_MENU: - if( keyboard->IsActive(WXK_MENU) || - keyboard->IsActive(WXK_RMENU) ) - { - return true; - } - break; - default: - if( keyboard->IsActive(key) ) - { - return true; - } - break; - } - } - - return false; //not down/error + CGKeyCode cgcode = wxCharCodeWXToOSX((wxKeyCode)key); + return CGEventSourceKeyState(kCGEventSourceStateCombinedSessionState, cgcode); } #endif //__DARWIN__