1

This is a Dell Inspiron 15 7559 from 2016 which came preinstalled with Ubuntu at the time. I had later been running 16.04 for the past 4 years without a problem.

Yesterday, I did a fresh install (wiped out the disk) with 20.04 (on legacy bios because uefi caused issues with audio) only to find out that I cannot get drag lock to work.

xinput list

typically gives me (both on 16.04 and 20.04)

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN1010:00 04F3:3012 Mouse               id=12   [slave  pointer  (2)]
⎜   ↳ ELAN1010:00 04F3:3012 Touchpad            id=13   [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=16   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Sleep Button                              id=10   [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD: Integrate           id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=14   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=15   [slave  keyboard (3)]
    ↳ DELL Wireless hotkeys                     id=17   [slave  keyboard (3)]

and the id's across the two touchpad devices seem to occasionally change, so I use the full names of th two devices to set properties on them.

On 16.04, I used to run the following on login to enable drag lock

xinput --set-prop "ELAN1010:00 04F3:3012 Touchpad" "Synaptics Locked Drags" 1
xinput --set-prop "ETPS/2 Elantech Touchpad" "Synaptics Locked Drags" 1

These two commands error out as it turns out the property names have changed from synaptics to libinput. Running xinput --list-props on either one gives me the following

Device 'ELAN1010:00 04F3:3012 Touchpad':
    Device Enabled (197):   1
    Coordinate Transformation Matrix (199): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Tapping Enabled (349): 1
    libinput Tapping Enabled Default (350): 0
    libinput Tapping Drag Enabled (351):    1
    libinput Tapping Drag Enabled Default (352):    1
    libinput Tapping Drag Lock Enabled (353):   0
    libinput Tapping Drag Lock Enabled Default (354):   0
    libinput Tapping Button Mapping Enabled (355):  1, 0
    libinput Tapping Button Mapping Default (356):  1, 0
    libinput Natural Scrolling Enabled (333):   1
    libinput Natural Scrolling Enabled Default (334):   0
    libinput Disable While Typing Enabled (357):    1
    libinput Disable While Typing Enabled Default (358):    1
    libinput Scroll Methods Available (335):    1, 1, 0
    libinput Scroll Method Enabled (336):   1, 0, 0
    libinput Scroll Method Enabled Default (337):   1, 0, 0
    libinput Click Methods Available (359): 1, 1
    libinput Click Method Enabled (360):    0, 1
    libinput Click Method Enabled Default (361):    1, 0
    libinput Middle Emulation Enabled (362):    0
    libinput Middle Emulation Enabled Default (363):    0
    libinput Accel Speed (340): 0.000000
    libinput Accel Speed Default (341): 0.000000
    libinput Left Handed Enabled (345): 0
    libinput Left Handed Enabled Default (346): 0
    libinput Send Events Modes Available (318): 1, 1
    libinput Send Events Mode Enabled (319):    0, 0
    libinput Send Events Mode Enabled Default (320):    0, 0
    Device Node (321):  "/dev/input/event12"
    Device Product ID (322):    1267, 12306
    libinput Drag Lock Buttons (347):   <no items>
    libinput Horizontal Scroll Enabled (348):   1

and

Device 'ETPS/2 Elantech Touchpad':
    Device Enabled (197):   1
    Coordinate Transformation Matrix (199): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Tapping Enabled (349): 1
    libinput Tapping Enabled Default (350): 0
    libinput Tapping Drag Enabled (351):    1
    libinput Tapping Drag Enabled Default (352):    1
    libinput Tapping Drag Lock Enabled (353):   0
    libinput Tapping Drag Lock Enabled Default (354):   0
    libinput Tapping Button Mapping Enabled (355):  1, 0
    libinput Tapping Button Mapping Default (356):  1, 0
    libinput Natural Scrolling Enabled (333):   1
    libinput Natural Scrolling Enabled Default (334):   0
    libinput Disable While Typing Enabled (357):    1
    libinput Disable While Typing Enabled Default (358):    1
    libinput Scroll Methods Available (335):    1, 1, 0
    libinput Scroll Method Enabled (336):   1, 0, 0
    libinput Scroll Method Enabled Default (337):   1, 0, 0
    libinput Click Methods Available (359): 1, 1
    libinput Click Method Enabled (360):    0, 1
    libinput Click Method Enabled Default (361):    1, 0
    libinput Middle Emulation Enabled (362):    0
    libinput Middle Emulation Enabled Default (363):    0
    libinput Accel Speed (340): 0.000000
    libinput Accel Speed Default (341): 0.000000
    libinput Left Handed Enabled (345): 0
    libinput Left Handed Enabled Default (346): 0
    libinput Send Events Modes Available (318): 1, 1
    libinput Send Events Mode Enabled (319):    0, 0
    libinput Send Events Mode Enabled Default (320):    0, 0
    Device Node (321):  "/dev/input/event7"
    Device Product ID (322):    2, 14
    libinput Drag Lock Buttons (347):   <no items>
    libinput Horizontal Scroll Enabled (348):   1

Therefore I naturally tried the following

xinput --set-prop "ELAN1010:00 04F3:3012 Touchpad" "libinput Tapping Drag Lock Enabled" 1
xinput --set-prop "ETPS/2 Elantech Touchpad" "libinput Tapping Drag Lock Enabled" 1

which succeed in setting the properties but the behavior of the touchpad does not change.

Finally, I've also updated gnome settings and ensure that

gsettings get org.gnome.desktop.peripherals.touchpad tap-and-drag

gives me

true

So far I am unable to make this work.

PS: I am using Xorg as

echo $XDG_SESSION_TYPE

outputs

x11

PPS: The contents of /proc/bus/input/devices are as follows for the relevant devices

I: Bus=0011 Vendor=0002 Product=000e Version=0000
N: Name="ETPS/2 Elantech Touchpad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input6
U: Uniq=
H: Handlers=mouse2 event7 
B: PROP=5
B: EV=b
B: KEY=e420 10000 0 0 0 0
B: ABS=661800011000003

I: Bus=0018 Vendor=04f3 Product=3012 Version=0100
N: Name="ELAN1010:00 04F3:3012 Touchpad"
P: Phys=i2c-ELAN1010:00
S: Sysfs=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-ELAN1010:00/0018:04F3:3012.0001/input/input15
U: Uniq=
H: Handlers=mouse1 event12 
B: PROP=5
B: EV=1b
B: KEY=e520 10000 0 0 0 0
B: ABS=2e0800000000003
B: MSC=20

PPPS: There is no /etc/x11/xorg.conf or /etc/x11/xorg.conf.d/ present on my drive.

PPPPS: There is some information about this in the libinput man pages but I honestly don't understand the steps needed to make it work

Edit: This is a cross post from askubuntu.

1

the question was cross-posted to askubuntu, this is a copy of my answer from here


Per comments, drag lock does actually work, but it is easy to miss because the drag timeout (i.e. time for which "drag" works after you lifted a finger from the touchpad but before you put it back) is very small, it is 300 ms. Synaptics had it 5 sec by default.

The reason it is so small is to be unobtrusive. Though there probably may be a value in increasing it up to infinity for accessibility reasons.

ATM there's not easy way to change timeout. As a hack, one can change the timeout value on this line and rebuild libinput from sources.

However, as rightfully noted by the OP, there is an open MR to make the timeout configurable. Which was abandoned by the author as well as the corresponding issue. But it's easy to see that the maintainer is open to the idea. You may try to join the discussion and if your reasoning turns out to be convincing enough, it should be trivial to rebase and merge that already existing MR.

1
  • Thanks @Hi-Angel I had forgotten about this cross-post. – Serkan Durusoy May 14 '20 at 6:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.