这是 2016 年的戴尔 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 手册页但老实说,我不明白要实现它需要哪些步骤
编辑 根据 @Hi-Angel 的评论,libinput 确实支持拖动锁定,但具有默认且不可配置的 300 毫秒超时,因此这里有一些更新可以帮助朝这个方向寻求解决方案:
我不熟悉 libinput 的内部工作原理和 C 编程,你认为有没有办法让我在我的计算机上运行它(而不必重建自定义的本地版本的 libinput 并永远维护它?)_
答案1
答案2
这是触摸板的解决方案。
使用 安装 synaptics sudo apt install xserver-xorg-input-synaptics
,然后重新启动。
然后synclient LockedDrags=1
它就应该可以工作了。
仍需执行:鼠标也一样,并使更改在会话间永久生效。您将向我们解释如何操作。