// Copyright: (c) Ryan Norton
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
+
// ===========================================================================
// declarations
// ===========================================================================
#include "wx/defs.h"
#include "wx/string.h"
-// ---------------------------------------------------------------------------
-// definitions
-// ---------------------------------------------------------------------------
-
//Mac OSX only
#ifdef __DARWIN__
#include <mach/mach.h> //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!).
+// ---------------------------------------------------------------------------
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 size_t GetCount(int nClass = -1, int nType = -1);
//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;
+ 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 the cookie at nIndex exists
+ //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
wxString m_szProductName; //product name
int m_nProductId; //product id
int m_nManufacturerId; //manufacturer id
- mach_port_t m_pPort;
+ 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
+#endif //WX_MACCARBONHID_H