how to pass event to l4linux

Norman Feske norman.feske at ...1...
Wed May 8 12:02:52 CEST 2013


Hello,

I guess that you are using the 'l4android.run' script as basis? This run
script starts the nitpicker GUI server by default, which gets connected
directly to the input driver (i.e., your driver). Do you see the mouse
cursor moving according to your touch input? If yes, then you are almost
there. ;-)

> _ev_queue.add(Input::Event(Input::Event::MOTION, 0, _abs_x, _abs_y, 0,
0));
> _ev_queue.add(Input::Event(Input::Event::PRESS, Input::BTN_TOUCH,
> _abs_x, _abs_y, 0, 0));
> _ev_queue.add(Input::Event(Input::Event::RELEASE, Input::BTN_TOUCH,
> _abs_x, _abs_y, 0, 0));

Those events are passed to the nitpicker GUI server, which, in turn,
routes them to one of its clients. The particular client that you are
interested in is the instance of 'nit_fb' that is used for displaying
Android. If you see the mouse cursor moving but the events are not
coming through to Android, they are getting stuck somewhere in this
chain. In general, you could instrument those components (nitpicker,
nit_fb) to print a message once they receive an input event.

I guess the problem lies in the nitpicker GUI server, which normally
responds to mouse-button events, in particular the left mouse button. It
interprets those events by setting the input-routing policy according to
where the user clicked with the mouse. However, you are merely
submitting 'BTN_TOUCH' events. So nitpicker won't interpret those. The
easiest fix would be to let the driver generate 'BTN_LEFT' events
instead of 'BTN_TOUCH' events. This way, nitpicker would see the kind of
events it is expecting. Alternatively, we could change nitpicker to also
respond to 'BTN_TOUCH' events.

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

http://www.genode-labs.com · http://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list