From e9b41b24a0968b67dd05eb900ef22e8beec642a0 Mon Sep 17 00:00:00 2001 From: Ryan Norton Date: Mon, 27 Sep 2004 07:13:24 +0000 Subject: [PATCH] Add HID keyboard functionality git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29433 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/mac/carbon/app.h | 4 ++++ src/mac/carbon/app.cpp | 27 +++++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/include/wx/mac/carbon/app.h b/include/wx/mac/carbon/app.h index 33db82d82e..8267803af5 100644 --- a/include/wx/mac/carbon/app.h +++ b/include/wx/mac/carbon/app.h @@ -123,6 +123,10 @@ public: static long s_macMenuManagerVersion ; static bool s_macHasDialogManager ; static long s_macDialogManagerVersion ; + + #ifdef __DARWIN__ + static class wxHIDKeyboard* s_macHIDKeyboard; + #endif WXHRGN m_macCursorRgn ; WXHRGN m_macSleepRgn ; diff --git a/src/mac/carbon/app.cpp b/src/mac/carbon/app.cpp index d79c0356e8..082a1c35ed 100644 --- a/src/mac/carbon/app.cpp +++ b/src/mac/carbon/app.cpp @@ -59,6 +59,8 @@ # if defined(WXMAKINGDLL_CORE) # include # endif +// include hid keyboard +# include "wx/mac/carbon/private/hid.h" #else # include # include @@ -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 }