More XI 1.5 questions
thjaeger at gmail.com
Thu Dec 18 04:30:41 PST 2008
I've got a few more questions on input behavior.
> 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.
1. I'm still looking for way to be able tell when the button on a device
is released while I'm pretending (at least as far as the core pointer is
concerned) that the button is up. So is it possible to detach a device
in XI 1.5? The other idea that I had was to use XSetPointerMapping.
The problem with that is of course that it doesn't work while the button
is pressed, so I'd have to mess with XFakeDeviceButtonEvent, which seems
prone to race conditions. So I was wondering, I know that the spec
says XSetPointerMapping should return MappingBusy if an affected button
is in the down state, but this is a pain in the neck for every client
that has to deal with this function. Wouldn't it make more sense to
always have the function succeed and generate appropriate Press/Release
events if the state of a button changes?
2. Currently, button grabs behave differently depending on whether
buttons > 5 are involved. For example, if the sequence is "8 down, 1
down, 1 up, 8 up", then you'll miss the the last event due to the grab
being released when all of the first 5 buttons are up (this goes for
both Xi and core events). Is this the intended behavior? I don't think
I've seen it documented anywhere and it's kind of painful to deal with.
3. What is the intended behavior of Xinput button grabs with
GrabModeSync? The two devices that I have here behave differently
(xserver 18.104.22.168): The trackpoint will still send motion events
(clearly the more useful behavior), while the stylus works the same way
the core pointer does and queues them up until an appropriate
XAllowDeviceEvents call. I wonder if this is related to the fact that
bug #19034 only applies to the track point, not the stylus.
More information about the xorg