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
xinput
utility, It is a propertylibinput Scroll Method Enabled
set to1, 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:12libinput
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:27xinput --list-props
. – Kevin Pierce Dec 01 '19 at 21:27Scroll Methods Available
doesn't list 2-finger scroll. For example, for me it's set to1, 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