Comment 58 for bug 296610

Revision history for this message
Dave (foceni) wrote :

Found out more!!

It works OK after reconnect, because the X input subsystem only sees the TouchPad (not the Stick) then. But both pointers work when used, so the TouchPad obviously sends also the Stick events (like a repeater):

This is xinput before reconnect:

"Virtual core pointer" id=0 [XPointer]
 Num_buttons is 32
 Num_axes is 2
 Mode is Relative
 Motion_buffer is 256
 Axis 0 :
  Min_value is -1
  Max_value is -1
  Resolution is 0
 Axis 1 :
  Min_value is -1
  Max_value is -1
  Resolution is 0
"Virtual core keyboard" id=1 [XKeyboard]
 Num_keys is 248
 Min_keycode is 8
 Max_keycode is 255
...
"AlpsPS/2 ALPS DualPoint TouchPad" id=8 [XExtensionPointer]
 Type is TOUCHPAD
 Num_buttons is 12
 Num_axes is 2
 Mode is Relative
 Motion_buffer is 256
 Axis 0 :
  Min_value is 0
  Max_value is 1023
  Resolution is 1
 Axis 1 :
  Min_value is 0
  Max_value is 767
  Resolution is 1
"DualPoint Stick" id=10 [XExtensionPointer]
 Type is MOUSE
 Num_buttons is 5
 Num_axes is 2
 Mode is Relative
 Motion_buffer is 256
 Axis 0 :
  Min_value is -1
  Max_value is -1
  Resolution is 1
 Axis 1 :
  Min_value is -1
  Max_value is -1
  Resolution is 1

See? Both devices are there, but when used simultaneously, they wreak havoc. So I force reconnect by using Stick and TouchPad at the same time for roughly 2 secs. I get this:

[ 3296.298172] psmouse.c: issuing reconnect request
[ 3297.452170] alps.c: Failed to enable absolute mode
[ 3298.512298] input: PS/2 ALPS DualPoint TouchPad as /devices/platform/i8042/serio1/input/input19

And now xinput looks like this:

"Virtual core pointer" id=0 [XPointer]
 Num_buttons is 32
 Num_axes is 2
 Mode is Relative
 Motion_buffer is 256
 Axis 0 :
  Min_value is -1
  Max_value is -1
  Resolution is 0
 Axis 1 :
  Min_value is -1
  Max_value is -1
  Resolution is 0
"Virtual core keyboard" id=1 [XKeyboard]
 Num_keys is 248
 Min_keycode is 8
 Max_keycode is 255
...
"PS/2 ALPS DualPoint TouchPad" id=8 [XExtensionPointer]
 Type is MOUSE
 Num_buttons is 5
 Num_axes is 2
 Mode is Relative
 Motion_buffer is 256
 Axis 0 :
  Min_value is -1
  Max_value is -1
  Resolution is 1
 Axis 1 :
  Min_value is -1
  Max_value is -1
  Resolution is 1

See? The Stick isn't there. Bot now both the TouchPad and the Stick work, there are no lost syncs any more and I can use them both simultaneously.

I think the problem is the TouchPad works also like a repeater for the Stick and when there is a Stick stand-alone + Stick repeated it causes troubles. If we could turn off TouchPad's repeater mode, I think the whole thing would be stable!

What do you think?