启用/禁用触摸板


17

我设法在华硕ux501 vw上安装Ubuntu 16.04,但某些快捷方式无法正常工作。我不是要全部修复它们,而只是要解决一个问题:允许我启用或禁用触摸板的快捷方式,因此我可以编写有关触摸板的长文档。

我试图在Google上找到它,但一无所获。

有人可以解释一下我该如何解决吗?谢谢 !

Answers:


24

我从negusp的答案创建了这个bash脚本。它查找并切换TouchPad设备。您可以在系统设置中为其配置自定义快捷方式。

#!/bin/bash

read TPdevice <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' )
state=$( xinput list-props "$TPdevice" | grep "Device Enabled" | grep -o "[01]$" )

if [ "$state" -eq '1' ];then
    xinput --disable "$TPdevice" && notify-send -i emblem-nowrite "Touchpad" "Disabled"
else
    xinput --enable "$TPdevice" && notify-send -i input-touchpad "Touchpad" "Enabled"
fi

我设置Ctrl+ Shift+ F9的切换触摸板启用和禁用是这样的:

在此处输入图片说明

编辑:您可能需要使用命令chmod + x filename或将/ bin / bash / filepath输入到“定制”快捷方式窗口的“命令”字段来使脚本可执行。


2
几乎不需要链接grepsed。您可以轻松地将两者合并为sed -nre '/TouchPad/s/.*id=([0-9]*).*/\1/p'
David Foerster,2017年

3
在得到错误第6行后,Ubuntu 17.10的脚本中的一个小更正:[::整数表达式预期无法找到设备将TouchPad更改为Touchpad
Gregor Grajzar

1
很棒的答案!我唯一的补充是分别向zenity --info --text "Touchpad DISABLED" --timeout=2和添加和zenity --info --text "Touchpad ENABLED" --timeout=2ifelse弹出一个窗口,该窗口宣布新状态,然后在2秒内自动关闭。
加布里埃尔·斯台普斯

1
请在此处查看我的详细修改:askubuntu.com/a/1109515/327339
Gabriel Staples

1
更新:有些系统显示,Touchpad而不是TouchPad在的输出中显示xinput,因此我更新了答案以搜索两者。另外,我还使用使其正确解决了慢速滚轮问题imwheel。查看全部答在这里:askubuntu.com/questions/844151/enable-disable-touchpad/...
加布里埃尔斯台普斯

11

您需要快捷方式,但是可以轻松地将2个脚本放在桌面上并执行它们。

首先,去终端。输入xinput。输出示例:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                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)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Laptop_Integrated_Webcam_1.3M             id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys 

找到触摸板。在此示例中,触摸板列为id = 12

使用以下命令创建第一个脚本:

#!/bin/bash
xinput enable 12

保存并命名touchpadenable.sh,并在终端中使用以下命令将其标记为可执行文件:

chmod +x touchpadenable.sh

再次执行完全相同的操作,但是将文件重命名为touchpaddisable.sh(或其他名称),而不是

xinput enable 12

使用命令

xinput disable 12

保存,标记为可执行文件,您应该能够从桌面运行脚本。注意:您可能必须右键单击脚本,单击属性,然后执行它。


嘿,谢谢你的回答!我会用这样的东西!您仅想一件事,如果我在1个脚本文件中创建它,以便可以使用相同的快捷方式,那将是可能的?
Rei

@Thomas看到这个答案:askubuntu.com/questions/597395/…–
negusp

6

您必须像negusp的回答那样做,首先检查您的触摸设备,然后将显示以下内容:

〜$ x输入
⎡虚拟核心指针id = 2 [主指针(3)]
虚拟核心XTEST指针id = 4 [从指针(2)]
PixArt Dell MS116 USB光电鼠标id = 10 [从机指针(2)]
SynPS / 2 Synaptics触摸板id = 14 [从指针(2)]
DLLC6B2:00 06CB:75BF触摸板id = 12 [从指针(2)]
⎣虚拟核心键盘id = 3 [主键盘(2)]
    ↳虚拟核心XTEST键盘id = 5 [从键盘(3)]
    ↳电源按钮id = 6 [从属键盘(3)]
    ↳Video Bus id = 7 [从属键盘(3)]
    ↳电源按钮id = 8 [从属键盘(3)]
    ↳睡眠按钮id = 9 [从属键盘(3)]
    ↳Inte​​grated_Webcam_HD id = 11 [从键盘(3)]
    ↳AT翻译集2键盘id = 13 [从键盘(3)]
    ↳Dell WMI热键id = 15 [从属键盘(3)]
    ↳DELL无线热键id = 16 [从属键盘(3)]

对于我的设备是id = 12的设备,现在在名为“ bin”的文件夹下的Desktop文件夹中创建一个名称为“ toggle-touch”的bash脚本,将其为“〜/ Desktop / bin”并复制下一个代码,检查设备变量指向我的触摸id = 12,请根据您的情况进行修复:

#!/bin/bash

device=12
state=`xinput list-props "$device" | grep "Device Enabled" | grep -o "[01]$"`

if [ $state == '1' ];then
  xinput --disable $device
else
  xinput --enable $device
fi

设置为此脚本执行权限:

chmod 775 /Desktop/bin/toggle-touch

最后,您可以将此路径从主文件夹添加到“ .bashrc”,只需将以下行添加到文件末尾:

PATH=$PATH:~/Desktop/bin

使用以下命令更新路径:

. .bashrc

然后,您可以在任何地方执行此脚本,希望有帮助。


1

在我的Ubuntu 18.04中,Almas Dusal的答案直到我TouchPad在他的代码的以下行中将'p'更改为小写后才起作用:

read TPdevice <<< $( xinput | sed -nre '/Touchpad/s/.*id=([0-9]*).*/\1/p' )

此后,脚本成功禁用并启用了触摸板,但是这并未反映在“ 鼠标和触摸板设置”屏幕中。我创建了以下新脚本,该脚本在更新设置视图时切换触摸板。

#!/bin/bash

state=$( gsettings get org.gnome.desktop.peripherals.touchpad send-events )

if [ "$state" = "'enabled'" ];then
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'disabled' \
        && notify-send -i touchpad-disabled-symbolic "Touchpad" "Disabled"
else
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled' \
        && notify-send -i input-touchpad-symbolic "Touchpad" "Enabled"
fi

1

经过测试并可以在Ubuntu 14.04、16.04和18.04上使用。

@Almas Dusal的答案一样,就像@negusp的答案一样,除了使用我修改的脚本外,因为它具有3个额外的好处更新:2019年9月12日添加了下面的好处1和3):

  1. 它搜索xinput两个TouchpadAND 的输出TouchPad,因为某些系统的P大写,而另一些则没有。这使我的脚本与更多系统(希望是所有系统)兼容。
  2. 通过添加2秒自动关闭弹出窗口zenity,以显示您的触摸板现在是启用还是禁用。请在下面查看这些弹出窗口的屏幕截图。
  3. 它可以正确地调整您的滚轮速度,从而imwheel在您使用鼠标时启用(这可以解决在Ubuntu / Linux中使用鼠标滚轮时的慢速滚轮问题),imwheel在使用触摸板时可以禁用它,因为imwheel否则会使触摸板滚动时确实出现故障启用时。确保取消注释各行,以使其正常工作。例如:# imwheel -b "4 5"# killall imwheel
#!/bin/bash

# GS_toggle_touchpad.sh
# - toggle the touchpad on and off

# Gabriel Staples
# Written: 2 Apr. 2018 
# Updated: 12 Sept. 2019 

# References:
# - /ubuntu//a/874865/327339
# - /ubuntu/844151/enable-disable-touchpad/1109515#1109515 <-- my own ans!

# Search for id number of "TouchPad" OR "Touchpad" in `xinput` list; manually type `xinput` to see all your devices
read TouchPadDeviceId <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' ) 

state=$( xinput list-props "$TouchPadDeviceId" | grep "Device Enabled" | grep -o "[01]$" )

echo "TouchPadDeviceId = $TouchPadDeviceId"
echo "state = $state"

if [ "$state" -eq '1' ];then
    xinput --disable "$TouchPadDeviceId"
    zenity --info --text "Touchpad DISABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # imwheel -b "4 5"
else
    xinput --enable "$TouchPadDeviceId"
    zenity --info --text "Touchpad ENABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # killall imwheel
fi

请注意,只有在您也按照以下答案来固定滚轮速度时,才需要使用imwheel东西:永久固定Chrome滚动速度

现在,为其分配一个Ctrl+ Alt+ 快捷键P(或您选择的任何键[在我的情况下,“ P”代表触摸“ P” ad])。除了上述脚本外,我还添加了zenity自动关闭的弹出窗口部分,我将在此处的答案(/superuser//a/1310142/425838)中对其进行详细描述。

现在,当我使用上面的快捷方式时,我看到此弹出窗口,该窗口在2秒钟后自动关闭:

在此处输入图片说明

如果再次按下它,我将得到一个弹出窗口,该窗口在2秒后自动关闭:

在此处输入图片说明

完善!

另外,如果您是沉重的鼠标用户,只需在Ubuntu的启动程序中添加用于调用上面脚本的命令,即可在每次计算机启动时运行并禁用触控板!我有这个设置,所以我可以不再用手掌碰触轨迹板,而总是无意间删除东西!现在,当我的手碰到触控板时,什么都没有发生,因为它已被禁用。:)

注意:这一切在Ubuntu 18.04以及旧版本中都很好用。我已经在Ubuntu 18.04和Ubuntu 14.04中对其进行了测试。以下是18.04中的快捷方式设置窗口的屏幕截图:

在此处输入图片说明

有关:

  1. 永久修复Chrome滚动速度

无法在我的HP Probook上重新启用。xinput SynPS/2 Synaptics TouchPad和中有2个项目SYNA306A:00 06CB:CD0B Touchpad。第一次执行禁用一个,第二次禁用另一个。从那里它将切换第二个,但不会切换第一个。
rtaft

0

将我的脚本留在这里(与上面大致相同)。开箱即用,无需事先查找设备ID。

#!/bin/bash

function query_device_id {
    xinput list | grep -i touchpad | sed 's/.*id=\([0-9]*\).*/\1/g'
}

let device_id=$(query_device_id)

let state=$(xinput list-props $device_id | grep Enabled | awk '{print $4;}')

let new_state=$((1 - $state))

xinput set-prop $device_id "Device Enabled" $new_state

0

创建一个shell脚本,并将下面的代码粘贴到其中,并将其命名为touchPadDisable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput disable $temp

创建另一个shell脚本,并将以下代码粘贴到其中,并将其命名为touchPadEnable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput enable $temp

第一个脚本将禁用触摸板,第二个脚本将启用触摸板。

您可以将此脚本添加到键盘上的自定义快捷方式。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.