I got a new ASUS K501U laptop and installed Ubuntu 16.04 on it. I'm running kernel 4.7 although I had the same issue in 4.3. Multitouch features like two-finger scrolling aren't working. The touchpad is an Elantech touchpad, and Ubuntu doesn't appear to support it beyond generic drivers.
I've played around a lot with the X configuration. If I set the driver to libinput
or evdev
, it doesn't seem to work with multitouch and synaptics
throws errors. The device is named FTE1001:00 0B05:0101
, which is the I2C address of the device, and X detects it as a pointer instead of a touchpad, which appears to be the issue. It seems like Ubuntu doesn't recognize the device and by default assumes it's a pointer. Therefore, how can I tell Ubuntu to recognize it as a touchpad, not a pointer? Is the configuration for this in X or udev?
To be clear, this works (in an x.conf.d
file entry):
Section "InputClass"
Identifier "psmouse pointer catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
and this doesn't:
Section "InputClass"
Identifier "psmouse pointer catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Additionally, when I upgraded my kernel to 4.7, I noticed that DKMS was having issues building the psmouse
driver:
/var/lib/dkms/psmouse/elantech-x551c/build/src/cypress_ps2.c: In function ‘cypress_process_packet’:
/var/lib/dkms/psmouse/elantech-x551c/build/src/cypress_ps2.c:543:2: error: too few arguments to function ‘input_mt_assign_slots’
input_mt_assign_slots(input, slots, pos, n);
I added a 0
as a fifth argument per the definition of input_mt_assign_slots
from the Linux kernel multitouch library, and then DKMS seemed to build and install it correctly: psmouse elantech-x551c
. However, if I set the driver to psmouse
in the X config, X says it can't load the module (I don't even really understand what psmouse
is for so that might be entirely naive). What relationship does the psmouse
driver have to the drivers like evdev
and libinput
?
When I run xinput --list-props
with my current setup, I get this:
Device 'FTE1001:00 0B05:0101':
Device Enabled (137): 1
Coordinate Transformation Matrix (139): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (263): 0
Device Accel Constant Deceleration (264): 1.000000
Device Accel Adaptive Deceleration (265): 1.000000
Device Accel Velocity Scaling (266): 10.000000
Device Product ID (259): 2821, 257
Device Node (258): "/dev/input/event14"
Evdev Axis Inversion (267): 0, 0
Evdev Axes Swap (269): 0
Axis Labels (270): "Rel X" (147), "Rel Y" (148), "Rel Vert Wheel" (262)
Button Labels (271): "Button Left" (140), "Button Unknown" (261), "Button Right" (142), "Button Wheel Up" (143), "Button Wheel Down" (144), "Button Horiz Wheel Left" (145), "Button Horiz Wheel Right" (146)
Evdev Scrolling Distance (272): 1, 1, 1
Evdev Middle Button Emulation (273): 0
Evdev Middle Button Timeout (274): 50
Evdev Third Button Emulation (275): 0
Evdev Third Button Emulation Timeout (276): 1000
Evdev Third Button Emulation Button (277): 3
Evdev Third Button Emulation Threshold (278): 20
Evdev Wheel Emulation (279): 0
Evdev Wheel Emulation Axes (280): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (281): 10
Evdev Wheel Emulation Timeout (282): 200
Evdev Wheel Emulation Button (283): 4
Evdev Drag Lock Buttons (284): 0
Which again seems to imply that Ubuntu is recognizing it as mouse instead of as a touchpad.
tl; dr Ubuntu doesn't recognize my Elantech touchpad and assumes it's a pointer instead of a touchpad.