这是 2016 年的 Dell Inspiron 15 7559,当时预装了 Ubuntu。后来我在过去 4 年里一直运行 16.04,没有出现任何问题。
昨天,我进行了全新安装(擦除了磁盘) 与 20.04 (在旧版 BIOS 上,因为 uefi 导致音频问题)却发现我无法让拖动锁工作。
xinput list
通常给我(在 16.04 和 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)]
并且两个触摸板设备的 ID 似乎偶尔会发生变化,因此我使用两个设备的全名来设置它们的属性。
在 16.04 上,我曾经在登录时运行以下命令来启用拖动锁定
xinput --set-prop "ELAN1010:00 04F3:3012 Touchpad" "Synaptics Locked Drags" 1
xinput --set-prop "ETPS/2 Elantech Touchpad" "Synaptics Locked Drags" 1
这两个命令出错,因为属性名称已从 synaptics 更改为 libinput。xinput --list-props
在任何一个上运行都会给我以下结果
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
和
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
因此我自然地尝试了以下方法
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
成功设置属性,但触摸板的行为不会改变。
最后,我还更新了 gnome 设置并确保
gsettings 获取 org.gnome.desktop.peripherals.touchpad 点击并拖动
给我
真的
到目前为止我还无法完成这项工作。
PS:我使用 Xorg 作为
echo $XDG_SESSION_TYPE
输出
x11
PPS:相关设备的内容/proc/bus/input/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:我的驱动器上没有/etc/x11/xorg.conf
或/etc/x11/xorg.conf.d/
存在。
PPPPS:有一些关于此的信息libinput 手册页但老实说我不明白让它发挥作用所需的步骤
编辑: 这是一个交叉帖子来自阿斯库本图。
答案1
该问题已交叉发布到askubuntu,这是我的答案的副本从这里
根据评论,拖动锁确实有效,但很容易错过,因为拖动超时(即,在您从触摸板上抬起手指之后但在将其放回之前,“拖动”起作用的时间)非常小,为 300 ms。 Synaptics 默认为 5 秒。
之所以这么小,是为了不引人注目。尽管出于可访问性的原因将其增加到无穷大可能是有价值的。
ATM 没有简单的方法来更改超时。作为一名黑客,一个人可以改变该行的超时值并从源重建 libinput。
然而,正如OP正确指出的那样,有一个开放式MR使超时可配置。被作者放弃了相应的问题。但很容易看出维护者对这个想法持开放态度。您可以尝试加入讨论,如果您的推理足够令人信服,则重新设置和合并现有 MR 应该是微不足道的。