GNOME Bugzilla – Bug 142833
gdm mousebutton listeners can't detect XInput events
Last modified: 2005-02-14 20:26:57 UTC
gdm mousebutton gesture listeners aren't currently listening for XInput events. Most GOK users will actually be interacting with the system via XInput alternate mouse drivers (not connected/chained to the core pointer), in order to avoid conflicts with the underlying GUI. The current gesture listeners can't be used to detect such gestures, thus they don't work for most GOK users.
escalating login issues
Created attachment 28524 [details] [review] patch to init XInput if present, and listen to XInput buttons and keys; also parse <Switch1> etc in AccessMouseKeyEvents
Patch appears to unblock the situation for GOK users; it doesn't currently distinguish between non-core XINput devices, but that's OK for almost all use cases... i.e. if one defines a gesture based on "button1" from an XInput device, then it can be activated from any non-core XInput device. This is OK because for a GOK user, the XInput device which GOK is configured to listen to is almost certainly going to be the one that the user's switch is connected to at login time. Actually passing the device ID of the device which completed the gesture, as a param to the gesture-listener-launched program, can be considered a lower-priority RFE. I have tested the patch with various switch combinations and GOK.
Note that the patch also includes a check for XInput in configure.in, cribbed from GOK. The GOK test has been tested by various people on different platforms, so I think it should be safe, but you might want to peruse it George. BTW George, what indenting style do you want to use in the gesture listener code? The stuff that's there seems to use a modified 'linux' style, with opening brackets on the same line as the conditional... do you want me to adhere to that in keymouselistener.c? (it seems to make me more error prone as I am used to brackets on separate lines)
BTW I am aware of a small bug in the other patch - #define HAVE_XINPUT was erroneously retained hard-coded in keymouselistener.c, and the #ifdef HAVE_XINPUT include of "XInput.h" should come after #include <config.h>
Comment on attachment 28524 [details] [review] patch to init XInput if present, and listen to XInput buttons and keys; also parse <Switch1> etc in AccessMouseKeyEvents patch is not always linking in the libXi.so (XInput lib) as it should... revision to follow.
Created attachment 28881 [details] [review] improved patch; better linking (include X_EXTRA_LIBS) and better gesture matching for XInput
Awaiting to confirm fix in JDS Rel3 Build17
John: it won't be in JDS yet, the patch isn't in CVS nor JDS patches yet. Try b18.
Apologies for spam-- ensuring Sun a11y team are cc'ed on all current a11y bugs. Filter on "SUN A11Y SPAM" to ignore.
Patch added to CVS head.
thanks Brian.