Re: Lenovo T16 Gen 3 touchpad/trackpoint problem (7.9/amd64)

Jonathan Thornburg <[email protected]>
Newsgroups gmane.os.openbsd.misc
Message-ID <[email protected]>
Hi Ulf,

> For example, when typing triggers a cursor jump, it could be that an
> "oversensitive" touchpad or trackpoint issues a motion event. You could
> verify or discard that by looking at the output of
>     $ xinput test /dev/wsmouse2
> (or wsmouse0 for the touchpad) while you are testing.
> 
> In order to avoid confusion, you might leave out /dev/wsmouse and disable
> it instead, with
>     $ xinput disable /dev/wsmouse
> Disabling it via an xorg.conf with MatchDevicePath and the "Ignore" option
> doesn't work.
> 
> I assume that wsmouse1 - that is, the instance attached to ims - does
> nothing (except for causing an initialization error when you have
> configured the synaptics driver).
> 
> Events from the touchpad should be reported via wsmouse0, and trackpoint
> events via wsmouse2.  Anything else would be unusual.

Ok, I've made the following three tests, all using my "normal" xorg.conf:
--- begin /etc/X11/xorg.conf---
Section "InputClass"
	Identifier "wsmouse touchpad"
	Driver "synaptics"
	MatchIsTouchpad "on"
EndSection
--- end /etc/X11/xorg.conf---

===== test #1 (input devices disabled) =====
restart X server (as root, 'pkill X')
login as normal user
this gives the following X input devices:
--- begin 'xinput list' output ---
+ Virtual core pointer                    	id=2	[master pointer  (3)]
|   + Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
|   + /dev/wsmouse0                           	id=7	[slave  pointer  (2)]
|   + /dev/wsmouse                            	id=8	[slave  pointer  (2)]
+ Virtual core keyboard                   	id=3	[master keyboard (2)]
    + Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    + /dev/wskbd                              	id=6	[slave  keyboard (3)]
--- end 'xinput list' output ---
now run 'xinput test /dev/wsmouse0' in one xterm,
and 'xinput test /dev/wsmouse' in another xterm,

Now I moved the cursor to a 3rd xterm and used 'vi' to edit this message.
For a minute or two (during which time was typing, and also made a few
cursor movements) there were no cursor jumps and neither 'xinput test'
produced any output.  (I found this surprising -- I was expecting motion
events from at least one of the 'xinput test' instances.)  Then
'xinput test /dev/wsmouse0' produced the first 2 lines of output shown
below (but there was no cursor jump at that time).  A bit later the cursor
jumped (for the first time in this test) and 'xinput test /dev/wsmouse0'
produced the remainder of the output shown below.  'xinput test /dev/wsmouse'
never produce any output during this test.
--- begin 'xinput test /dev/wsmouse0' output ---
motion a[0]=466 a[1]=280 
motion a[0]=925 a[1]=491 
motion a[0]=0 a[1]=34 
motion a[0]=0 a[1]=46 
motion a[0]=0 a[1]=60 
motion a[1]=89 
motion a[1]=103 
motion a[1]=118 
motion a[0]=0 a[1]=132 
motion a[0]=4 a[1]=145 
motion a[0]=471 a[1]=361 
motion a[0]=448 a[1]=369 
--- end 'xinput test /dev/wsmouse0' output ---


===== test #2 (disabling /dev/wsmouse) =====
restart X server (as root, 'pkill X')
login as normal user
this gives the following X input devices:
--- begin 'xinput list' output ---
+ Virtual core pointer                    	id=2	[master pointer  (3)]
|   + Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
|   + /dev/wsmouse0                           	id=7	[slave  pointer  (2)]
|   + /dev/wsmouse                            	id=8	[slave  pointer  (2)]
+ Virtual core keyboard                   	id=3	[master keyboard (2)]
    + Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    + /dev/wskbd                              	id=6	[slave  keyboard (3)]
--- end 'xinput list' output ---
now (as normal user) 'xinput disable /dev/wsmouse'
this gives the following X input devices:
--- begin 'xinput list' output ---
+ Virtual core pointer                    	id=2	[master pointer  (3)]
|   + Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
|   + /dev/wsmouse0                           	id=7	[slave  pointer  (2)]
+ Virtual core keyboard                   	id=3	[master keyboard (2)]
    + Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    + /dev/wskbd                              	id=6	[slave  keyboard (3)]
∼ /dev/wsmouse                            	id=8	[floating slave]
--- end 'xinput list' output ---

The status now is:
* the touchpad works fine for moving the cursor
* the cursor never jumps when making such movements
* the trackpoint ("nipple") has no effect
* the touchpad buttons have no effect

In this condition, 'xinput test /dev/wsmouse0' does show events
for most cursor movements (done with the touchpad).  In particular,
I *never* saw events when moving the cursor around within a window.
For window-crossing cursor movements I occasionally (maybe 1/5 of the time)
saw events, but usually saw no events.  (All the windows in quesions
were in fact xterms.)

Here is some sample 'xinput test /dev/wsmouse0' output in this condition,
showing the events I did see for window-crossing cursor movements:
--- begin 'xinput test /dev/wsmouse0' output
motion a[0]=480 a[1]=356 
motion a[0]=921 a[1]=301 
motion a[0]=1046 a[1]=469 
motion a[0]=899 
motion a[1]=471 
motion a[0]=449 a[1]=518 
--- end 'xinput test /dev/wsmouse0' output


===== test #3 (disabling /dev/wsmouse0) =====
restart X server (as root, 'pkill X')
login as normal user
this gives the following X input devices:
--- begin 'xinput list' output ---
+ Virtual core pointer                    	id=2	[master pointer  (3)]
|   + Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
|   + /dev/wsmouse0                           	id=7	[slave  pointer  (2)]
|   + /dev/wsmouse                            	id=8	[slave  pointer  (2)]
+ Virtual core keyboard                   	id=3	[master keyboard (2)]
    + Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    + /dev/wskbd                              	id=6	[slave  keyboard (3)]
--- end 'xinput list' output ---
now (as normal user) 'xinput disable /dev/wsmouse0'
this gives the following X input devices:
--- begin 'xinput list' output ---
+ Virtual core pointer                    	id=2	[master pointer  (3)]
|   + Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
|   + /dev/wsmouse                            	id=8	[slave  pointer  (2)]
+ Virtual core keyboard                   	id=3	[master keyboard (2)]
    + Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    + /dev/wskbd                              	id=6	[slave  keyboard (3)]
∼ /dev/wsmouse0                           	id=7	[floating slave]
--- end 'xinput list' output ---

The status now is:
* the touchpad works fine for moving the cursor
* the trackpoint ("nipple") works fine for moving the cursor
* the cursor *always* jumps at the start of each movement
  (whether via touchpad or via the trackpoint ("nipple")
* the touchpad buttons work fine

In this condition, 'xinput test /dev/wsmouse' shows events
for some (about 1/2, I'd say), but not all, cursor movements
(all of which have a cursor-jump at the start of the movement).
I didn't notice any difference between within-window movements
and window-crossing movements.

Here is some sample 'xinput test /dev/wsmouse' output showing the
events I did see in this condition: when moving the cursor:
--- begin 'xinput test /dev/wsmouse' output
motion a[0]=0 a[1]=39 
motion a[0]=0 a[1]=50 
motion a[0]=0 a[1]=60 
motion a[0]=0 a[1]=69 
motion a[0]=0 a[1]=79 
motion a[0]=0 a[1]=114 
motion a[0]=0 a[1]=123 
motion a[0]=0 a[1]=130 
motion a[0]=0 a[1]=137 
motion a[0]=0 a[1]=143 
motion a[0]=0 a[1]=149 
motion a[0]=0 a[1]=156 
motion a[0]=0 a[1]=162 
motion a[1]=167 
motion a[0]=0 a[1]=171 
motion a[0]=0 a[1]=173 
motion a[1]=175 
motion a[0]=0 a[1]=177 
motion a[1]=179 
motion a[1]=180 
motion a[0]=2 
motion a[0]=0 
motion a[0]=3 
motion a[0]=11 a[1]=178 
motion a[0]=1 a[1]=130 
motion a[0]=2 a[1]=129 
motion a[0]=3 a[1]=128 
motion a[0]=4 
motion a[0]=0 a[1]=48 
motion a[0]=0 a[1]=61 
motion a[0]=0 a[1]=74 
motion a[0]=0 a[1]=86 
motion a[0]=0 a[1]=122 
motion a[0]=0 a[1]=134 
motion a[0]=0 a[1]=145 
motion a[0]=0 a[1]=154 
motion a[0]=0 a[1]=165 
motion a[0]=0 a[1]=175 
motion a[0]=0 a[1]=183 
motion a[0]=0 a[1]=191 
motion a[0]=0 a[1]=199 
motion a[0]=0 a[1]=206 
motion a[0]=0 a[1]=211 
motion a[1]=215 
motion a[0]=0 a[1]=217 
motion a[1]=220 
--- end 'xinput test /dev/wsmouse' output


Does this tell you anything interesting?
-- 
-- "Jonathan Thornburg [remove -color to reply]" <[email protected]>
   he/him; on the west coast of Canada; https://www.bkis-orchard.net/
   "!07/11 PDP a ni deppart m'I !pleH" -- slashdot.org page footer, 2022-10-16
   "eHpl !'I mrtpaep dnia P PD1 /107" -- slightly more plausible message given
                                         the PDP-11's little-endian byte order
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.