libinput 手掌检测不起作用

libinput 手掌检测不起作用

我最近购买了一台新的 Dell XPS 15 并在其上安装了 Debian。它之前运行的是 Windows 10,手掌检测/拒绝功能运行得很好,正如我所期望的那样。但现在,运行 Debian 并使用libinput手掌检测(据我所知)不存在/完全损坏。

输出xinput | grep -i touchpad

⎜   ↳ SynPS/2 Synaptics TouchPad                id=13   [slave  pointer  (2)]

输出xinput list-props 13

Device 'SynPS/2 Synaptics TouchPad':
    Device Enabled (116):   1
    Coordinate Transformation Matrix (118): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Tapping Enabled (269): 1
    libinput Tapping Enabled Default (270): 0
    libinput Tapping Drag Enabled (271):    1
    libinput Tapping Drag Enabled Default (272):    1
    libinput Tapping Drag Lock Enabled (273):   0
    libinput Tapping Drag Lock Enabled Default (274):   0
    libinput Tapping Button Mapping Enabled (275):  1, 0
    libinput Tapping Button Mapping Default (276):  1, 0
    libinput Accel Speed (251): 0.000000
    libinput Accel Speed Default (252): 0.000000
    libinput Natural Scrolling Enabled (256):   0
    libinput Natural Scrolling Enabled Default (257):   0
    libinput Send Events Modes Available (236): 1, 1
    libinput Send Events Mode Enabled (237):    0, 0
    libinput Send Events Mode Enabled Default (238):    0, 0
    libinput Left Handed Enabled (258): 0
    libinput Left Handed Enabled Default (259): 0
    libinput Scroll Methods Available (260):    1, 1, 0
    libinput Scroll Method Enabled (261):   1, 0, 0
    libinput Scroll Method Enabled Default (262):   1, 0, 0
    libinput Click Methods Available (277): 1, 1
    libinput Click Method Enabled (278):    1, 0
    libinput Click Method Enabled Default (279):    1, 0
    libinput Middle Emulation Enabled (265):    0
    libinput Middle Emulation Enabled Default (266):    0
    libinput Disable While Typing Enabled (280):    1
    libinput Disable While Typing Enabled Default (281):    1
    Device Node (239):  "/dev/input/event1"
    Device Product ID (240):    2, 7
    libinput Drag Lock Buttons (267):   <no items>
    libinput Horizontal Scroll Enabled (268):   1

我的/etc/X11/xorg.conf.d/40-libinput.conf文件:

Section "InputClass"
        Identifier      "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver          "libinput"
        Option          "Tapping"                       "on"
        Option          "TappingDrag"                   "on"
EndSection

A输入事件样本生成sudo evemu-record /dev/input/event1 >> eventlog-finger.log,使用我的手指在触摸板上,就像我在正常使用期间所做的那样。

A输入事件样本使用我的手掌在触摸板上生成sudo evemu-record /dev/input/event1 >> eventlog-palm.log,就像我尝试打字时发生的那样。

如果您查看事件日志,您会发现它ABS_TOOL_WIDTH仅在每个日志的开头出现一次。从我发现的情况来看,这里这里,这是一个(某种程度上)已知的问题,ABS_TOOL_WIDTH从未报告为 0 以外的任何内容。这显然会破坏使用突触驱动程序的手掌检测,我假设在 libinput 中也是如此。

尝试在我的笔记本电脑上做任何事情而不插入外部鼠标并禁用触摸板几乎是不可能的,鼠标会跳动并且更麻烦,有时我的手掌可以点击触摸板,使我在不可预测的地方或根本无处打字。

如果有人知道如何甚至开始解决这个问题,我们将不胜感激。

编辑1:

我应该提一下,我已尝试使用 Synaptics 触摸板驱动程序,包括执行以下操作:

apt install -y xserver-xorg-input-synaptics
synclient PalmDetect=1

然后通过乱搞以下设置无济于事:

synclient PalmMinWidth=4
synclient PalmMinZ=80

我已经尝试了 0 到 15 之间的所有内容PalmMinWidth以及 50 到 150 之间的所有内容PalmMinZ没有什么作品。但如果还不清楚 - 我已经知道这是因为ABS_TOOL_WIDTH 没有报道。我确信这一点,因此这不是我问题的基础 - 我的问题涉及我将如何修复报告ABS_TOOL_WIDTH或其他会产生类似结果的解决方法。

答案1

创建/etc/X11/xorg.conf.d/50-synaptics.conf包含以下内容的文件:

Section "InputClass"
        Identifier      "touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver          "synaptics"
        Option          "PalmDetect"          "1"
        Option          "PalmMinWidth"        "5"
        Option          "PalmMinZ"            "100"
EndSection

之后重新启动笔记本电脑以应用新配置。尝试PalmMinWidth选择以获得最佳结果 - 尝试值34

另一种方法是临时设置属性,只需在终端中执行:

xinput set-prop 13 "Synaptics Palm Detection" 1
xinput set-prop 13 "Synaptics Palm Dimensions" 5, 5

尝试不同的值Synaptics Palm Dimensions

另请阅读synaptics - Synaptics 触摸板输入驱动程序

答案2

经过数周的重大烦恼,我终于找到了一个愚蠢简单的解决方案:

只需升级软件包

我下载了以下4个包:

  • libinput10_1.11.3-1_amd64.deb
  • libinput-bin_1.11.3-1_amd64.deb
  • libwacom2_0.30-1_amd64.deb
  • libwacom-common_0.30-1_all.deb

并按dpkg如下方式安装它们:

trevor@xps:~$ cd ~/downloads/
trevor@xps:~$ sudo dpkg -i libwacom-common_0.30-1_all.deb
...dpkg runs...
trevor@xps:~$ sudo dpkg -i libwacom2_0.30-1_amd64.deb
...dpkg runs...
trevor@xps:~$ sudo dpkg -i libinput-bin_1.11.3-1_amd64.deb
...dpkg runs...
trevor@xps:~$ sudo dpkg -i libinput10_1.11.3-1_amd64.deb
...dpkg runs...

并重新启动我的系统(重新启动 X 也应该可以工作)。当我的笔记本电脑重新启动后,手掌检测功能就发挥了作用。

答案3

我知道我的答案并不是真正针对特定场景(操作系统、笔记本电脑型号等),但我不得不提及是什么为我解决了这个问题。

我在 Lenovo ThinkPad E14 Gen 4 上使用 Fedora 38、KDE ​​Plasma 5.27 和 X11。

由于某种原因我安装了:

xorg-x11-drv-synaptics-devel 1.9.2-3.fc38
xorg-x11-drv-synaptics-legacy 1.9.2-3.fc38

这些转速是一切的根本原因。删除它们并仅保留 后libinput,手掌检测(尽管删除上述软件包后 KDE 设置中不再有此类设置/配置)开始像魅力一样工作。

答案4

libinput 进行基于压力的手掌检测,但它需要阈值,请参阅此处的链接:https://wayland.freedesktop.org/libinput/doc/latest/touchpad-Pressure-debugging.html

这就是您在这里可以做的所有事情,因为工具宽度永远不会设置(尽管 libinput 无论如何都不会考虑这一点),但是一旦您在 quirk 文件(或 hwdb,如果您在 libinput <= 上)中设置压力,可能性就很高1.11)它会起作用的。

一旦确定了压力阈值,请提交错误。

相关内容