暂停/恢复后禁用触摸板

暂停/恢复后禁用触摸板

该网站上有几个关于禁用笔记本电脑触摸板的问题,但似乎都没有完全回答我的问题。

我想禁用我的触摸板(我已经做了这一点)并在挂起/恢复后保持其禁用状态(我在这里失败了)。

我在一台便宜的中国笔记本电脑上运行着 Ubuntu 12.04。

我有一个可执行文件 /home/yannick/bin/notouch,如下所示:

xinput set-prop `xinput list | grep "ImPS/2 Generic" | awk '{print $7}' | sed "s/id=//"` "Device Enabled" 0

该脚本运行一次 xinput 以获取(最终被证明是)我的触摸板的 ID 号,然后再次运行 xinput 以禁用触摸板。我在我的 .bashrc 和其他地方都有它。

目前,当我暂停然后恢复笔记本电脑时,触摸板会再次激活,我真的想阻止这种情况发生。所以我还有一个文件

/etc/pm/sleep.d/97disable_touchpad(由 root 拥有,+x)如下所示:

#!/bin/bash
case "$1" in
    thaw|resume)
        /home/yannick/bin/notouch 2>/tmp/notoucherrors
        ;;
    *)
        ;;
esac
exit $?

该死,它不起作用!事实上,脚本似乎在恢复后运行,并且 /tmp/notoucherrors 的内容是:

Unable to connect to X server
Unable to connect to X server

哎呀,我想让触摸板在休眠和恢复时保持禁用状态。我该怎么做?

以下是我尝试过但无法完成的另外两件事:

1)$synclient TouchpadOff=1

这将返回

Couldn't find synaptics properties. No synaptics driver loaded?

2) 系统设置 -> 鼠标和触摸板。我只有鼠标选项(我甚至可以说,出于某种原因,ubuntu 认为我的触摸板是鼠标)。特别是,没有关闭触摸板的选项——我只有鼠标选项(常规、指针速度、拖放、双击超时)。

答案1

我有一个暂时能用的部分解决方法——我随机设置 DISPLAY 变量并希望它能用。目前有效。我还以我的用户 ID(而不是 root)身份运行 notouch。

我在 sleep.d 中的 disable_touchpad 脚本现在如下所示:

#!/bin/bash
case "$1" in
    thaw|resume)
        echo "running notouch" >> /tmp/notouchlogger
        export DISPLAY=:0
        su -c - yannick /home/yannick/bin/notouch 2>>/tmp/notoucherrors
        ;;
    *)
        ;;
esac
exit $?

而且它似乎有效。

答案2

使用 root 权限,尝试创建文件 /etc/pm/sleep.d/0000trackpad。

sudo -i gedit /etc/pm/sleep.d/0000trackpad

如果需要,请输入密码,在 gedit 中输入以下代码并保存文件

#!/bin/sh
case "$1" in
    resume)
        DISPLAY=:0.0 su USER -c '/usr/bin/synclient TouchpadOff=0' ;;
esac

注销并重新登录

答案3

创建包含以下内容的文件/etc/X11/xorg.conf.d/95-disable-touchpad.conf

Section "InputClass"
        Identifier "libinput touchpad disable-by-default"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        Option "SendEventsMode" "disabled"
EndSection

这将禁止所有触摸板设备发送 X 事件。

  • 如果您稍后想要启用(第一个)触摸板:
  xinput --set-prop "$(xinput --list --name-only | grep -i touchpad | head -n 1)" "libinput Send Events Mode Enabled" 0 0`
  • 再次手动禁用它:
xinput --set-prop "$(xinput --list --name-only | grep -i touchpad | head -n 1)" "libinput Send Events Mode Enabled" 1 1

在 Dell Latitude 5520 上使用 Debian Bullseye 在挂起/休眠/恢复/解冻方面测试成功,但在其他地方应该类似。

另外,显然可以使用Option "SendEventsMode" "disabled-on-external-mouse"这种方法,只有在没有连接外接鼠标时触摸板才会被禁用,否则触摸板将保持启用状态(但我还没有尝试过这种配置)。

相关内容