Fwd: Simulate button press events



Sorry but the discussion was accidentally become private.

---------- Forwarded message ----------
From: Matteo Landi <landimatte gmail com>
Date: Sat, Dec 26, 2009 at 4:51 PM
Subject: Re: Simulate button press events
To: Michael Libby <michael c libby gmail com>


On Sat, Dec 26, 2009 at 3:22 PM, Michael Libby
<michael c libby gmail com> wrote:
On Thu, Dec 24, 2009 at 6:39 PM, Matteo Landi <landimatte gmail com> wrote:

as the subject says, I'm trying to synthesize mouse clicks over the
focused window (which is now owned by my application). Looking around
it seems that gtk offers only a way to move the cursor
(gdk_display_warp_pointer) but there is anything related to button
press. For the moment I'm using xlib for such a purpose, but I was
wondering if I could accompish my task only making use of gtk.

For testing? There might be less fragile ways to interact with your UI
for testing purposes. Setting specific x,y coordinates in your test
code for mouse clicks may break if the layout of the UI changes.

Simulating user interaction visually? Still fragile, but more worth
the effort since you will already be computing the path the mouse
needs to travel.

Well I'am creating to create a game sovler. Once my window is placed
over the grid of the game, the application starts to take shots of the
display, and move the mouse and clicks over the grid depending on the
content of the shot.


In any case: Did you look at gdk_display_put_event () with a
GdkEventButton? This has the ability to send type of mouse click,
modifier keys, and x,y coords.

I'm reading its documentation right now, but it seems not work even
tought it's possible I'm using it wrong. Indeed when I create an event
I should insert the window which is going to receive the event: what
is it in my particular case? is the gdk_display_put_event going to
override this field inside my event object? Here is the code I'm
trying (python):

 def fake_button_press_event(self, x, y):
   event = gdk.Event(gdk.BUTTON_PRESS)
   event.x = 500.
   event.y = 500.
   event.button = 1

   gtk.gdk.display_get_default().put_event(event)


Thanks in advance.

--
Michael C. Libby
www.mikelibby.com




--
Matteo Landi
http://www.matteolandi.net/



-- 
Matteo Landi
http://www.matteolandi.net/



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]