盖子放下时禁用触摸板

盖子放下时禁用触摸板

Kubuntu 11.10(上网本版)

我妻子的上网本有以下问题:当盖子合上时,它会不时激活触摸板 - 它会做出小动作和点击。笔记本电脑设置为在插入交流适配器时不进入睡眠状态,因此每当盖子合上时,它都会继续自行执行操作。

暂停电影并进入睡眠状态时特别烦人,因为过一会儿它会点击播放器窗口并继续播放电影,吓着周围的每个人。

我没有找到在盖子放下时禁用触摸板的任何选项,但也许有某种事件我可以挂接并手动禁用/重新启用它?

答案1

因为没有人能告诉我如何做我想做的事情,所以我想出了以下解决方案:

禁用触摸板/鼠标

$ xinput --list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ FSPPS/2 Sentelic FingerSensingPad         id=12   [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)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ USB2.0 UVC PC Camera                      id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ MSI Laptop hotkeys                        id=13   [slave  keyboard (3)]

我们可以看到,我的触摸板带有id=12。要禁用它,我需要运行:

$ xinput set-int-prop 12 "Device Enabled" 8 0

并再次启用它:

$ xinput set-int-prop 12 "Device Enabled" 8 1

获取盖层状态

首先,我可以从这个文件中获取系统盖子的状态:

$ cat /proc/acpi/button/lid/LID0/state 
state:      open

当我合上盖子时,状态就变成了closed

现在要将状态作为变量,我可以检查一个漂亮grep命令的退出状态:

$ grep -q closed /proc/acpi/button/lid/*/state
$ echo $?
1

因此,要根据盖子状态启用或禁用触摸板,我需要做的就是:

$ grep -q closed /proc/acpi/button/lid/*/state
$ xinput set-int-prop 12 "Device Enabled" 8 $?

挂钩 ACPI 盖子事件

为了在每次关闭或打开盖子时执行上述命令,我创建了/etc/acpi/local/lid.sh.post包含以下内容的文件:

export XAUTHORITY=`ls -1 /home/*/.Xauthority | head -n 1`
export DISPLAY=":`ls -1 /tmp/.X11-unix/ | sed -e s/^X//g | head -n 1`"

grep -q closed /proc/acpi/button/lid/*/state
xinput set-int-prop 12 "Device Enabled" 8 $?

XAUHTORITY并且DISPLAY需要进行设置以允许root(谁运行该acpid进程)访问用户的 X 会话。

答案2

您可以做的是在关闭盖子之前让计算机进入睡眠状态。这样,按下电源按钮将恢复睡眠,并且关闭盖子不会影响触摸板。

或者,您可以打开终端(ctrl+alt+T)并输入

sudo rmmod psmouse

它允许使用 USB 鼠标、无线鼠标或其他鼠标,但会关闭触摸板。

此外,您还可以选择安装触摸板指示器,它提供了一种简单的方法来停用触摸板

sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install touchpad-indicator

它将位于“应用程序”>“配件”下,或者,根据您的用户界面,它将是音量按钮旁边的一个小的“类似触摸板”的按钮

答案3

我也非常想要这样的功能,但从现在起,我已经养成了在关闭盖子之前使用快捷键(这里是 Fn + F7,取决于笔记本电脑的品牌和型号)禁用触摸板的习惯。当然,这根本不能解决问题,但这是一个很大的开始。如果你的笔记本电脑中没有预设的按键绑定,我很确定有办法手动绑定一个。

相关内容