当使用鼠标时,我该如何禁用触摸板?

我可以禁用触摸板,但如果我离开我的蓝牙鼠标或者忘记备用鼠标的无线适配器,那就没办法了。Linux Mint有一个很好的设置,可以在使用鼠标时禁用触摸板。我现在使用的是Ubuntu MATE 16.04,没有这个设置。我该如何获得这个功能?只有在打字时关闭触摸板的选项不足以防止我手掌轻触导致我正在处理的事情出错。
我已经阅读了其他类似的问题,并没有找到解决这个确切问题的答案。

@vanadium 这与Mate无关。 - Jacob Vlijm
@JacobVlijm 如何更改触摸板设置将取决于所使用的桌面环境。例如,得到了75个赞的答案适用于Gnome桌面环境,并且很可能在Mate桌面环境中也适用,但是在KDE桌面环境中不适用,至于xfce桌面环境,我不确定,除非他们已经迁移到GTK3。 - vanadium
@vanadium 当然可以,但是将其特别与Mate相关联暗示了它是一个Mate的特性,而实际上并不是。没有任何基于Gnome的发行版在其图形界面设置中有这个选项,但可以在gsettings中进行设置。 - Jacob Vlijm
@JacobVlijm gsettings是一个GTK3的东西,而org.gnome.desktop这样的设置只适用于使用Gnome 3底层部分的桌面。由于Mate是从Gnome 2分叉出来的,所以不确定这样的gsetting是否也适用于Mate。 - vanadium
在回答的那几天里,我甚至安装了Mate来确认,所以是的,它可以。 - Jacob Vlijm
没听说过gsettings,顺便说一下,它是gtk3的东西。@vanadium - Jacob Vlijm
@JacobVlijm KDE使用完全不同的框架来管理设置。没有桌面环境的窗口管理器只能使用文本配置文件运行。dconf是由GNOME项目开发的。尽管我可能在这方面不准确地称其为"GTK3"的事情,:=)但dconf确实是与GNOME 3一起开发的。 - vanadium
@vanadium有趣!我一直以为它最初是Gimp Toolkit(GTK工具包) - Jacob Vlijm
让我们在聊天中继续这个讨论。点击此处进入聊天室 - Jacob Vlijm
5个回答

在基于Gnome的发行版上,如果连接了外部鼠标,你应该能够通过以下命令禁用触摸板:
gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled-on-external-mouse

获取当前情况:
gsettings get org.gnome.desktop.peripherals.touchpad send-events

选项有:
enabled
disabled
disabled-on-external-mouse

我不认为触摸板会嫉妒鼠标的 ;) - Trey Gordon
8上述禁用命令未生效。现在显示为“disabled-on-external-mouse”,但触摸板仍然可以与我的蓝牙鼠标或无线鼠标连接后正常使用。 - user533063
@ABeardedTerran 这很奇怪。作为一个快速的解决办法,是否可以设置一个快捷键来切换禁用/启用? - Jacob Vlijm
当然。如果这有助于解决问题,我运行了以下命令:xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ ETPS/2 Elantech Touchpad id=12 [slave pointer (2)] ⎜ ↳ TECKNET BM306 id=14 [slave pointer (2)] - user533063
@ABeardedTerran 不好意思,完全忘记了这个问题。你还在寻找解决方案吗,还是已经解决了? - Jacob Vlijm
不。再次回到Linux Mint,版本18不再具有版本17中在使用鼠标时关闭触摸板的功能。我认为这应该是一个受欢迎的需求。 - user533063
11在Ubuntu 16.10上对我来说没问题。我唯一的遗憾是我只能给一个赞。 - anon
1我缺少一群老鼠来进行测试,但似乎对于有线鼠标而言,禁用外部鼠标的功能是有效的,但对于无线鼠标则不起作用。 - Brent
2我可以确认,在我的 Ubuntu 16.04 上使用蓝牙鼠标是有效的。一旦我的鼠标连接上,触摸板就会被禁用。这真是太棒了! :) - Muhammad bin Yusrat
2在我的Ubuntu 16.04上无法运行。 - Paul Praet
如果有一个插头但没有连接鼠标,这仍然会禁用触摸板。如果有一个插头但没有连接鼠标,能够启用触摸板就太好了。不过我不确定是否可能实现。 - Dylan Vander Berg
1使用17.10版本与微软Arc蓝牙鼠标配对,但无法正常工作。 - Tsar Bomba
在17.10版本上,我使用了罗技无线鼠标,效果很好。 - Brannon
很遗憾,这个解决方案并不可靠。它可能对你有效,也可能无效。对我来说,它已经不再起作用了。 - kleinfreund
有趣的是,当我第一次按照广告上所说的更改设置时(触摸板被禁用),它确实起作用了,而且当我断开USB鼠标时,触摸板也重新启用了。但是当我再次连接USB鼠标时,触摸板仍然保持启用状态... - helmesjo
2disabled-on-external在18.04上无效,而disabled有效 :) 这显然是不希望的。 - aitchkhan
在18.04上,对我来说一切都很正常!有点奇怪。 - workflow
@workflow 是的,路径仍然是一样的 :) - Jacob Vlijm
是的,我确认在Ubuntu 16.04上这对我来说非常有效! - Bharat Mallapur
在Ubuntu 20.04上对我有用。 - AneesAhmed777
1disabled-on-external-mouse18.04 上无法正常工作。 - ar2015
在Ubuntu Mate 20.04上无法工作。 - German Garcia
在10月22日对我有用。 - Louis-Rémi
122.10号 当我连接外部鼠标时,触摸板是可以工作的,但在我断开外部鼠标后,触摸板没有重新启用。 - Sai Naw Kham


很抱歉,但是你的截图显示的是gnome,而问题是关于MATE的 - 也许你可以更新一下截图? - Robert Riedl
@RobertRiedl,你是对的(虽然显示的是Budgie),我没注意到。但除了主题之外,它的功能是一样的(甚至主题也可以与mate一起使用)。 - jl005
像魔法一样,它运作得很好。 - Harry
无论是使用gsettings命令还是touchpad-indicator方法,都对我无效,但是dconf完美地解决了问题。 - Chris Hayes
对我来说,这个方法可以正常工作,而被认为等效的终端命令则不行。 - Ziyuan


其他的解决方案要么太麻烦,要么不起作用...安装了触摸板指示器,启动它,设置一下,就好使了。 - Fabian N.
也喜欢禁用打字时的触摸板选项! - Nash
谢谢你终于解决了这个问题!我以为我要疯了,所有那些对话框都会“神奇地”关闭,光标也会在文档中跳来跳去,我一直沮丧地摔打头部(和我的笔记本电脑)!我禁用了触摸板、按钮和鼠标轨迹——所有这些,当外部鼠标断开连接时它们似乎可以可靠地重新启用。再加上顶部栏的状态通知,我总是知道自己处于什么状态。 - Moshe Eshel
安装完成后,我在系统托盘上看不到任何图标。 - Ziyuan

我意识到我有点晚参加这个派对(并且我的回答也不仅仅适用于Ubuntu MATE),但是还是让我来说一下...
我有和你非常类似的需求,但是我在Debian 9(Stretch)上运行xfce,所以没有安装gnome/gsettings。为了在插入/拔出USB鼠标时禁用/重新启用Synaptics触摸板,我使用udev规则来触发一个(posix)Shell脚本,该脚本解绑/重新绑定Synaptics触摸板驱动器:
作为root用户,创建/usr/local/sbin/touchpadctl.sh文件,并将以下内容添加进去:
#!/bin/sh set -o errexit #(等同于-e) set -o nounset #(等同于-u) usage(){ echo "用法: ${0} {-enable|-e|-disable|-d}" }
if [ $# -ne 1 ]; then usage exit 1 fi
base_dir=/sys/bus/serio/drivers/psmouse device_id=serio1
if [ ${1} = "-disable" -o ${1} = "-d" ]; then logger "${0}正在禁用触摸板" echo -n manual > $base_dir/bind_mode echo -n $device_id > $base_dir/unbind 2>/dev/null || true elif [ ${1} = "-enable" -o ${1} = "-e" ]; then logger "${0}正在启用触摸板" echo -n auto > $base_dir/bind_mode else usage exit 1 fi
使您的触摸板控制脚本可执行:
sudo chmod +x /usr/local/sbin/touchpadctl.sh
现在测试一下您的脚本。要禁用触摸板:
sudo /usr/local/sbin/touchpadctl.sh -d
要启用触摸板:
sudo /usr/local/sbin/touchpadctl.sh -e 由于使用了“驱动解除绑定”,这完全不依赖于X/xorg/wayland/gnome。因此,您可以在启动过程中正确使用它的udev规则。
以root身份创建/etc/udev/rules.d/01-touchpad.rules文件,内容如下: KERNEL=="mouse*", ATTRS{phys}=="usb*", ACTION=="add", \ RUN+="/usr/local/sbin/touchpadctl.sh -disable" KERNEL=="mouse*", ATTRS{phys}=="usb*", ACTION=="remove", \ RUN+="/usr/local/sbin/touchpadctl.sh -enable"
与所有Linux相关的事物一样,你可能需要进行一些调整,但我已经尽力使其易于理解。关于驱动程序绑定/解绑的更多信息,请阅读Greg Kroah-Hartman在Linux Weekly News上发表的2005年文章,还有一些很好的信息可以在内核源代码中找到。关于编写udev规则的更多信息,请参考Daniel Drake的优秀教程

在Kubuntu 16.04上,你只需进入系统设置->输入设备->触摸板->启用/禁用触摸板。
现在选择在鼠标插入时禁用触摸板。

当我禁用触摸板后,退出设置并稍后返回时,没有选项可以重新打开触摸板! - Brian Borchers
Unity版本的设置确实有重新启用触摸板的选项,而GNOME版本的设置则不允许我重新启用触摸板。我成功在Unity中重新启用了触摸板。 - Brian Borchers