KDE touchpad configuration module supports both Libinput touchpad driver and Synaptics driver. Newer versions of distros like Fedora 22 comes with both libinput and synaptics drivers installed, where libinput driver is chosen by default for touchpads. Some users wanted to use synaptics driver and tweak all options exported by it using the touchpad KDE control module. To do so, simply uninstall the libinput driver (
xorg-x11-drv-libinput) and touchpad kcm uses synaptics driver which makes all the kcm options tweak-able. Some of those users reported that after uninstalling libinput driver but keeping synaptics driver (
xorg-x11-drv-synaptics), touchpad KCM displayed the error message “No touchpad found” and no options were editable as reported in this bug.
This wasn’t easily reproducible in my system though I have seen it once or twice. On a fresh Fedora 22 KDE spin installation which comes with both libinput and synaptics drivers, I was able to reproduce the issue by simply uninstalling libinput driver which helped to debug the issue. The
XlibBackend class first checked for the presence of X atom “
libinput Tapping Enabled” to determine if libinput driver is active. In that case, the
XlibLibinputBackend was instantiated which handled the configuration. Otherwise, fallback to synaptics driver and instantiate
The issue, turns out that X atom “
libinput Tapping Enabled” is active even after libinput driver is uninstalled! This was verified by checking the list of initialized atoms, with a nimble tool “
xlsatoms” from the
xorg-x11-utils package. With and without libinput driver installed, the output of this command were something like:
$ xlsatoms | grep -i tap 316 libinput Tapping Enabled $ dnf remove xorg-x11-drv-libinput (logout/restart and login again for X to use synaptics driver) $ xlsatoms | grep -i tap 313 libinput Tapping Enabled 342 synaptics Tap Action
Which clearly shows the libinput atom is active even when driver is not installed. That caused the KCM code to try to instantiate
XlibLibinputBackend which is non-existent and fails with error message “No touchpad found”. This seems to be a bug in Clutter, Mutter and Gtk+ as found out in this Fedora bug ‘touchpad not found’ . Those toolkits inadvertently created this atom while the intention was to check its existence; but I don’t know if kcm_touchpad code was also creating this atom.
With that finding,
kcm_touchpad code is revised to first instantiate
XlibLibinputBackend and checks for failures. If it fails, we try to instantiate the
XlibSynapticsBackend. It is a small fix, yet solves an issue that affected many users. This fix is confirmed by some testers and is now pushed to
plasma-desktop. The code adds a couple of error messages, so it is not available in 5.3.2 release but will be available in 5.4.0.