X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dd9b4b7f114427e2fc089c4f1b2d4d43d7b003d4..e4161a2a08e622ba55f66610e26892f5fda37e6f:/include/wx/mac/corefoundation/hid.h diff --git a/include/wx/mac/corefoundation/hid.h b/include/wx/mac/corefoundation/hid.h index 6ea4535f3a..e6df5cb45f 100644 --- a/include/wx/mac/corefoundation/hid.h +++ b/include/wx/mac/corefoundation/hid.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: hid.h +// Name: wx/mac/corefoundation/hid.h // Purpose: DARWIN HID layer for WX // Author: Ryan Norton // Modified by: @@ -8,6 +8,7 @@ // Copyright: (c) Ryan Norton // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// + // =========================================================================== // declarations // =========================================================================== @@ -19,17 +20,9 @@ #ifndef _WX_MACCARBONHID_H_ #define _WX_MACCARBONHID_H_ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma interface "hid.h" -#endif - #include "wx/defs.h" #include "wx/string.h" -// --------------------------------------------------------------------------- -// definitions -// --------------------------------------------------------------------------- - //Mac OSX only #ifdef __DARWIN__ @@ -39,63 +32,85 @@ #include #include -#include +//Darn apple - doesn't properly wrap their headers in extern "C"! +//http://www.macosx.com/forums/archive/index.php/t-68069.html +//Needed for codewarrior link error with mach_port_deallocate() +extern "C" { +#include +} -#include "wx/mac/corefoundation/cfwrappers.h" +#include //this actually includes mach_port.h (see above) +// =========================================================================== +// definitions +// =========================================================================== + + +// --------------------------------------------------------------------------- +// wxHIDDevice // -// A wrapper around OS X HID Manager procedures. -// The tutorial "Working With HID Class Device Interfaces" Is -// Quite good, as is the sample program associated with it -// (Depite the author's protests!). -class wxHIDDevice +// A wrapper around OS X HID Manager procedures. +// The tutorial "Working With HID Class Device Interfaces" Is +// Quite good, as is the sample program associated with it +// (Depite the author's protests!). +// --------------------------------------------------------------------------- +class WXDLLIMPEXP_CORE wxHIDDevice { public: - wxHIDDevice() : m_ppDevice(NULL), m_ppQueue(NULL), m_pCookies(NULL) {} - //kHIDPage_GenericDesktop - //kHIDUsage_GD_Joystick,kHIDUsage_GD_Mouse,kHIDUsage_GD_Keyboard - bool Create (int nClass = -1, int nType = -1, int nDev = 1); - - static int GetCount(int nClass = -1, int nType = -1); - - void AddCookie(CFTypeRef Data, int i); - void AddCookieInQueue(CFTypeRef Data, int i); - void InitCookies(size_t dwSize, bool bQueue = false); - - //Must be implemented by derived classes - //builds the cookie array - - //first call InitCookies to initialize the cookie - //array, then AddCookie to add a cookie at a certain point in an array - virtual void BuildCookies(wxCFArray& Array) = 0; - - //checks to see whether the cookie at nIndex is active (element value != 0) - bool IsActive(int nIndex); - - //checks to see whether the cookie at nIndex exists + wxHIDDevice() : m_ppDevice(NULL), m_ppQueue(NULL), m_pCookies(NULL) {} + + bool Create (int nClass = -1, int nType = -1, int nDev = 1); + + static size_t GetCount(int nClass = -1, int nType = -1); + + void AddCookie(CFTypeRef Data, int i); + void AddCookieInQueue(CFTypeRef Data, int i); + void InitCookies(size_t dwSize, bool bQueue = false); + + //Must be implemented by derived classes + //builds the cookie array - + //first call InitCookies to initialize the cookie + //array, then AddCookie to add a cookie at a certain point in an array + virtual void BuildCookies(CFArrayRef Array) = 0; + + //checks to see whether the cookie at nIndex is active (element value != 0) + bool IsActive(int nIndex); + + //checks to see whether an element in the internal cookie array + //exists bool HasElement(int nIndex); - - //closes the device and cleans the queue and cookies - virtual ~wxHIDDevice(); - + + //closes the device and cleans the queue and cookies + virtual ~wxHIDDevice(); + protected: - IOHIDDeviceInterface** m_ppDevice; //this, essentially - IOHIDQueueInterface** m_ppQueue; //queue (if we want one) - IOHIDElementCookie* m_pCookies; //cookies - - wxString m_szProductName; //product name - int m_nProductId; //product id - int m_nManufacturerId; //manufacturer id - mach_port_t m_pPort; + IOHIDDeviceInterface** m_ppDevice; //this, essentially + IOHIDQueueInterface** m_ppQueue; //queue (if we want one) + IOHIDElementCookie* m_pCookies; //cookies + + wxString m_szProductName; //product name + int m_nProductId; //product id + int m_nManufacturerId; //manufacturer id + mach_port_t m_pPort; //mach port to use }; -class wxHIDKeyboard : public wxHIDDevice +// --------------------------------------------------------------------------- +// wxHIDKeyboard +// +// Semi-simple implementation that opens a connection to the first +// keyboard of the machine. Used in wxGetKeyState. +// --------------------------------------------------------------------------- +class WXDLLIMPEXP_CORE wxHIDKeyboard : public wxHIDDevice { public: - bool Create(); - virtual void BuildCookies(wxCFArray& Array); + static int GetCount(); + bool Create(int nDev = 1); + void AddCookie(CFTypeRef Data, int i); + virtual void BuildCookies(CFArrayRef Array); + void DoBuildCookies(CFArrayRef Array); }; #endif //__DARWIN__ -#endif - //WX_MACCARBONHID_H \ No newline at end of file +#endif + // _WX_MACCARBONHID_H_