XInput 2.1 valuator values when resuming from SlaveSwitch
Paul Vojta
vojta at math.berkeley.edu
Wed Mar 13 00:12:27 PDT 2013
On Wed, Mar 13, 2013 at 02:18:26PM +1000, Peter Hutterer wrote:
> On Tue, Mar 12, 2013 at 12:53:33PM -0700, Paul Vojta wrote:
> > Dear all:
> >
> > I've been working on adding "smooth scrolling" to xdvi (after a long
> > hiatus), and I'm encountering some glitches when switching pointer devices.
> >
> > Specifically, when a slave is being switched back on, the scroll valuators
> > are always reported as having value 0 in the classes field of the
> > XIDeviceChanged event.
> >
> > When using the evdev driver, however, the valuator values are the same
> > as when the device was last used, and so this causes a large scroll
> > glitch when resuming using the device. (When using the synaptics driver,
> > the values are always reset, so there is no problem in that case.)
> > (I'm only checking the vertical scroll valuator so far, but I expect
> > that the same would be true for the horizontal scroll valuator.)
>
> unfortunately, that is the correct behaviour
> http://who-t.blogspot.com.au/2012/06/xi-21-protocol-design-issues.html
>
> the reset should not happen in synaptics, that's likely a bug in the driver.
No, it's not the problem with leaving, scrolling elsewhere, and then
re-entering a window. I've encountered and (imperfectly) dealt with that
problem already.
Rather, it's a problem with SlaveSwitch. It can happen even if the
pointer never leaves the window.
In more detail: I have my laptop's built-in Synaptics touchpad (with the
synaptics driver), and an external USB mouse (Cirque USB GlidePoint,
0488:0022) (with the evdev driver -- it behaves just like a normal mouse,
except that it doesn't cause a SlaveSwitch every time I jiggle the table).
I can start up xdvi, move the pointer into the window, scroll down with the
external (Cirque) mouse, switch to the built-in touchpad, resume using the
external mouse, and then when I scroll the mouse with it I get a huge scroll
effect instead of just one click.
There *is* a place in the SlaveSwitch XI2-event for a valuator value, but
it's always zero.
--Paul Vojta, vojta at math.berkeley.edu
More information about the xorg
mailing list