有办法“重启”触摸板驱动程序吗?

我在笔记本电脑上使用Ubuntu 14.04,通常连接外部USB鼠标、键盘和屏幕。然而,有时候我会拔掉所有外设,只用内置的键盘、屏幕和触摸板。
偶尔会出现触摸板停止工作的情况(但如果插入USB鼠标,USB鼠标是可以工作的)。虽然这种情况很少发生,但一旦发生就非常烦人,因为如果需要让触摸板再次工作,我就必须重新启动电脑。
有没有什么解决办法可以尝试,比如终止某个进程以便自动重启,或者执行某个命令来重新启动或刷新触摸板驱动程序?有没有任何方法可以“唤醒”触摸板而不必重新启动电脑?

10有时候关闭笔记本电脑的屏幕然后重新打开可以解决问题。 - Shiva
@illusionist - 对我来说起作用。 - sancho.s ReinstateMonicaCellio
16个回答

重新启动笔记本电脑的触摸板驱动程序:
按下Ctrl+Alt+T打开终端,并执行以下命令。
sudo  modprobe -r psmouse

那么

sudo modprobe psmouse

1完美的发现。我的指针卡在一个位置上,这帮助我解决了这个问题。 - Manikandan Arunachalam
2这对我有用 - 我的触摸板在一段时间后会停止工作。我在戴尔上运行Xubuntu 16.04,使用的是ALPS触摸板。 - Ur Ya'ar
1在我的Asus UX303UB + Ubuntu 16.04.2上,sudo modprobe psmouse proto=imps对我起了作用,但没有多点触控功能。不知怎么的,从一天到另一天,我需要运行那个命令才能使用触摸板,再也不能用手势了。 - Pablo Bianchi
这在我的Dell Precision上没起作用。 - Cerin
这个解决方案对我没有起作用。我的设备是联想X1 Carbon Gen 7,搭载Ubuntu 18.04操作系统,触摸板型号为"SYNA8004:00 06CB:CD8B"。在从休眠状态恢复后,我遇到了触摸板反应迟钝的问题。 - SaTa
运作得十分顺利!Ubuntu 20.04。 - OZ1SEJ
我收到回复 modprobe: FATAL: Module psmouse is builtin - Michael Altfield

我找到了一种方法来做这个:
首先,打开终端,并打印出所有的输入设备,以找到你需要禁用的输入设备的ID。在终端中输入:
xinput --list

下一步:注意在每个输入设备的一列中,它都标有id=X。您需要找到与您想要禁用的输入设备相对应的设备ID(可能是类似于“触摸板”的名称)。然后,在以下命令中将X替换为表示您想要禁用的输入设备的ID号码。
xinput disable X

注意:如果您不确定应该使用哪个设备ID来禁用触摸板,那么您可以通过测试随机的ID并查看鼠标板是否仍然工作来找出。确保您没有进行任何重要操作。保存所有工作,并准备好在禁用键盘等操作时重新启动计算机。(如果无法输入终端,则可能会遇到启用它的困难。

然后,您将需要运行此最后一行(感谢Arch Stanton的指正!)

xinput enable X

原因:我迫切需要解决这个问题,因为我在使用触摸板时遇到的问题使得任何工作都变得不可能。突然间,在使用笔记本电脑的某个随机时刻,似乎没有任何原因,我的触摸板进入了某种“特殊模式”。只要在触摸板上移动一个手指,屏幕就会滚动,而不是真正移动鼠标光标,所以无法将鼠标悬停在浏览器中的任何位置,除非进行相当协调的努力来应对滚动屏幕和不移动的鼠标。我想找到一种方法,在不重新启动笔记本电脑的情况下,重置触摸板。好消息是,使用上述方法重置触摸板实际上解决了我的问题。
更新: 为了更加方便地重置触摸板,我为上述命令创建了一个热键。当我的触摸板出现问题时,我只需按下组合键ctrl+super+r,它就会为我执行重置操作。快速简便。
以下是具体步骤:
- 在您的主目录内创建一个文件,将其命名为“touchpad-reset.sh”。
-在这个文件中,放入前面列出的三个命令中的两个(最后两个),但是,不要使用设备的X id号码,因为它可能会随着添加外设而改变(也许??),你可以使用这个代替:
这是我电脑终端内使用这个命令的输出:
xinput --list

结果:

Virtual core pointer                        id=2    [master pointer  (3)]⎜   
   ↳ Virtual core XTEST pointer                 id=4    [slave  pointer  (2)]⎜   
   ↳ Genius 2.4G Wireless Mouse                 id=10   [slave  pointer  (2)]⎜   
   ↳ MSFT0001:00 06CB:75BD UNKNOWN              id=13   [slave  pointer  (2)]⎜   
   ↳ ELAN Touchscreen                           id=12   [slave  pointer  (2)]⎜ 

-现在你要做的是,将之前的X(代表一个id)替换为xinput disable X和xinput enable X,并用相应id对应的名称放在单引号内。例如,根据上面的例子,如果你想对id=13,也就是我的触摸板设备进行操作,你可以使用以下命令:
xinput disable 'MSFT0001:00 06CB:75BD UNKNOWN'
xinput enable 'MSFT0001:00 06CB:75BD UNKNOWN'

- 所以现在,您是通过名称而不是ID号来禁用,因为ID可能会随时间改变,然后您将禁用和启用其他设备。
- 最后,您需要赋予执行此文件的权限;在终端中,将工作目录设置为您的主目录(即创建文件的位置),然后运行以下命令:
chmod +x your_script_name.sh

所以一旦你在文件中写入适当的命令,并确保它位于你的主目录中,按照以下步骤进行:

  1. 按下键盘上的超级键(PC上的Windows键)来打开Unity侧边栏。输入“系统设置”并按回车键。
  2. 在“硬件”下找到“键盘”选项并点击。
  3. 选择“快捷键”选项卡。
  4. 在左窗口中选择“自定义快捷键”。
  5. 点击底部中间的+按钮。
  6. 会弹出一个窗口要求输入描述名称和命令。
  7. 将名称设为“重置触摸板”之类的。
  8. 使用以下命令:gnome-terminal -x ./你的脚本名称.sh
  9. 点击“应用”。
  10. 现在你应该能看到你的快捷方式已列出,并且在最右边显示为“禁用”或其他内容。点击该文本并准备设置某种键组合,例如ctrl+super+r。
  11. 完成这个键组合后,你就完成了。

恭喜!玩得开心。


1然后你需要运行 xinput enable X - Arch Stanton
啊哈!我是不是忘了把那个放进去?糟糕。谢谢你加上了那个。就像我最后搞砸一样。 - user3499524
啊哈,没事了,谢谢你救了我 :-) - Arch Stanton
xinput list + disable + enable非常好用。 - axel22
3启用/禁用也可以只使用设备ID而不是设备名称。 - Z. Zlatev
我的触摸板(戴尔XPS 13)最近开始进入两指模式(也就是说,一个手指会导致它滚动等),这使得移动鼠标或左键单击变得不可能。安装xinput然后禁用/重新启用触摸板是我找到的唯一可靠的解决方法。谢谢! - Mala
1谢谢。这个解决方案对我很有效。而且我甚至不需要重新启动电脑。我的触摸板一直困扰着我。我认为使用xinput disable/enable是一个快速修复的方法。 - Archit
虽然对我来说没用,但是完整的设备名称似乎有效。最终发生的情况是,触摸板只能让我稍微移动鼠标光标,然后又停止了。 - user5245
1这个解决方案对我没用。Ubuntu 18.04 使用"SYNA8004:00 06CB:CD8B触控板",联想X1 Carbon Gen 7。从休眠恢复后,我得到了敏感的触控板行为。 - SaTa
1谢谢!非常有效,你帮我避免了重新启动电脑的麻烦! :) - Hendy Irawan
这个解决方案对我有效。 - Allexj
这很奇怪。触摸板在重新启动和关机后总是会自动切换回单指滚动。使用您的方法只会禁用触摸板,而不会启用它。 - MycrofD
在Ubuntu 22.02和USB鼠标上,它对我起作用了。 - CognitiveRobot
我无法在评论中格式化代码,所以我在下面提供了另一个答案:https://askubuntu.com/questions/528293/is-there-a-way-to-restart-the-touchpad-driver/1443306#1443306。通过自动解析输入的ID,完成了您的脚本。 - Carl

我曾经遇到过一个笔记本电脑反复出现的问题,直到我注意到该电脑的触摸板有一个独立的开关,我可能是不小心按到了它。值得注意的是,这个开关并没有帮助我重新打开触摸板。我只是小心不去按到它,不久之后我开始使用一个带有集成无线触摸板的外部无线键盘,从那以后我就再也没有遇到这个问题了。
更新:(注:下面的链接已失效,解决方案在上面) 自从发布了这个“解决方案”后,我发表了一条评论,显然满足了用户的需求。现在才刚刚得知评论只会暂时保留并自动删除,所以我将有用的评论内容重新发布在下面,以便为其他人保存:
我分享了对我有效的“解决方案”。今天我突然想到要更仔细地搜索与你最初问题更贴切的解决方案,并找到了以下链接。虽然我个人认为这并不算“方便”,但至少可以通过将其制作成脚本来使其更加优雅。我找到了这个(见下文) - gyropyge 9月25日20:06
按下Alt+F2,输入gksudo modprobe -r psmouse,输入密码,按下Enter,然后再次按下Alt+F2,输入以下内容gksudo modprobe psmouse,然后按下Enter

2不是我的情况。 - matteo
2我正在分享对我有效的“解决方案”。今天我突然想到要更仔细地搜索与你原始问题更贴切的解决方案,并找到了以下链接。这可能不是我个人认为的“方便”,但通过将其制作成脚本,至少可以使它更加优雅。http://www.tuxtrix.com/2010/06/restarting-your-touchpadmouse-in-ubuntu.html - gyropyge
谢谢!虽然答案实际上在你的评论中(我还没有机会测试它,但听起来像是解决方案),但我已将你的回答标记为采纳答案。 - matteo
感谢您考虑了我事后的评论。将来我也可能从那个解决方案中受益,因为我试图避免触摸板边缘附近一个特别容易被点击的按钮的解决方案并不是特别令人满意。 - gyropyge
刚刚才得知评论仅为临时保存并会自动删除,真的吗??? - matteo
是的,真的。尽管我在这个网站上注册已经有一段时间了,但我对这个网站还是相当新手。关于评论被自动删除的问题,我在这个网站的某个官方位置发表了我的观点。我是偶然发现了相关信息,但我发誓我确实找到了。 - gyropyge
对我来说是新闻 - 据我所知,评论是永久的。另外,你提供的解决方案链接已经失效了。看起来tuxtrix.com已经不存在了... - Scaine
脚本的链接已经失效了。您能否请修订一下答案? - user2392762
2链接对我来说是有效的,但以防万一:如果您在笔记本电脑上卡住无法移动鼠标(触摸板),请按下组合键Alt+F2并键入 gksudo modprobe -r psmouse输入密码,按下回车键,然后再次按下Alt+F2以输入以下内容 gksudo modprobe psmouse - G Trawo
与我的触控板和内置键盘一起工作。不过,我不得不使用USB键盘。我正在运行Xenial(16.04.3 LTS)。谢谢 :) - petobens
看起来我的笔记本也有这个“禁用键”。刚刚通过一些魔法让我的触摸板再次工作了,但我不知道我做了什么,下次我会确保跟踪我的操作哈哈。 - jpenna
这救了我的命 ; ) - yurenchen
曾在XFCE工作过 - Santropedro

重新加载内核驱动程序可能更容易,而且对我来说行之有效。以下代码首先找到处理触摸板的内核驱动程序的名称,然后使用rmmod卸载它,并使用modprobe重新加载它。请注意,您需要以root身份运行这些命令,因此请先运行sudo su
> lsmod | grep touch
hid_multitouch         20480  0 
> rmmod hid_multitouch 
> modprobe hid_multitouch

1对于“lsmod | grep touch”这个命令我会给一个+1的赞,大部分回答都是针对特定驱动程序的,而这个命令可以帮助你找出你所拥有的触摸屏驱动是哪个(或者是哪些)。 - user56reinstatemonica8
2在众多答案中,这是唯一一个对我有效的。 - Eric Walker
对我有效的唯一解决方案:Dell Latitude 3460 | Ubuntu 20.04.5 LTS。 - Alexei Kouprianov
在Ubuntu Unity 22.10上对我起作用。从睡眠中唤醒系统后,触摸板的多点触控功能消失了,所以我卸载了xserver-xorg-input-synaptics,然后尝试使用各种命令来重置触摸板。这样做起作用了,现在我的双指滚动功能又正常了。 - ArrayBolt3

如果您有一个 Synaptics 触摸板:
synclient TouchpadOff=0

4耶呀!Ubuntu 18.04 LTS 配备 xfce,使用 Synaptics 完美运行! - 4Z4T4R
1如果没有安装synclient,请小心...我尝试安装synclient来看是否有帮助,但在安装了xserver-xorg-input-synaptics后,重启后我的键盘和USB鼠标都停止工作了。通过运行sudo apt-get remove --auto-remove xserver-xorg-input-synaptics并重新启动,它们又恢复正常了。 - user56reinstatemonica8
2谢谢!这对我在Ubuntu/Xubuntu 20.04.2 LTS上有效。如果你把上面的命令放在一个隐藏的BASH脚本中,并将其链接到一个键盘快捷方式,当触摸板失效时,你可以轻松地重新激活它。 - Aces
这就是我要的了。我试着启用了“在打字时禁用触摸板”的功能,它一直处于禁用状态,直到我运行了你分享的命令。谢谢! - asgs

如果你不知道你的触摸板使用的是哪个模块,你可以通过一些调查找出来。
grep -iA2 touchpad /proc/bus/input/devices

对我来说,这返回的是


N: Name="Elan Touchpad"
P: Phys=
S: Sysfs=/devices/platform/80860F41:03/i2c-11/i2c-ELAN0100:00/input/input10

然后查看此类别中有哪些内核模块可用:
ls $(find /lib/modules/$(uname -r) -type d -name mouse)

对我来说返回的内容是“which”。
appletouch.ko  bcm5974.ko  cyapatp.ko  elan_i2c.ko  gpio_mouse.ko  
psmouse.ko  sermouse.ko  synaptics_i2c.ko  synaptics_usb.ko  vsxxxaa.ko

交叉参考这两个 - 在我的情况下,看起来我的触摸板模块是elan_i2c.ko 编辑:最近我找到了一个可靠地获取正在使用的驱动程序名称的复杂命令,terdon为我简化了它。
grep -hriPo 'DRIVER=\K.+' /sys 2>/dev/null | while read driver; do [ -e /lib/modules/$(uname -r)/kernel/drivers/input/mouse/"$driver"* ] && echo $driver; done

要检查您是否选择了正确的模块,请测试从内核中卸载它的命令:
sudo modprobe -r elan_i2c

触摸板会立即失效,如果你找到了正确的模块,那么你可以通过试错的方式轻松找到它。重新加载它。
sudo modprobe elan_i2c

这将有效地重新启动模块。您可以像这样同时运行这两个命令:
sudo modprobe -r elan_i2c && sudo modprobe elan_i2c

我偶尔需要在从休眠状态恢复时这样做。

对我来说,在Asus上的ELAN1200内核4.13.0-46版本中,问题不在于重新加载elan_i2c驱动程序,而是hid-multitouch驱动程序。
sudo modprobe -r hid-multitouch && sudo modprobe hid-multitouch

我的Asus笔记本电脑同时使用了一个HID驱动程序来控制键盘和触摸板,因此在单个命令行中需要这样操作,否则在modprobe -r之后无法输入文字。 - Tomofumi
@user56reinstatemonica8,应该可以,谢谢你的注意,已经编辑过了。 - pholat

以下是对我来说有效的[Zenbook ASUS UX501VW]的工作方式:
sudo  modprobe -r elan_i2c
sudo  modprobe elan_i2c

我的触摸板又回来了。

谢谢!适用于Ubuntu 16.04 LTS的ZenBook UX305CA可以工作。 - chao

最简单的解决方案可能是:
- 插入鼠标 - 进入“系统设置 >> 鼠标和触摸板” - 将触摸板开启

欢迎来到Ask Ubuntu!**;-)** 解决方案不需要太过于极客才能好用!只要简洁明了就可以了... :-) - Fabby
这是唯一对我有效的解决方案!尝试了上面各种“lsmod”和“sudo modprobe”的解决方案,但都没有起作用。 - sh37211

魔术师。

我知道你正在使用Ubuntu 14.04;我的有点不同(如下所示):

这台笔记本电脑:Acer Swift 1(EUFI);x86-64位。

操作系统类型:Ubuntu 16.04 LTS。

触摸板类型:SYNA7DAB:00 06CB:7DAC 触摸板(synaptics_i2c.ko)。

提供的解决方案https://help.ubuntu.com/community/SynapticsTouchpad/ShortcutKey

创建一个bash文件脚本(如建议的那样:创建一个符号链接到bash脚本并映射一个热键给它);内容应该如下:

#!/bin/bash

declare -a STATES=(1 0)
DEVICE=$(xinput list --name-only | grep Touchpad)
STATE=$(xinput list-props "$DEVICE" | grep 'Device Enabled' | sed 's/^.*:[ \t]*//')
xinput set-prop "$DEVICE" 'Device Enabled' ${STATES[$STATE]}

确保它具有可执行权限!
sudo chmod +x path/filename.sh

这个解决方案对我自己来说非常有效。希望对你也适用。

个人问题的详细信息(可能适用于你的情况)

由于某种未知原因:这台笔记本电脑的触摸板会神奇地变得无法使用(但据我所知仍在运行)。我尝试拔掉基于USB的光学鼠标,但遇到了同样的问题。

xinput --list 的输出:

larvae@MST-Laptop:~/Desktop$ xinput --list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=10   [slave  pointer  (2)]
⎜   ↳ SYNA7DAB:00 06CB:7DAC Touchpad            id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Logitech USB Receiver                     id=9    [slave  keyboard (3)]
    ↳ HD WebCam                                 id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]
    ↳ Acer WMI hotkeys                          id=14   [slave  keyboard (3)]

grep -iA2 touchpad /proc/bus/input/devices的结果:

larvae@MST-Laptop:~/Desktop$ grep -iA2 touchpad /proc/bus/input/devices
N: Name="SYNA7DAB:00 06CB:7DAC Touchpad"
P: Phys=i2c-SYNA7DAB:00
S: Sysfs=/devices/pci0000:00/0000:00:17.0/i2c_designware.4/i2c-9/i2c-SYNA7DAB:00/0018:06CB:7DAC.0003/input/input11

解决方案概述(由UBUNTU提供):https://help.ubuntu.com/community/SynapticsTouchpad/ShortcutKey