Touchpad too sensitive

Hi guys,

I’m struggling with a touchpad problem with my ‘Thinkpad L13 Yoga’ - probably since day 1 after installing Manjaro KDE half a year ago. Since I usually use an external mouse, I rarely use the touchpad and have therefore hardly noticed the problem:

My touchpad is too sensitive!

Unlike other touchpad related problems, my Elan touchpad is detected correctly and the pointer movement is as I would like it to be. What I’m talking about is the pressure threshold when a click is detected (with the option “tap to click” enabled). It’s too sensitive, so the movement of the pointer is interpreted as dragging in half the time.

Can someone help me fix this?
The system settings didn’t help me in any way. I will gladly give additional information from my side :slight_smile:

`inxi -Fxz`
System:    Kernel: 5.8.6-1-MANJARO x86_64 bits: 64 compiler: N/A Desktop: KDE Plasma 5.19.5 Distro: Manjaro Linux 
Machine:   Type: Convertible System: LENOVO product: 20R6S00800 v: ThinkPad L13 Yoga serial: <filter> 
           Mobo: LENOVO model: 20R6S00800 serial: <filter> UEFI: LENOVO v: R15ET25W (1.05 ) date: 10/15/2019 
Battery:   ID-1: BAT0 charge: 38.4 Wh condition: 39.4/46.0 Wh (86%) model: Celxpert 02DL031 status: Discharging 
CPU:       Topology: Quad Core model: Intel Core i5-10210U bits: 64 type: MT MCP arch: Kaby Lake rev: C L2 cache: 6144 KiB 
           flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 bogomips: 33615 
           Speed: 783 MHz min/max: 400/4200 MHz Core speeds (MHz): 1: 800 2: 800 3: 800 4: 800 5: 800 6: 800 7: 800 8: 800 
Graphics:  Device-1: Intel UHD Graphics vendor: Lenovo driver: i915 v: kernel bus ID: 00:02.0 
           Device-2: Chicony ThinkPad T490 Webcam type: USB driver: uvcvideo bus ID: 1-5:3 
           Device-3: Chicony Integrated 5M Camera type: USB driver: uvcvideo bus ID: 1-9:7 
           Display: x11 server: X.Org 1.20.8 driver: modesetting resolution: 1920x1080~60Hz 
           OpenGL: renderer: Mesa Intel UHD Graphics (CML GT2) v: 4.6 Mesa 20.1.7 direct render: Yes 
Audio:     Device-1: Intel vendor: Lenovo driver: snd_hda_intel v: kernel bus ID: 00:1f.3 
           Sound Server: ALSA v: k5.8.6-1-MANJARO 
Network:   Device-1: Intel Wireless-AC 9462 driver: iwlwifi v: kernel port: 2000 bus ID: 00:14.3 
           IF: wlp0s20f3 state: up mac: <filter> 
           Device-2: Intel Ethernet I219-V vendor: Lenovo driver: e1000e v: 3.2.6-k port: efa0 bus ID: 00:1f.6 
           IF: enp0s31f6 state: down mac: <filter> 
           IF-ID-1: vpn0 state: down mac: N/A 
Drives:    Local Storage: total: 476.94 GiB used: 95.74 GiB (20.1%) 
           ID-1: /dev/nvme0n1 vendor: Toshiba model: N/A size: 476.94 GiB 
Partition: ID-1: / size: 468.16 GiB used: 95.74 GiB (20.4%) fs: ext4 dev: /dev/nvme0n1p2 
Swap:      Alert: No Swap data was found. 
Sensors:   System Temperatures: cpu: 41.0 C mobo: 1.0 C 
           Fan Speeds (RPM): cpu: 0 
Info:      Processes: 287 Uptime: 8d 18h 07m Memory: 15.36 GiB used: 3.73 GiB (24.3%) Init: systemd Compilers: gcc: 10.2.0 
           Packages: 1719 Shell: Bash v: 5.0.18 inxi: 3.1.05 

Can anybody help me out here? :neutral_face:

First check if you are using libinput library or not by:

xinput list

Then find the id corresponding id of your touchpad and do

xinput list-props 13

where 13 is the id of your touchpad from xinput list.
Check if libinput is being used by the device.
( xinput requires xorg-xinput package )

So alternatively if you want, you can do,

grep -e “Using input driver ‘libinput’” path/to/xorg-log/Xorg.n.log

And check if libinput is being used for the touchpad device.
In my case this path is ~/.local/share/xorg/Xorg.0.log

To change sensitivity take a look at this arch wiki link for libinput

Hey,
thank you for your answer.
I was looking into this issue a while back, but it seems this still was at the old forum, so the thread was lost.

I’m using libinput and xinput list-props 18 gives

this here
Device 'Elan Touchpad':
        Device Enabled (178):   1
        Coordinate Transformation Matrix (180): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Tapping Enabled (365): 1
        libinput Tapping Enabled Default (366): 0
        libinput Tapping Drag Enabled (367):    0
        libinput Tapping Drag Enabled Default (368):    1
        libinput Tapping Drag Lock Enabled (369):       0
        libinput Tapping Drag Lock Enabled Default (370):       0
        libinput Tapping Button Mapping Enabled (371):  1, 0
        libinput Tapping Button Mapping Default (372):  1, 0
        libinput Natural Scrolling Enabled (316):       0
        libinput Natural Scrolling Enabled Default (317):       0
        libinput Disable While Typing Enabled (373):    1
        libinput Disable While Typing Enabled Default (374):    1
        libinput Scroll Methods Available (318):        1, 1, 0
        libinput Scroll Method Enabled (319):   1, 0, 0
        libinput Scroll Method Enabled Default (320):   1, 0, 0
        libinput Click Methods Available (375): 1, 1
        libinput Click Method Enabled (376):    1, 0
        libinput Click Method Enabled Default (377):    1, 0
        libinput Middle Emulation Enabled (325):        0
        libinput Middle Emulation Enabled Default (326):        0
        libinput Accel Speed (327):     0.400000
        libinput Accel Speed Default (328):     0.000000
        libinput Accel Profiles Available (329):        1, 1
        libinput Accel Profile Enabled (330):   1, 0
        libinput Accel Profile Enabled Default (331):   1, 0
        libinput Left Handed Enabled (332):     0
        libinput Left Handed Enabled Default (333):     0
        libinput Send Events Modes Available (301):     1, 1
        libinput Send Events Mode Enabled (302):        0, 0
        libinput Send Events Mode Enabled Default (303):        0, 0
        Device Node (304):      "/dev/input/event6"
        Device Product ID (305):        1267, 51
        libinput Drag Lock Buttons (334):       <no items>
        libinput Horizontal Scroll Enabled (335):       1

I’ll have a look at the link you provided.


Edit: I’m trying the methode described here right now.

For “strokes” without tapping I get

+-------------------------------------------------------------------------------+
| Thresh |   10   |  8   |  130   |  255   |                                    |
+-------------------------------------------------------------------------------+
| Touch  |  down  |  up  |  palm  | thumb  | min  | max  | p  | avg  |  median  |
+-------------------------------------------------------------------------------+
|  147   |   x    |  x   |        |        |  42  |  49  | 0  |  46  |    47    |
|  148   |   x    |  x   |        |        |  39  |  47  | 0  |  44  |    45    |
|  149   |   x    |  x   |        |        |  42  |  49  | 0  |  45  |    46    |
|  150   |   x    |  x   |        |        |  42  |  47  | 0  |  45  |    45    |
|  151   |   x    |  x   |        |        |  44  |  47  | 0  |  45  |    46    |
+-------------------------------------------------------------------------------+

For tapping:

+-------------------------------------------------------------------------------+
| Thresh |   10   |  8   |  130   |  255   |                                    |
+-------------------------------------------------------------------------------+
| Touch  |  down  |  up  |  palm  | thumb  | min  | max  | p  | avg  |  median  |
+-------------------------------------------------------------------------------+
|  152   |   x    |  x   |        |        |  47  |  54  | 0  |  51  |    52    |
|  153   |   x    |  x   |        |        |  41  |  53  | 0  |  47  |    49    |
|  154   |   x    |  x   |        |        |  46  |  55  | 0  |  51  |    52    |
|  155   |   x    |  x   |        |        |  46  |  55  | 0  |  50  |    51    |
|  156   |   x    |  x   |        |        |  44  |  54  | 0  |  49  |    51    |
+-------------------------------------------------------------------------------+

So I’m guessing I have set the DOWN value to something like 47, and the UP value for something lower than that. Am I doing this right?

Okay. I’m not getting it. I managed the find a threshold setting where taps are denoted with DOWN and just moving the pointer gestures are not.

Moving:

+-------------------------------------------------------------------------------+
| Thresh |   50   |  41  |  130   |  255   |                                    |
+-------------------------------------------------------------------------------+
| Touch  |  down  |  up  |  palm  | thumb  | min  | max  | p  | avg  |  median  |
+-------------------------------------------------------------------------------+
|  397   |        |  x   |        |        |  42  |  48  | 0  |  45  |    46    |
|  398   |        |  x   |        |        |  43  |  49  | 0  |  46  |    46    |
|  399   |        |  x   |        |        |  43  |  49  | 0  |  46  |    47    |
|  400   |        |  x   |        |        |  42  |  48  | 0  |  45  |    45    |
|  401   |        |  x   |        |        |  43  |  49  | 0  |  46  |    46    |
|  402   |        |  x   |        |        |  44  |  49  | 0  |  46  |    47    |
|  403   |        |  x   |        |        |  45  |  50  | 0  |  47  |    48    |
|  404   |        |  x   |        |        |  44  |  48  | 0  |  46  |    47    |
|  405   |        |  x   |        |        |  42  |  49  | 0  |  45  |    46    |
|  406   |        |  x   |        |        |  44  |  49  | 0  |  47  |    47    |
+-------------------------------------------------------------------------------+

Tapping:

+-------------------------------------------------------------------------------+
| Thresh |   50   |  41  |  130   |  255   |                                    |
+-------------------------------------------------------------------------------+
| Touch  |  down  |  up  |  palm  | thumb  | min  | max  | p  | avg  |  median  |
+-------------------------------------------------------------------------------+
|  407   |   x    |  x   |        |        |  49  |  55  | 0  |  52  |    53    |
|  408   |   x    |  x   |        |        |  44  |  53  | 0  |  49  |    50    |
|  409   |   x    |  x   |        |        |  45  |  53  | 0  |  49  |    50    |
|  410   |   x    |  x   |        |        |  48  |  55  | 0  |  52  |    53    |
|  411   |   x    |  x   |        |        |  46  |  53  | 0  |  49  |    50    |
|  412   |   x    |  x   |        |        |  46  |  52  | 0  |  49  |    50    |
|  413   |   x    |  x   |        |        |  46  |  54  | 0  |  50  |    51    |
|  414   |   x    |  x   |        |        |  44  |  51  | 0  |  47  |    48    |
|  415   |        |  x   |        |        |  43  |  50  | 0  |  47  |    48    |
|  416   |   x    |  x   |        |        |  45  |  51  | 0  |  48  |    50    |
+-------------------------------------------------------------------------------+

But nothing changed. Moving my pointer causes drag gestures or the selection of text.
The only thing what changed is that some strokes are not recognized anymore at all.

I am assuming you did something like
sudo libinput measure touchpad-pressure --touch-thresholds=10:8

It can be run multiple times with different thresholds and see if it matches your expectation. It is not a permanent change. (Made permanent only when added to device quirks)

As mentioned in the libinput docs, only you with access to the hardware can figure out the correct ranges.

May be someone with more experience can help you. :crossed_fingers:

You’re partially right. :slightly_smiling_face:
But I also managed to made the change permanent by using the device quirks mentioned at the bottom of this section.

A few points where I’m struggeling:

  • I’m not sure if I interpret the DOWN correctly. Is this when a touch is registered as a click or when a touch is noticed at all?
  • What exactly is the UP value for? Is it a sort f lower threshold for when a click should be registered as released?
  • How exactly do I restart X to apply the quirks? I tried with logging out and in, is that enough?
  • The pressure value of only moving the pointer and tap-to-click are really close for me. I’m not sure how I set the thresholds properly.