XI 1.5 questions
thjaeger at gmail.com
Thu Dec 11 08:32:57 PST 2008
I'm currently in the process of updating my gesture-recognition
application easystroke to reflect the XInput changes in xserver-1.6 and
I have a couple of questions about the direction that we're headed.
The first question is about the behavior under core pointer freezes
caused by passive grabs with GrabModeSync. Currently, xserver-1.6's
behavior differs from xserver-1.5 in the following ways:
(1) While the core pointer is frozen, XInput events report the logical
state of the pointer, i.e. the point where the mouse was pressed down
(2) After the client calls XAllowEvents(dpy, ReplayPointer), the
complete motion history is replayed, but the coordinates reported are
the same as in (1), which isn't very useful.
(1) is not a big deal, since the information about the physical position
of the pointer is still available through valuators. (2) would be an
improvement over the behavior in 1.5 if actual physical coordinates were
replayed, which is presumably what was intended here.
The second issue I encountered was a change in XTest behavior. It's not
possible anymore for the core pointer and the devices to be in an
"inconsistent" state where a button is pressed on the device but appears
to be up as far as the core pointer is concerned. This is probably a
good thing, but it does mean that some of the evil hacks I was using
fail to work now. So I'm looking for a clean solution. XI 2.0 has
XChangeDeviceHierarchy, which I could presumably use to temporarily
detach the XInput device and then forward/modify events myself. So my
question is, is something like this possible in the upcoming xserver 1.6
as well? I've looked through the interface, but I couldn't find any
functions that could be used to detach an input device/cause it not to
send core events.
More information about the xorg