Answers:
我从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输入到“定制”快捷方式窗口的“命令”字段来使脚本可执行。
zenity --info --text "Touchpad DISABLED" --timeout=2
和添加和zenity --info --text "Touchpad ENABLED" --timeout=2
,if
并else
弹出一个窗口,该窗口宣布新状态,然后在2秒内自动关闭。
Touchpad
而不是TouchPad
在的输出中显示xinput
,因此我更新了答案以搜索两者。另外,我还使用使其正确解决了慢速滚轮问题imwheel
。查看全部答在这里:askubuntu.com/questions/844151/enable-disable-touchpad/...
您需要快捷方式,但是可以轻松地将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
保存,标记为可执行文件,您应该能够从桌面运行脚本。注意:您可能必须右键单击脚本,单击属性,然后执行它。
您必须像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)] ↳Integrated_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
然后,您可以在任何地方执行此脚本,希望有帮助。
在我的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
经过测试并可以在Ubuntu 14.04、16.04和18.04上使用。
像@Almas Dusal的答案一样,就像@negusp的答案一样,除了使用我修改的脚本外,因为它具有3个额外的好处(更新:2019年9月12日添加了下面的好处1和3):
xinput
两个Touchpad
AND 的输出TouchPad
,因为某些系统的P大写,而另一些则没有。这使我的脚本与更多系统(希望是所有系统)兼容。zenity
,以显示您的触摸板现在是启用还是禁用。请在下面查看这些弹出窗口的屏幕截图。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中的快捷方式设置窗口的屏幕截图:
SynPS/2 Synaptics TouchPad
和中有2个项目SYNA306A:00 06CB:CD0B Touchpad
。第一次执行禁用一个,第二次禁用另一个。从那里它将切换第二个,但不会切换第一个。
将我的脚本留在这里(与上面大致相同)。开箱即用,无需事先查找设备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
创建一个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
第一个脚本将禁用触摸板,第二个脚本将启用触摸板。
您可以将此脚本添加到键盘上的自定义快捷方式。
另一个选择是下载此gnome扩展 https://extensions.gnome.org/extension/935/toggle-touchpad/
grep
和sed
。您可以轻松地将两者合并为sed -nre '/TouchPad/s/.*id=([0-9]*).*/\1/p'
。