9

The touchpad on my lenovo x230 is not running the synaptics driver which I need for its increased capabilities. Instead, it's using libinput. How can I get the synaptics driver to take priority on boot?

The touchpad is (xinput list):

⎜   ↳ PS/2 Synaptics TouchPad                   id=13   [slave  pointer  (2)]

I can check what driver it's using with grep -i "Using input driver" /var/log/Xorg.0.log:

(II) Using input driver 'libinput' for 'PS/2 Synaptics TouchPad'

However, I definitely have the synaptics driver installed (sudo apt install xserver-xorg-input-synaptics):

Reading package lists... Done
Building dependency tree       
Reading state information... Done
xserver-xorg-input-synaptics is already the newest version (1.9.0-1ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

and I can see the synaptics driver's config file alongside the libinput driver (ls /usr/share/X11/xorg.conf.d/):

10-amdgpu.conf  40-libinput.conf          70-wacom.conf
10-quirks.conf  51-synaptics-quirks.conf
10-radeon.conf  70-synaptics.conf

My conclusion is the synaptics and libinput drivers are both installed, but for some reason libinput has higher priority. This is confusing since it's my understanding that the higher the number of the config file in /usr/share/X11/xorg.conf.d/, the higher the priority, meaning synaptics should be selected.

How can I get synaptics to run instead? So far, I attempted to move the synaptics.conf file to /etc/X11/xorg.conf.d because I read this directory has higher priority, but this did not work. The relevant section of /var/log/Xorg.0.log is

[     7.718] (II) config/udev: Adding input device PS/2 Synaptics TouchPad (/dev/input/event5)
[     7.718] (**) PS/2 Synaptics TouchPad: Applying InputClass "libinput pointer catchall"
[     7.718] (II) Using input driver 'libinput' for 'PS/2 Synaptics TouchPad'
[     7.718] (**) PS/2 Synaptics TouchPad: always reports core events
[     7.718] (**) Option "Device" "/dev/input/event5"
[     7.718] (**) Option "_source" "server/udev"
[     7.719] (II) event5  - PS/2 Synaptics TouchPad: is tagged by udev as: Mouse
[     7.719] (II) event5  - PS/2 Synaptics TouchPad: device is a pointer
[     7.719] (II) event5  - PS/2 Synaptics TouchPad: device removed
[     7.748] (**) Option "config_info" "udev:/sys/devices/platform/i8042/serio1/input/input5/event5"
[     7.748] (II) XINPUT: Adding extended input device "PS/2 Synaptics TouchPad" (type: MOUSE, id 13)
[     7.748] (**) Option "AccelerationScheme" "none"
[     7.748] (**) PS/2 Synaptics TouchPad: (accel) selected scheme none/0
[     7.748] (**) PS/2 Synaptics TouchPad: (accel) acceleration factor: 2.000
[     7.748] (**) PS/2 Synaptics TouchPad: (accel) acceleration threshold: 4
[     7.749] (II) event5  - PS/2 Synaptics TouchPad: is tagged by udev as: Mouse
[     7.749] (II) event5  - PS/2 Synaptics TouchPad: device is a pointer
[     7.749] (II) config/udev: Adding input device PS/2 Synaptics TouchPad (/dev/input/mouse0)
[     7.749] (II) No input driver specified, ignoring this device.
[     7.750] (II) This device may have been added with another device file.

What is the other device file it refers to? Where is libinput being selected as the touchpad driver, and how can I get synaptics selected instead?

Edit: My libinput version is

kp@kvnp:~$ libinput --version
1.10.4

Seemingly only one scroll method is available:

kp@kvnp:~$ xinput list-props 16
Device 'PS/2 Synaptics TouchPad':
    Device Enabled (150):   1
    Coordinate Transformation Matrix (152): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Natural Scrolling Enabled (285):   1
    libinput Natural Scrolling Enabled Default (286):   0
    libinput Scroll Methods Available (289):    0, 0, 1
    libinput Scroll Method Enabled (290):   0, 0, 1
    libinput Scroll Method Enabled Default (291):   0, 0, 1
    libinput Button Scrolling Button (292): 2
    libinput Button Scrolling Button Default (293): 2
    libinput Middle Emulation Enabled (294):    1
    libinput Middle Emulation Enabled Default (295):    0
    libinput Accel Speed (296): 0.000000
    libinput Accel Speed Default (297): 0.000000
    libinput Accel Profiles Available (298):    1, 1
    libinput Accel Profile Enabled (299):   1, 0
    libinput Accel Profile Enabled Default (300):   1, 0
    libinput Left Handed Enabled (301): 0
    libinput Left Handed Enabled Default (302): 0
    libinput Send Events Modes Available (270): 1, 0
    libinput Send Events Mode Enabled (271):    0, 0
    libinput Send Events Mode Enabled Default (272):    0, 0
    Device Node (273):  "/dev/input/event5"
    Device Product ID (274):    2, 1
    libinput Drag Lock Buttons (287):   <no items>
    libinput Horizontal Scroll Enabled (288):   1

When I try to get two finger scrolling in libinput I get the following output:

kp@kvnp:~$ xinput set-prop 16 290 1 0 0 
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  131 (XInputExtension)
  Minor opcode of failed request:  57 ()
  Value in failed request:  0x122
  Serial number of failed request:  19
  Current serial number in output stream:  20
  • FYI libinput has had 2-finger scroll for ages. From POV of xinput utility, It is a property libinput Scroll Method Enabled set to 1, 0, 0 (which has been the default for ages too). I don't know what other missing capabilities are you referring to, but it would be more productive to report that upstream, since synaptics long time obsoleted either. And just in case: note that Ubuntu by default has tons of very old packages, libinput in particular, so maybe that's the reason you don't see some feature that has actually been working in more-or-less recent libinput. – Hi-Angel Dec 01 '19 at 10:12
  • Thanks, but libinput is seemingly ignoring its config file in /usr/share/X11/xorg.conf.d/, so I can't enable these features without fighting for it. Besides, I don't actually want to. Thinkpad forums advocate the synaptics drivers as being better for the hardware I have. I'd simply like to run the synaptics driver for the touchpad and the libinput drivers for everything else. How do I ensure the synaptics driver is loaded on boot? – kevinkayaks Dec 01 '19 at 19:27
  • @Hi-Angel actually two finger scrolling is not even listed as an available option on my touchpad within xinput --list-props. – Kevin Pierce Dec 01 '19 at 21:27
  • @KevinPierce this is odd. Could you show what options it shows? Also, what libinput version do you have? – Hi-Angel Dec 01 '19 at 21:48
  • @Hi-Angel, included! I would be happy with the libinput solution if I could easily get two finger scrolling going. Seems it'd be easier to just switch the driver though if I knew how... – Kevin Pierce Dec 01 '19 at 22:24
  • Okay, apparently the reason you can't set it is because Scroll Methods Available doesn't list 2-finger scroll. For example, for me it's set to 1, 1, 0, which means I can use 2-finger scroll and edge-scroll. Why you don't have it is the question though. You know what… if you wanna test quickly whether your touchpad gonna work with libinput (it definitely should, but there could be some bug or whatever), I'd recommend to take latest Fedora desktop, burn it to a DVD or a USB stick, and then boot it without installation. If scroll works, then you know it's possible. – Hi-Angel Dec 02 '19 at 06:59
  • 1
    As for what to try to make scroll work with libinput: you'd need to try latest libinput and latest stable kernel (in case it was a problem in older kernel driver). – Hi-Angel Dec 02 '19 at 07:00

3 Answers3

4

I know this thread is old, but I recently had this same problem after updating to Ubuntu 20.04 LTS.

I Solved this problem by changing the synaptics number priority in /usr/share/X11/xorg.conf.d/.

In my case this was the output of the command ls -1 /usr/share/X11/xorg.conf.d/

10-amdgpu.conf
10-quirks.conf
10-radeon.conf
40-libinput.conf
51-synaptics-quirks.conf
70-synaptics.conf
70-wacom.conf

I changed the 70-synaptics.conf to 30-synaptics.conf, with the command

mv 70-synaptics.conf 30-synaptics.conf

which gives it a higher priority than 40-libinput.conf. Be sure to do this as root. Then reboot.

Pablo Bianchi
  • 15,657
x3ta
  • 41
2

I reinstalled the kernel and then installed both

xserver-xorg-input-multitouch

xserver-xorg-input-mouse

This fixed this issue by allowing the touchpad to be recognized as SynPS/2 Synaptics Touchpad instead of PS/2 Synaptics Touchpad. In short I think the kernel was identifying the touchpad as just a basic mouse. I am not really sure why.

  • This solved a similar problem in my case with libinput, but after I had misconfigured my system, xserver-xorg-input-multitouch had been missing for multitouch gestures on the touchpad to work. – Ingo Steinke Jun 01 '21 at 14:09
0

puchased a new touchpad/keyboard having touchpad too sensitive, installed synaptic and evdev.confg
10-amdgpu.conf
10-evdev.conf
10-quirks.conf
10-radeon.conf
40-libinput.conf
51-synaptics-quirks.conf
70-synaptics.conf
70-wacom.conf
libinput.conf was still default driver over evdev driver tried to "mv 70-synaptics.conf 30-synaptics.conf" didn't work had to cd to "/usr/share/X11/xorg.conf.d" after that "mv 70-synaptics.conf 30-synaptics.conf" worked and also changed libinput.conf to 70
10-amdgpu.conf
10-evdev.conf
10-quirks.conf
10-radeon.conf
30-synaptics.conf
51-synaptics-quirks.conf
70-libinput.conf
70-wacom.conf
not sure if this will fix my oversensitive touchpad/keyboard (Perixx PERIBOARD-510H Plus, Mini USB Touchpad Keyboard US English Layout 11005)
Device 'SINO WEALTH USB touchpad keyboard': Device Enabled (173) : 1
but the information here was very helpful, Thanks to everyone here
just checked with xinput list-props 11, libinput is still the device driver, oh well
my os is ubuntu 22.04.4 gnome version 42.9 kernel version 6.5.0-25-generic

jim56
  • 1
  • 1