Capturing all events from a presentation remote while allowing all other events to be sent normally

Eric Sokolowsky esok127 at gmail.com
Fri Jun 14 14:16:39 UTC 2019


Thanks for your help! I was able to finish my program and it now behaves as
I expect.

On Tue, Apr 30, 2019 at 6:24 PM Peter Hutterer <peter.hutterer at who-t.net>
wrote:

> On Tue, Apr 30, 2019 at 08:07:18AM -0400, Eric Sokolowsky wrote:
> > Yes, I checked the status of the XIGrabDevice call. It was 0. I followed
> > your suggestion on using the device's id, and it does appear to work
> > better, at least well enough for my purposes. The only confusing thing
> now
> > is that I am getting event 35 (GenericEvent) back to my application when
> > the buttons on the remote are pressed. Do you have any pointers to
> > documentation on how I might get the key events from these?  Thanks for
> > your help.
>
> all XI2 events are generic events and you need to handle those accordingly.
> google for "XI2 recipes", I think that set of blog post has the
> explanations and should get you started. Otherwise, the xinput source code
> (for 'test-xi2') will be helpful too as it's sort-of the minimal client for
> XI2 event handling.
>
> Cheers,
>    Peter
>
> > On Mon, Apr 29, 2019 at 9:27 PM Peter Hutterer <peter.hutterer at who-t.net
> >
> > wrote:
> >
> > > On Mon, Apr 29, 2019 at 05:42:46PM -0400, Eric Sokolowsky wrote:
> > > > I have an application that is used as a control system for a
> > > presentation,
> > > > under Linux and using X11. I have a USB presentation remote that
> acts as
> > > a
> > > > very miniature keyboard (four buttons: Page Up, Page Down, and two
> > > others)
> > > > which can be used to advance and go back in the presentation. I would
> > > like
> > > > to have my presentation application to receive all of the events from
> > > this
> > > > remote regardless of where the mouse focus is. But I would also like
> to
> > > be
> > > > able to receive the normal mouse and keyboard events if the current
> > > window
> > > > focus is on the presentation application. Using XIGrabDevice() I was
> able
> > > > to receive all events from the remote in the presentation application
> > > > regardless of the current focus but I was not able to receive any
> events
> > > > from the mouse or other keyboard while the grab was active. Is what
> I'm
> > > > trying to do possible?
> > > >
> > > > Here's the code I'm using:
> > > >
> > > > XIEventMask masks[1];
> > > > unsigned char mask[(XI_LASTEVENT+7)/8];
> > > > memset(mask, 0, sizeof(mask));
> > > > XISetMask(mask, XI_KeyPress);
> > > > masks[0].deviceid = XIAllMasterDevices;
> > >
> > > replace this with the device ID of the remote.
> > >
> > > > masks[0].mask_len = sizeof(mask);
> > > > masks[0].mask = mask;
> > > > Status result = XIGrabDevice(dpy, deviceid, win, CurrentTime, None,
> > > > XIGrabModeAsync, XIGrabModeAsync, True, masks);
> > > >
> > > > Any help would be appreciated. Thank you.
> > >
> > > did you check the status? XIGrabDevice with XIAllMasterDevices should
> fail
> > > because it doesn't resolve into any device (this is one of the requests
> > > where you can't use that fake device ID). Not sure why this worked at
> all.
> > > Either way, using the remote's ID should work.
> > >
> > > Cheers,
> > >    Peter
> > >
>
> > _______________________________________________
> > xorg at lists.x.org: X.Org support
> > Archives: http://lists.freedesktop.org/archives/xorg
> > Info: https://lists.x.org/mailman/listinfo/xorg
> > Your subscription address: %(user_address)s
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.x.org/archives/xorg/attachments/20190614/25f703e1/attachment.html>


More information about the xorg mailing list