]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/app.cpp
Include missing.h to find O_* flags.
[wxWidgets.git] / src / mac / carbon / app.cpp
index d79c0356e84ebf8e5874a015835f38fbbbab7029..082a1c35ed12239bbad6873810264c7ca28f4ef6 100644 (file)
@@ -59,6 +59,8 @@
 #  if defined(WXMAKINGDLL_CORE)
 #    include <mach-o/dyld.h>
 #  endif
+// include hid keyboard
+#  include "wx/mac/carbon/private/hid.h"
 #else
 #  include <Sound.h>
 #  include <Threads.h>
@@ -119,6 +121,10 @@ long      wxApp::s_macPreferencesMenuItemId = wxID_PREFERENCES ;
 long      wxApp::s_macExitMenuItemId = wxID_EXIT ;
 wxString  wxApp::s_macHelpMenuTitleName = wxT("&Help") ;
 
+#ifdef __DARWIN__
+    wxHIDKeyboard* wxApp::s_macHIDKeyboard = NULL;
+#endif
+
 // Normally we're not a plugin
 bool      wxApp::sm_isEmbedded = false;
 //----------------------------------------------------------------------
@@ -717,6 +723,10 @@ void wxApp::CleanUp()
     ProfilerDump( (StringPtr)"\papp.prof" ) ;
     ProfilerTerm() ;
 #  endif
+
+    // clean up HID Keyboard
+    if (s_macHIDKeyboard)
+        delete s_macHIDKeyboard;
 #endif
 
     UMACleanupToolbox() ;
@@ -1169,11 +1179,16 @@ int wxMacKeyCodeToModifier(wxKeyCode key)
 
 bool wxGetKeyState(wxKeyCode key) //virtual key code if < 10.2.x, else see below
 {
-//#ifdef __DARWIN__
-//     wxHIDKeyboard keyboard;
-//     return keyboard.IsActive(key);
-//#else
-// TODO:  Have it use HID Manager on OSX...
+#ifdef __DARWIN__
+    // Startup HID keyboard for getting key codes on DARWIN
+    if (!wxApp::s_macHIDKeyboard)
+    {
+        wxApp::s_macHIDKeyboard = new wxHIDKeyboard();
+        wxApp::s_macHIDKeyboard->Create();
+    }
+
+       return wxApp::s_macHIDKeyboard->IsActive(key);
+#else
 //if OS X > 10.2 (i.e. 10.2.x)
 //a known apple bug prevents the system from determining led
 //states with GetKeys... can only determine caps lock led
@@ -1182,7 +1197,7 @@ bool wxGetKeyState(wxKeyCode key) //virtual key code if < 10.2.x, else see below
 //  KeyMapByteArray keymap; 
 //  GetKeys((BigEndianLong*)keymap);
 //  return !!(BitTst(keymap, (sizeof(KeyMapByteArray)*8) - iKey));
-//#endif
+#endif
 }