拖动锁在新安装的 Ubuntu 20.04 上不起作用

拖动锁在新安装的 Ubuntu 20.04 上不起作用

这是 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 应该是微不足道的。

相关内容