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

我在笔记本电脑上使用Ubuntu 14.04,通常使用外接USB鼠标,键盘和屏幕连接。 然而,有时候,我拔掉所有这些并移动笔记本电脑并继续使用内置键盘和屏幕以及触摸板。

在随机时间,触摸板停止工作(但如果我插入USB鼠标,USB鼠标确实工作)。 虽然这种情况很少发生,但是当它发生这种情况时会非常烦恼,因为如果我需要触摸板再次工作,我将被迫重新启动。

我可以尝试一些解决方法,例如杀死一些会自动重启的进程,或者一些会导致触摸板驱动程序重启或刷新的命令? 任何可能“唤醒”触摸板而不必重启的东西?

我一直在用一台笔记本电脑遇到这个问题,直到我注意到那台电脑的触摸板有自己的On / Off开关,我一定是偶然打了。 值得注意的是,该开关没有帮助将其重新打开。 我只是小心翼翼地不按它,不久之后我开始使用带有集成无线触摸板的外置无线键盘,从那时起我就没有这个问题了。

更新:( 注意:以下链接已破解,解决方案在上面)自发布此“解决方案”以来,我发布了一条显然符合用户需求的评论。 刚刚才知道评论只是暂时保留并自动删除,我将重新发布以下有用评论的内容,以便其他人可以保留:

我正在分享对我有用的“解决方案”。 今天我想到谷歌寻求更接近原始问题的解决方案,并找到以下链接。 这不是我个人认为的“方便”,但它至少可以通过使它成为一个脚本而更加优雅。 我发现了这个(见下文) – gyropyge 9月25日20:06

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

我找到了一种方法:

首先,打开终端,打印出所有输入设备,找到您要禁用的输入设备所需的ID。 在终端中,键入:

 xinput --list 

下一步:注意每个输入设备在一个长列中的id = X的位置。 您想要找到与您要禁用的输入设备相对应的设备ID(可能听起来像“触摸板”)。 然后使用表示要禁用的输入设备的id号替换以下命令中的X:

 xinput disable X 

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

然后你必须运行最后一行(感谢你抓住这个Arch Stanton!)

 xinput enable X 

原因:我迫切需要这个问题的答案,因为我用触摸板遇到的问题使得任何工作都无法完成。 突然,在使用我的笔记本电脑的一些随机时刻,显然没有理由,我的触摸板进入某种“特殊模式”。 仅仅在我的触摸板上移动一根手指就会导致屏幕滚动,而不是实际在屏幕上移动鼠标光标,因此如果没有相当大的协调努力来考虑滚动屏幕,就不可能让鼠标hover在broswer上的任何东西上和不动的鼠标。 我想找到一种方法,在不重新启动笔记本电脑的情况下,重置触摸板。 从好的方面来说,用上面的方法重置触摸板实际上解决了我的问题。

更新:为了更轻松地重置触摸板,我为上面列出的命令制作了一个热键。 当我的触控板继续使用fritz时,我只需按下组合键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替换X(之前是id),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键)调出统一侧栏。 输入“系统设置”,然后按确认键。
  2. 在“硬件”的位置找到“键盘”选项,然后单击它。
  3. 选择“快捷方式”标签。
  4. 在左侧窗口中,选择“自定义快捷方式”
  5. 单击底部中心附近的+按钮。
  6. 应该弹出一个窗口,要求输入描述名称和命令。
  7. 使名称像“重置触摸板”
  8. 使用此命令:gnome-terminal -x ./name_of_your_script.sh
  9. 点击“申请”
  10. 您现在应该看到列出的快捷方式,并且在最右边它应该显示“已禁用”或其他一些垃圾。 点击该文本并准备制作某种键组合,也许像ctrl + super + r。
  11. 完成此组合键后,您就完成了。

恭喜! 玩得开心。

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

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

 sudo modprobe -r psmouse 

然后

 sudo modprobe psmouse 

我在这里找到了解决方案,还有usb鼠标的解决方案

如果你不知道你的触摸板使用什么模块,你可以找到一些挖掘

 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

编辑:我最近想出了如何通过一个复杂的命令可靠地获取驱动程序的名称,这对我来说很简单

 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 

我暂时不得不暂停这样做。

这对我有用的是[Zenbook ASUS UX501VW]:

 sudo modprobe -r elan_i2c sudo modprobe elan_i2c 

而我丢失的触摸板又回来了。

什么可能更容易,哪个适合我,是在内核中重新加载驱动程序。 下面的代码首先找到处理触摸板的内核驱动程序的名称,然后使用rmmod卸载它并使用modprobe重新加载它。 请注意,您需要root才能运行这些命令,因此请先运行sudo su

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

对我来说,在华硕ELAN1200的内核4.13.0-46上,它不是关于重新加载elan_i2c而是hid-multitouch驱动程序:

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

如果你有一个synaptics触摸板:

 synclient TouchpadOff=0 

也可以尝试gksudo /etc/init.d/hotplug restart

一个重置触摸板的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." 

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

  • 插上一个鼠标
  • 进入系统设置>>鼠标和触摸板
  • 将触摸板切换为ON

幻术。

我知道你正在运行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 dump:

 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 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

我将此脚本称为mouse-reset 。 它删除然后modprobe到目前为止这个问题的答案中列出的所有模块:

 #!/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