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


64

我在笔记本电脑上使用Ubuntu 14.04,通常会连接外部USB鼠标,键盘和屏幕。但是,有时我会拔掉所有插头,然后移动笔记本电脑,并继续使用内置的键盘,屏幕和触摸板。

在随机时间,触摸板会停止工作(但是,如果我插入USB鼠标,则USB鼠标会工作)。尽管这种情况很少发生,但这样做很烦人,因为如果我需要触摸板重新工作,我将不得不重新启动。

我是否可以尝试一些解决方法,例如杀死一些将自动重新启动的进程,或者使触摸板驱动程序重新启动或刷新的某些命令?是否有任何事情可以“唤醒”触摸板而无需重新启动?


有时关闭笔记本电脑的屏幕并再次打开即可解决此问题。
魔术师

Answers:


32

我反复遇到一台笔记本电脑的问题,直到我注意到那台计算机的触摸板有自己的On / Off开关,我一定是偶然碰到了它。值得注意的是,该开关无助于将其重新打开。我只是变得小心一点,不要按它,不久之后,我开始使用带有集成无线触摸板的外部无线键盘,从那以后我就再也没有遇到过这个问题。

更新:( 注意:下面的链接断开,解决方案在上面) 自发布此“解决方案”以来,我发布了一条显然可以满足用户需求的评论。直到现在才知道这些评论仅会暂时保留并被自动删除,因此我在下面重新发布了有用的评论内容,可以将其保留给他人使用:

我正在分享对我有用的“解决方案”。今天,我想到Google寻找更适合您原始问题的解决方案,并找到了以下链接。这不是我个人认为的“方便”,但至少可以通过将其制成脚本来变得更加优雅。我发现了这个(见下文) – gyropyge 9月25日,20:06

Alt+ F2并键入gksudo modprobe -r psmouse键入密码,按Enter,然后再次按Alt+ F2输入以下内容gksudo modprobe psmouse,然后按Enter


不过,不是我的情况
matteo 2014年

2
我正在分享对我有用的“解决方案”。今天,我想到Google寻找更适合您原始问题的解决方案,并找到了以下链接。这不是我个人认为的“方便”,但至少可以通过将其编写为脚本来使其更加优雅。 tuxtrix.com/2010/06/...
gyropyge

谢谢!我已经将您的答案标记为可接受的答案,尽管答案实际上在您的评论中(好吧,我还没有机会对其进行测试,但这听起来像是解决方案)。
matteo

感谢您考虑我的事后评论。将来,我也可能会从该解决方案中受益,因为我尝试不击中触摸板边缘附近的一个特别易于击打的按钮的解决方案并不是特别令人满意。
gyropyge 2014年

1
链接对我有用,但以防万一:如果笔记本电脑(触摸板)上没有鼠标移动而卡住,请按Alt + F2组合键并输入gksudo modprobe -r psmouse 键入密码,然后按Enter,然后然后再次按Alt + F2键输入以下gksudo modprobe psmouse
G Trawo 2015年

57

我找到了一种方法来做到这一点:

首先,打开一个终端,并打印出所有输入设备,以找到要禁用的输入设备所需的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)]⎜ 

-现在,您要做的是,将xinput disable X和xinput enable X的X(以前是id)替换为与单引号内该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键)调出统一侧栏。输入“系统设置”,然后按Enter键。
  2. 在显示“硬件”的位置下找到“键盘”选项,然后单击它。
  3. 选择“快捷方式”标签。
  4. 在左侧窗口中,选择“自定义快捷方式”
  5. 单击底部中心附近的+按钮。
  6. 应该弹出一个窗口,要求输入描述名称和命令。
  7. 将名称设为“重置触摸板”之类的名称
  8. 使用此命令:gnome-terminal -x ./name_of_your_script.sh
  9. 点击“应用”
  10. 现在,您应该看到列出了您的快捷方式,并且在最右边应该显示“已禁用”或其他垃圾。单击该文本,并准备进行某种组合键,例如ctrl + super + r。
  11. 一旦完成此组合键,就完成了。

恭喜!玩得开心。


然后,您必须运行xinput enable X
斯坦顿拱门,2015年

啊哈!我忘了把它放在那里吗?射击。感谢您在此添加。就像我最后吹它一样。
user3499524

啊,没关系,您救了我:-)
Arch Stanton

xinput列表+禁用+启用效果很好
axel22

2
enable/ disable也只能使用ID代替设备名称
-Zlatev

48

重新启动笔记本电脑的触摸板驱动程序:

通过按Ctrl+ Alt+ 打开终端T 并执行以下命令

sudo  modprobe -r psmouse

然后

sudo modprobe psmouse

我在这里找到了解决方案,也有一个USB鼠标的解决方案


完美的发现。我的指针卡在了一个可以帮助我解决它的位置上。
Manikandan Arunachalam

1
这对我有用-一段时间后我的触摸板将停止工作。我在运行Xubuntu 16.04的戴尔上有一个ALPS触摸板
Ur Ya'ar

sudo modprobe psmouse proto=imps华硕UX303UB + Ubuntu 16.04.2 上为我工作,但没有多点触控功能。无论如何,从一天到另一天,我都需要运行该命令以拥有触摸板,而不再需要使用手势。
Pablo

在Dell Precision上,这对我不起作用。
塞琳

此解决方案对我不起作用。带有“ SYNA8004:00 06CB:CD8B触摸板”的Ubuntu 18.04,联想X1 Carbon Gen7。从休眠状态恢复后,我的触摸板行为异常活跃。
萨塔

9

如果您不知道触摸板使用的模块,则可以进行一些挖掘来找出答案。

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)

对我来说回来了

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

从暂停状态恢复时,我有时需要这样做。


7

如果您有突触触摸板:

synclient TouchpadOff=0

2
耶!带有xfce的Ubuntu 18.04 LTS,它与Synaptics一样具有吸引力!
阿扎塔尔

6

这是为我工作的是[Zenbook ASUS UX501VW]:

sudo  modprobe -r elan_i2c
sudo  modprobe elan_i2c

我缺少的触摸板又回来了。


谢谢!适用于ubuntu 16.04 lts上的zenbook ux305ca。
混沌

4

可能更简单,并且对我有用,是在内核中重新加载了驱动程序。以下代码首先找到处理触摸板的内核驱动程序的名称,然后将其卸载并使用来rmmod重新加载modprobe。请注意,您需要root用户才能运行这些命令,因此请sudo su首先运行。

> lsmod | grep touch
hid_multitouch         20480  0 
> rmmod hid_multitouch 
> modprobe hid_multitouch

2

对我来说,对华硕内核4.13.0-46为ELAN1200,这是不是重装elan_i2c,但hid-multitouch驱动程序:

sudo modprobe -r hid-multitouch && sudo modprobe -r hid-multitouch

我的华硕笔记本电脑同时为键盘和触摸板使用了隐藏驱动程序,因此需要在单个cmdline中执行此操作,否则您将无法在modprobe -r之后输入内容。
Tomofumi

1

也试试 gksudo /etc/init.d/hotplug restart


1

一个bash命令行来重置触摸板(基于@ user3499524响应):

id=`xinput --list |grep -i touchpad | cut -f2 | cut -f2 -d=` && xinput disable $id && xinput enable $id && echo "The touchpad has been reset."

1

最简单的解决方案可能是:

  • 插入鼠标
  • 转到系统设置>>鼠标和触摸板
  • 将触摸板切换到开

欢迎来到Ask Ubuntu! ;-)解决方案不需要变得令人讨厌就可以了!只是简短而简单... :-)
Fabby

0

魔术师。

我了解您正在运行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

该解决方案对我自己非常有用。希望它也适用于您。

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

出于某些未知的原因:笔记本电脑的触摸板将自动失去作用(但仍在运行AFAIK)。我试图删除基于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触摸板/ proc / bus / input / devices dump:

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


0

我称这个脚本mouse-resetmodprobe到目前为止,它会删除并回答此问题的答案中列出的所有模块:

#!/bin/bash

modules=(psmouse hid_multitouch elan_i2c)

for mod in "${modules[@]}"; do
    sudo rmmod "$mod" 2> /dev/null
    sudo modprobe -v "$mod" 2> /dev/null
done

0

我正在使用Apple Macbook Retina Pro;触摸板有时会停止工作。由于名称中不包含“ mouse”或“ touch”,因此上述大多数方法都找不到驱动程序。

要找到触摸板驱动程序,在我的情况下为bcm5974:

MacBookPro:~$ xinput list-props 11
Device 'bcm5974':
    Device Enabled (147):   1`
...

然后卸载并重新加载:

MacBookPro:~$ sudo modprobe -r bcm5974
MacBookPro:~$ sudo modprobe bcm5974

解决了。


11是您所用的特定设备编号,您必须先使用找到该编号,xinput --list然后才能在此处使用。
Yaron
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.