如何在戴尔笔记本电脑中禁用/启用/切换触摸板

如何在戴尔笔记本电脑中禁用/启用/切换触摸板

我正在尝试调整 Ubuntu 16.04 上的触摸板,但似乎所有常用方法都不起作用。例如

synclient touchpadOff=1

它仍然有效!

$ xinput set-prop $DEVICE_ID "Device Enabled" 0
$ xinput list-props 15 |head -n2
  Device 'SynPS/2 Synaptics TouchPad':
    Device Enabled (168):   0

...它仍然有效!

我可以从“设置”应用程序中禁用它。但我希望能够将其映射到键盘快捷键,所以我正在寻找命令行解决方案。

如果你的回答在 Gnome-Shell 和 Unity 中都能正常工作,则可以获得加分 :-)

编辑:按照评论的要求输出 xinput。

$ xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                          id=12   [slave  pointer  (2)]
⎜   ↳ DLL06E4:01 06CB:7A13 Touchpad             id=13   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=15   [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                      id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=16   [slave  keyboard (3)]

注意:我已经用了 15$DEVICE_ID

编辑-感谢下面的回答这是我的切换脚本

你可以用一行代码完成,但这样你也会收到一个不错的通知。我已将其附加到快捷键上,效果很好。谢谢大家。

#!/bin/bash
if xinput list-props 13 | grep "Device Enabled (168):.*1" >/dev/null
then
  xinput disable 13
  notify-send -u low -i mouse "Trackpad disabled"
else
  xinput enable 13
  notify-send -u low -i mouse "Trackpad enabled"
fi

答案1

您可以使用以下命令关闭触摸板:

xinput disable 13

通过以下方式重新启用它

xinput enable 13

该设备不受 控制psmouse。它受 控制synaptics_i2c。它是设备 13。

您也可以像之前尝试过的那样通过名称切换,而不依赖于 ID。但是如果您不连接新的输入设备,ID 应该会保留。

这个答案了解详细信息。

要删除错误检测的设备,您需要添加i8042.nopnp内核启动参数。

答案2

使用 gsettings

如果您可以通过 更改设置gsettings,通常这是首选选项。由于您可以从系统设置中启用/禁用触摸板,而且我很确定系统设置使用gsettings,看起来下面的方法应该可以完成这项工作,在您的戴尔上也是如此。

切换触摸板的脚本

14.04

#!/usr/bin/env python3
import subprocess

key = "org.gnome.settings-daemon.peripherals.touchpad" ;val = "touchpad-enabled"
curr = subprocess.check_output(["gsettings", "get", key, val]).decode("utf-8").strip()
newval = "false" if curr == "true" else "true"
subprocess.Popen(["gsettings", "set", key, val, newval])

15.04+

#!/usr/bin/env python3
import subprocess

key = "org.gnome.desktop.peripherals.touchpad" ;val = "send-events"
curr = subprocess.check_output(["gsettings", "get", key, val]).decode("utf-8").strip()
newval = "disabled" if curr == "'enabled'" else "enabled"
subprocess.Popen(["gsettings", "set", key, val, newval])

使用它

  1. 将上述脚本(适用于你的 Ubuntu 版本)复制到一个空文件中,并将其另存为toggle_touchpad.py
  2. 将以下命令添加到快捷方式:

    python3 /path/to/toggle_touchpad.py
    

    选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。点击“+”并添加命令:

    python3 /path/to/toggle_touchpad.py
    

解释

禁用触摸板的命令:

14.04 版

gsettings set org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled false

适用于 15.04 +

gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled

读取当前状态

如果我们使用脚本通过以下命令读取当前设置:

gsettings get org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled

(14.04),或

gsettings get org.gnome.desktop.peripherals.touchpad send-events

(15.04+)

我们可以让脚本设置相反的值,这样切换触摸板。



编辑;切换脚本的 bash 版本

只是为了完整起见,并且因为 OP 指出python脚本可以工作,但不想使用python,所以bash两个切换脚本的版本:

14.04

#!/bin/bash

key="org.gnome.settings-daemon.peripherals.touchpad"
val="touchpad-enabled" ;curr="$key $val"

if [ "$(gsettings get $curr)" == "false" ]
then
 gsettings set $key $val true
else
 gsettings set $key $val false
fi

15.04+

#!/bin/bash

key="org.gnome.desktop.peripherals.touchpad"
val="send-events" ;curr="$key $val"

if [ "$(gsettings get $curr)" == "'enabled'" ]
then
 gsettings set $key $val disabled
else
 gsettings set $key $val enabled
fi

放在快捷键下

  • 将脚本另存为toggle_touchpad.sh
  • 将以下命令放在自定义快捷方式下:

    /bin/bash /path/to/toggle_touchpad.sh
    

答案3

我也是 16.04。我通常使用放在键盘快捷键上的一个小脚本。当我执行它时,它会关闭我的触摸板……但几秒钟后它又打开了……

剧本:

    #!/bin/sh

STATUS=`synclient | grep TouchpadOff | awk '{ print $3}'`

        if [ $STATUS != 1 ];
        then
                synclient touchpadOff=1;
        else
                synclient touchpadOff=2;
        fi
exit 0

在看到你的问题之前我不会尝试使用它......

答案4

我使用了OP的脚本,但是在我的笔记本中设备ID在每次启动时都会改变,所以我做了一些修改。

现在它运行得非常好。

# Find device id and store it in a variable

LINE=$(xinput | grep -o "Touchpad.*id=[0-9][0-9]")
TOUCH=$(echo $LINE | grep -o [0-9][0-9])

if xinput list-props $TOUCH | grep "Device Enabled (187):.*1" >/dev/null
then
  xinput disable $TOUCH
  notify-send -u low -i mouse "Touchpad disabled"
else
  xinput enable $TOUCH
  notify-send -u low -i mouse "Touchpad enabled"
fi

相关内容