+WXDLLIMPEXP_BASE wxString wxNow();
+
+// Return path where wxWidgets is installed (mostly useful in Unices)
+WXDLLIMPEXP_BASE const wxChar *wxGetInstallPrefix();
+// Return path to wxWin data (/usr/share/wx/%{version}) (Unices)
+WXDLLIMPEXP_BASE wxString wxGetDataDir();
+
+
+#if wxUSE_GUI
+
+// Get the state of a key (true if pressed, false if not)
+// This is generally most useful getting the state of
+// the modifier or toggle keys.
+WXDLLEXPORT bool wxGetKeyState(wxKeyCode key);
+
+
+// Don't synthesize KeyUp events holding down a key and producing
+// KeyDown events with autorepeat. On by default and always on
+// in wxMSW.
+WXDLLEXPORT bool wxSetDetectableAutoRepeat( bool flag );
+
+
+// wxMouseState is used to hold information about button and modifier state
+// and is what is returned from wxGetMouseState.
+class WXDLLEXPORT wxMouseState
+{
+public:
+ wxMouseState()
+ : m_x(0), m_y(0),
+ m_leftDown(false), m_middleDown(false), m_rightDown(false),
+ m_controlDown(false), m_shiftDown(false), m_altDown(false),
+ m_metaDown(false)
+ {}
+
+ wxCoord GetX() { return m_x; }
+ wxCoord GetY() { return m_y; }
+
+ bool LeftDown() { return m_leftDown; }
+ bool MiddleDown() { return m_middleDown; }
+ bool RightDown() { return m_rightDown; }
+
+ bool ControlDown() { return m_controlDown; }
+ bool ShiftDown() { return m_shiftDown; }
+ bool AltDown() { return m_altDown; }
+ bool MetaDown() { return m_metaDown; }
+ bool CmdDown()
+ {
+#if defined(__WXMAC__) || defined(__WXCOCOA__)
+ return MetaDown();
+#else
+ return ControlDown();
+#endif
+ }
+
+ void SetX(wxCoord x) { m_x = x; }
+ void SetY(wxCoord y) { m_y = y; }
+
+ void SetLeftDown(bool down) { m_leftDown = down; }
+ void SetMiddleDown(bool down) { m_middleDown = down; }
+ void SetRightDown(bool down) { m_rightDown = down; }
+
+ void SetControlDown(bool down) { m_controlDown = down; }
+ void SetShiftDown(bool down) { m_shiftDown = down; }
+ void SetAltDown(bool down) { m_altDown = down; }
+ void SetMetaDown(bool down) { m_metaDown = down; }
+
+private:
+ wxCoord m_x;
+ wxCoord m_y;
+
+ bool m_leftDown;
+ bool m_middleDown;
+ bool m_rightDown;
+
+ bool m_controlDown;
+ bool m_shiftDown;
+ bool m_altDown;
+ bool m_metaDown;
+};
+
+
+// Returns the current state of the mouse position, buttons and modifers
+WXDLLEXPORT wxMouseState wxGetMouseState();
+