-protected:
- // Implementation-wise, since key events take more code to set up on GTK and Mac, it makes
- // sense to handle both key down and key up in one method. However, I wanted the API for pressing
- // and releasing the mouse and keyboard to be consistent, and I don't really like using a bool
- // for pressed state, so I'm leaving this as an implementation detail.
- bool Key(int keycode, bool isDown=true, bool shiftDown=false, bool cmdDown=false, bool altDown=false);
+ bool MouseDown(int button = wxMOUSE_BTN_LEFT);
+ bool MouseUp(int button = wxMOUSE_BTN_LEFT);
+
+ // Higher level interface, use it if possible instead
+ bool MouseClick(int button = wxMOUSE_BTN_LEFT);
+ bool MouseDblClick(int button = wxMOUSE_BTN_LEFT);
+ bool MouseDragDrop(long x1, long y1, long x2, long y2,
+ int button = wxMOUSE_BTN_LEFT);
+
+
+ // Keyboard simulation
+ // -------------------
+
+ // Low level methods for generating key presses and releases
+ bool KeyDown(int keycode, int modifiers = wxMOD_NONE)
+ { return Key(keycode, modifiers, true); }
+
+ bool KeyUp(int keycode, int modifiers = wxMOD_NONE)
+ { return Key(keycode, modifiers, false); }
+
+ // Higher level methods for generating both the key press and release for a
+ // single key or for all characters in the ASCII string "text" which can
+ // currently contain letters only (no digits, no punctuation).
+ bool Char(int keycode, int modifiers = wxMOD_NONE);
+
+ bool Text(const char *text);
+
+private:
+ // This is the common part of Key{Down,Up}() methods: while we keep them
+ // separate at public API level for consistency with Mouse{Down,Up}(), at
+ // implementation level it makes more sense to have them in a single
+ // function.
+ //
+ // It calls DoModifiers() to simulate pressing the modifier keys if
+ // necessary and then DoKey() for the key itself.
+ bool Key(int keycode, int modifiers, bool isDown);
+
+ // Call DoKey() for all modifier keys whose bits are set in the parameter.
+ void SimulateModifiers(int modifier, bool isDown);
+
+
+ // The low-level port-specific function which really generates the key
+ // presses. It should generate exactly one key event with the given
+ // parameters.
+ bool DoKey(int keycode, int modifiers, bool isDown);