TrackPoint Driver – Change from Default Libinput to Synaptics

18.04libinputsynapticstrackpoint

The TrackPoint motion on this ThinkPad X390 with Ubuntu 18.04 LTS is jumpy, laggy and unusable for delicate, small movements. I have confirmed that this is likely a software issue because I've tested an external keyboard with a TrackPoint and it is fine on 16.04 but shows the same problems on 18.04.

I can see comments online that suggest that switching libinput to a newer version can help and that switching from libinput to Synaptics can help. How can the latter be done? I can see from here that a possibility is to install xserver-xorg-input-synaptics, however, when I do this I run into problems:

$ sudo apt install xserver-xorg-input-synaptics
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies.
 xserver-xorg-input-synaptics : Depends: xserver-xorg-core (>= 2:1.18.99.901)
E: Unable to correct problems, you have held broken packages.

$ sudo apt install xserver-xorg-core
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libunity-gtk2-parser0 libunity-gtk3-parser0 libxatracker2 unity-gtk-module-common xinput
Use 'sudo apt autoremove' to remove them.
Suggested packages:
  xfonts-100dpi | xfonts-75dpi
The following packages will be REMOVED
  ubuntu-desktop ubuntu-mate-core ubuntu-mate-desktop ubuntu-unity-desktop xorg
  xserver-xorg-core-hwe-18.04 xserver-xorg-hwe-18.04 xserver-xorg-input-all-hwe-18.04
  xserver-xorg-input-libinput-hwe-18.04 xserver-xorg-input-synaptics-hwe-18.04
  xserver-xorg-input-wacom-hwe-18.04 xserver-xorg-video-all-hwe-18.04
  xserver-xorg-video-amdgpu-hwe-18.04 xserver-xorg-video-ati-hwe-18.04
  xserver-xorg-video-fbdev-hwe-18.04 xserver-xorg-video-intel-hwe-18.04
  xserver-xorg-video-nouveau-hwe-18.04 xserver-xorg-video-qxl-hwe-18.04
  xserver-xorg-video-radeon-hwe-18.04 xserver-xorg-video-vesa-hwe-18.04
  xserver-xorg-video-vmware-hwe-18.04
The following NEW packages will be installed
  xserver-xorg-core
0 to upgrade, 1 to newly install, 21 to remove and 11 not to upgrade.
Need to get 1,351 kB of archives.
After this operation, 5,808 kB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.

How might one proceed?


EDIT: As per the suggestions of @Pilot6 here, I installed xserver-xorg-input-synaptics-hwe-18.04 (which appears to have been successful) and I checked the files at directory /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 removed the file 40-libinput.conf and rebooted in the hopes that the Synaptics driver would kick in. It didn't, resulting in the keyboard and TrackPoint (and touchpad) being unresponsive. Luckily the touchscreen and onscreen keyboard enabled replacing the file 40-libinput.conf. I'm not sure what to do next.

The contents of 40-libinput.conf are as follows:

# Match on all types of devices but joysticks
Section "InputClass"
        Identifier "libinput pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput touchscreen catchall"
        MatchIsTouchscreen "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput tablet catchall"
        MatchIsTablet "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

The contents of 70-synaptics.conf are as follows:

# Example xorg.conf.d snippet that assigns the touchpad driver
# to all touchpads. See xorg.conf.d(5) for more information on
# InputClass.
# DO NOT EDIT THIS FILE, your distribution will likely overwrite
# it when updating. Copy (and rename) this file into
# /etc/X11/xorg.conf.d first.
# Additional options may be added in the form of
#   Option "OptionName" "value"
#
Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
# This option is recommend on all Linux systems using evdev, but cannot be
# enabled by default. See the following link for details:
# http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html
      MatchDevicePath "/dev/input/event*"
EndSection

Section "InputClass"
        Identifier "touchpad ignore duplicates"
        MatchIsTouchpad "on"
        MatchOS "Linux"
        MatchDevicePath "/dev/input/mouse*"
        Option "Ignore" "on"
EndSection

# This option enables the bottom right corner to be a right button on clickpads
# and the right and middle top areas to be right / middle buttons on clickpads
# with a top button area.
# This option is only interpreted by clickpads.
Section "InputClass"
        Identifier "Default clickpad buttons"
        MatchDriver "synaptics"
        Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
        Option "SecondarySoftButtonAreas" "58% 0 0 15% 42% 58% 0 15%"
EndSection

# This option disables software buttons on Apple touchpads.
# This option is only interpreted by clickpads.
Section "InputClass"
        Identifier "Disable clickpad buttons on Apple touchpads"
        MatchProduct "Apple|bcm5974"
        MatchDriver "synaptics"
        Option "SoftButtonAreas" "0 0 0 0 0 0 0 0"
EndSection

Best Answer

For HWE installations the command would be

sudo apt install xserver-xorg-input-synaptics-hwe-18.04

You can switch to synaptics driver by removing /usr/share/X11/xorg.conf.d/XX-libinput.conf file.

Related Question