/////////////////////////////////////////////////////////////////////////////
-// Name: src/osx/corefoundation/hid.cpp
+// Name: src/osx/core/hid.cpp
// Purpose: DARWIN HID layer for WX Implementation
// Author: Ryan Norton
// Modified by:
#pragma hdrstop
#endif
-//DARWIN _ONLY_
-#ifdef __DARWIN__
+#if wxOSX_USE_COCOA_OR_CARBON
#include "wx/osx/core/hid.h"
#include "wx/module.h"
#endif
-#include "wx/osx/core/cfstring.h"
+#include "wx/osx/private.h"
// ============================================================================
// implementation
CFRelease(pClass);
}
- //Now get the maching services
+ //Now get the matching services
io_iterator_t pIterator;
if( IOServiceGetMatchingServices(m_pPort,
pDictionary, &pIterator) != kIOReturnSuccess )
CFRelease(pClass);
}
- //Now get the maching services
+ //Now get the matching services
io_iterator_t pIterator;
if( IOServiceGetMatchingServices(pPort,
pDictionary, &pIterator) != kIOReturnSuccess )
WXK_RSHIFT = 400,
WXK_RALT,
WXK_RCONTROL,
- WXK_RMENU
+ WXK_RAW_RCONTROL,
};
// ----------------------------------------------------------------------------
//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);
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);
AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_RALT);
break;
case kHIDUsage_KeyboardRightGUI:
- AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_RMENU);
+ AddCookie(CFArrayGetValueAtIndex(Array, i),WXK_RCONTROL);
break;
//Default
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__