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