X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce0d1032d1c9e63bd034575542c5ee4337ab3510..e0062c047ecb5a7d4790b980777dfa70869f4834:/include/wx/mac/corefoundation/hid.h diff --git a/include/wx/mac/corefoundation/hid.h b/include/wx/mac/corefoundation/hid.h index 9d138c301f..ec7c09cf08 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 // =========================================================================== @@ -22,10 +23,6 @@ #include "wx/defs.h" #include "wx/string.h" -// --------------------------------------------------------------------------- -// definitions -// --------------------------------------------------------------------------- - //Mac OSX only #ifdef __DARWIN__ @@ -44,70 +41,76 @@ extern "C" { #include //this actually includes mach_port.h (see above) -//Utility wrapper around CFArray -class wxCFArray -{ -public: - wxCFArray(CFTypeRef pData) : pArray((CFArrayRef) pData) {} - CFTypeRef operator [] (const int& nIndex) {return CFArrayGetValueAtIndex(pArray, nIndex); } - int Count() {return CFArrayGetCount(pArray);} -private: - CFArrayRef pArray; -}; +// =========================================================================== +// 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!). +// 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 { 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 }; +// --------------------------------------------------------------------------- +// wxHIDKeyboard +// +// Semi-simple implementation that opens a connection to the first +// keyboard of the machine. Used in wxGetKeyState. +// --------------------------------------------------------------------------- class 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_