+%{
+#if !wxUSE_JOYSTICK && !defined(__WXMSW__)
+// A C++ stub class for wxJoystick for platforms that don't have it.
+class wxJoystick : public wxObject {
+public:
+ wxJoystick(int joystick = wxJOYSTICK1) {
+ bool doSave = wxPyRestoreThread();
+ PyErr_SetString(PyExc_NotImplementedError, "wxJoystick is not available on this platform.");
+ wxPySaveThread(doSave);
+ }
+ wxPoint GetPosition() { return wxPoint(-1,-1); }
+ int GetZPosition() { return -1; }
+ int GetButtonState() { return -1; }
+ int GetPOVPosition() { return -1; }
+ int GetPOVCTSPosition() { return -1; }
+ int GetRudderPosition() { return -1; }
+ int GetUPosition() { return -1; }
+ int GetVPosition() { return -1; }
+ int GetMovementThreshold() { return -1; }
+ void SetMovementThreshold(int threshold) ;
+
+ bool IsOk(void) { return FALSE; }
+ int GetNumberJoysticks() { return -1; }
+ int GetManufacturerId() { return -1; }
+ int GetProductId() { return -1; }
+ wxString GetProductName() { return ""; }
+ int GetXMin() { return -1; }
+ int GetYMin() { return -1; }
+ int GetZMin() { return -1; }
+ int GetXMax() { return -1; }
+ int GetYMax() { return -1; }
+ int GetZMax() { return -1; }
+ int GetNumberButtons() { return -1; }
+ int GetNumberAxes() { return -1; }
+ int GetMaxButtons() { return -1; }
+ int GetMaxAxes() { return -1; }
+ int GetPollingMin() { return -1; }
+ int GetPollingMax() { return -1; }
+ int GetRudderMin() { return -1; }
+ int GetRudderMax() { return -1; }
+ int GetUMin() { return -1; }
+ int GetUMax() { return -1; }
+ int GetVMin() { return -1; }
+ int GetVMax() { return -1; }
+
+ bool HasRudder() { return FALSE; }
+ bool HasZ() { return FALSE; }
+ bool HasU() { return FALSE; }
+ bool HasV() { return FALSE; }
+ bool HasPOV() { return FALSE; }
+ bool HasPOV4Dir() { return FALSE; }
+ bool HasPOVCTS() { return FALSE; }
+
+ bool SetCapture(wxWindow* win, int pollingFreq = 0) { return FALSE; }
+ bool ReleaseCapture() { return FALSE; }
+};
+#endif
+%}
+
+
+class wxJoystick : public wxObject {