How can I disable touchscreen while using Wayland?
I am using Ubuntu Gnome 17.04. My touchscreen is glitchey; I think it is a hardware issue. I can disable my touchscreen when logged into Gnome using Xorg, but I can't figure it out when I login using Wayland. Any advise? Thanks! - Josh
Following steps in JNixus' answer on reddit gave me the result: touchscreen is disabled and touchpad still works: https://www.reddit.com/r/Dell/comments/76jm9x/dell_xps_9343_linux_wayland_touchscreen_help/
Using the ability to disable a single USB device, we need just to create a UDEV rule. Create the file in
/etc/udev/rules.d/80-touchscreen.rules
With following information
SUBSYSTEM=="usb", ATTRS{idVendor}=="04f3", ATTRS{idProduct}=="20d0", ATTR{authorized}="0"
You can find idVendor
and idProduct
by running
cat /proc/bus/input/devices
You can reload the rules without restart
udevadm control --reload-rules && udevadm trigger
The power of Google to the rescue. I followed the instructions from here and I was able to blacklist the touchscreen driver. As per the instructions, I created a file called hid_multitouch.conf
in /etc/modprobe.d
.
Inside the file I put:
# Use the following syntax
# blacklist driver-name
blacklist hid_multitouch
Save, restart, and no more glitchy touchscreen.
The hid_multitouch solution above disables all multitouch devices if there are multiple. But the udev route is an issue if your device isn't USB (I think). So what worked for me is to unbind the device from the driver, instead of unloading the whole driver.
You can find the devices linked to the hid-multitouch driver with
ls /sys/bus/hid/drivers/hid-multitouch/
That will show a couple of files and folders, but the actual device id's are a combination of characters and numbers like this: 0018:06CB:19AC.0001
.
You may have multiple devices in there. I just figured out the right one with trial and error. Once you know, you can unbind it from the driver with:
echo "0018:06CB:19AC.0001"> /sys/bus/hid/drivers/hid-multitouch/unbind
That will (temporarily) disable the driver. Then you could use rc-local or a dedicated systemd service to make it permanent. You can't do it in .bashrc
or similar user space scripts since you need to be root to do this.