How to enable laptop touchscreen?

My laptop has a touchscreen that used to work under Linux, but it stopped working a while ago and I’m not sure why. I’m using X, not Wayland. Here’s what I already tried doing to re-enable the touchscreen:

~ ❱ xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Logitech Gaming Mouse G600              	id=10	[slave  pointer  (2)]
⎜   ↳ MELF0411:00 1FD2:4010 Touchscreen       	id=13	[slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                	id=15	[slave  pointer  (2)]

So you can see that it recognizes that I have a touchscreen.

~ ❱ xinput enable 13
~ ❱ xinput list-props 13
Device 'MELF0411:00 1FD2:4010 Touchscreen':
	Device Enabled (185):	1
	Coordinate Transformation Matrix (187):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Calibration Matrix (346):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Calibration Matrix Default (347):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Send Events Modes Available (307):	1, 0
	libinput Send Events Mode Enabled (308):	0, 0
	libinput Send Events Mode Enabled Default (309):	0, 0
	Device Node (310):	"/dev/input/event7"
	Device Product ID (311):	8146, 16400

Here you can see that it says that the device is enabled, but it still doesn’t work.

I installed all the drivers listed on the archwiki page (https://wiki.archlinux.org/title/Touchscreen), and it still doesn’t work.

~ ❱ less /proc/bus/input/devices
N: Name="MELF0411:00 1FD2:4010 Touchscreen"
P: Phys=i2c-MELF0411:00
S: Sysfs=/devices/pci0000:00/0000:00:15.3/i2c_designware.1/i2c-1/i2c-MELF0411:00/0018:1FD2:4010.0001/input/input13
U: Uniq=
H: Handlers=event7 mouse0
B: PROP=0
B: EV=1b
B: KEY=400 0 0 0 0 0
B: ABS=10000000003
B: MSC=10

This command also shows that the touchscreen gets recognized as existing.

~ ❱ sudo cat /dev/input/event7

This doesn’t output anything, even when I run my finger over the screen.

~ ❱ cat /usr/share/X11/xorg.conf.d/10-evdev.conf
Section "InputClass"
        Identifier "evdev touchscreen catchall"
        MatchIsTouchscreen "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection
~ ❱ cat /usr/share/X11/xorg.conf.d/40-libinput.conf
Section "InputClass"
        Identifier "libinput touchscreen catchall"
        MatchIsTouchscreen "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

I didn’t disable it in any of these conf files.

~ ❱ udevadm info --export-db
P: /devices/pci0000:00/0000:00:15.3/i2c_designware.1/i2c-1/i2c-MELF0411:00/0018:1FD2:4010.0001/input/input13/event7
N: input/event7
L: 0
S: input/by-path/pci-0000:00:15.3-platform-i2c_designware.1-event
E: DEVPATH=/devices/pci0000:00/0000:00:15.3/i2c_designware.1/i2c-1/i2c-MELF
0411:00/0018:1FD2:4010.0001/input/input13/event7
E: SUBSYSTEM=input
E: DEVNAME=/dev/input/event7
E: MAJOR=13
E: MINOR=71
E: USEC_INITIALIZED=3061740
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_INPUT_WIDTH_MM=341
E: ID_INPUT_HEIGHT_MM=195
E: ID_PATH=pci-0000:00:15.3-platform-i2c_designware.1
E: ID_PATH_TAG=pci-0000_00_15_3-platform-i2c_designware_1
E: LIBINPUT_DEVICE_GROUP=18/1fd2/4010:i2c-MELF0411:00
E: DEVLINKS=/dev/input/by-path/pci-0000:00:15.3-platform-i2c_designware.1-event

It literally even says here ID_INPUT_TOUCHSCREEN=1.

So I’m confused why despite every program saying that the device is a touchscreen, and that it is enabled and turned on, it’s still not working.

The touchscreen isn’t broken because it still works just fine when I dual boot Windows.

Hello,

Tiling WMs are known to be a bit of hustle when comes to touchscreen. Have you seen this?

That leads to this

from other sources you come to some dotfiles for bspwm

If you want proper touchscreen support, probably need to install touchegg and set it to mimic keyboard shortcuts, or use a DE like KDE Plasma or Gnome.

1 Like