mat*_*teo 99 mouse touchpad drivers
我在笔记本电脑上使用 Ubuntu 14.04,通常连接外部 USB 鼠标、键盘和屏幕。但是,有时我会拔掉所有电源并移动笔记本电脑并继续使用内置键盘、屏幕和触摸板。
有时触摸板会停止工作(但如果我插入 USB 鼠标,则 USB 鼠标确实可以工作)。虽然这种情况很少发生,但一旦发生就很烦人,因为如果我需要触摸板再次工作,我不得不重新启动。
是否有一些我可以尝试的解决方法,例如杀死一些会自动重启的进程,或者一些会导致触摸板驱动程序重启或刷新的命令?任何可以“唤醒”触摸板而无需重新启动的东西?
use*_*524 81
我找到了一种方法来做到这一点:
首先,打开一个终端,并打印出所有输入设备以找到要禁用的输入设备所需的 id。在终端输入:
xinput --list
Run Code Online (Sandbox Code Playgroud)
下一页:请注意它在每个输入设备的一长列中显示 id=X 的位置。您想找到与要禁用的输入设备对应的设备 ID(可能听起来像“触摸板”)。然后将以下命令中的 X 替换为代表要禁用的输入设备的 ID 号:
xinput disable X
Run Code Online (Sandbox Code Playgroud)
注意:如果您不确定应该使用哪个设备 ID 来禁用触摸板,那么您可以通过测试随机 ID 并查看您的鼠标垫是否仍然有效来确定。确保您没有做任何重要的事情。如果您执行禁用键盘等操作,请保存所有工作并准备重新启动计算机。(如果您无法在终端中输入,您可能无法再次启用它。
然后你必须运行最后一行(感谢你抓住这个 Arch Stanton!)
xinput enable X
Run Code Online (Sandbox Code Playgroud)
原因:我迫切需要这个问题的答案,因为我在使用触摸板时遇到的问题使任何类型的工作都无法完成。突然,在使用我的笔记本电脑的某个随机时刻,显然没有原因,我的触摸板进入某种“特殊模式”。仅仅在我的触摸板上移动一根手指就会导致屏幕滚动,而不是实际在屏幕上移动鼠标的光标,因此如果没有大量协调工作来解释滚动屏幕,就不可能让鼠标悬停在浏览器中的任何东西上和不动的鼠标。我想找到一种无需重新启动笔记本电脑的方法来重置触摸板。从好的方面来说,使用上述方法重置触摸板实际上可以解决我的问题。
更新:为了更轻松地重置触摸板,我为上面列出的命令制作了一个热键。当我的触摸板出现问题时,我只需按 ctrl+super+r 组合键,它就会为我重置。快捷方便。
就是这样:
- 在您的主目录中创建一个文件并将其命名为“touchpad-reset.sh”。
- 在这个文件中,输入上面列出的三个(最后两个)前面的命令中的两个,而不是使用设备的 X id 号,因为它可能会随着添加的外围设备(也许??)而改变,你可以使用相反:
这是使用此命令从我的计算机在终端内的输出:
xinput --list
Run Code Online (Sandbox Code Playgroud)
结果:
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)]?
Run Code Online (Sandbox Code Playgroud)
- 现在你做什么,你用与单引号内的那个 id 对应的名称替换 xinput disable X 和 xinput enable X 的 X(之前是一个 id)。例如,从上面,如果您想为 id=13,我的触摸板设备执行此操作,您将使用:
xinput disable 'MSFT0001:00 06CB:75BD UNKNOWN'
xinput enable 'MSFT0001:00 06CB:75BD UNKNOWN'
Run Code Online (Sandbox Code Playgroud)
- 所以现在,您是按名称而不是 ID 号禁用,其中 ID 可能会及时更改,然后您将禁用和启用其他设备。
最后,您需要授予权限以使该文件可执行;使用终端中的工作目录作为主目录(创建文件的位置)运行此命令:
chmod +x your_script_name.sh
Run Code Online (Sandbox Code Playgroud)
因此,一旦您使用内部写入的适当命令创建此文件,确保它位于您的主目录中,请执行以下步骤:
恭喜!玩得开心。
小智 80
要重新启动笔记本电脑的触摸板驱动程序:
按Ctrl+ Alt+打开终端T 并执行以下命令
sudo modprobe -r psmouse
Run Code Online (Sandbox Code Playgroud)
然后
sudo modprobe psmouse
Run Code Online (Sandbox Code Playgroud)
我在这里找到了解决方案,也有针对USB鼠标的解决方案
gyr*_*yge 52
我在一台笔记本电脑上反复遇到这个问题,直到我注意到那台电脑的触摸板有自己的开/关开关,我一定是不小心碰到了。值得注意的是,该开关无助于将其重新打开。我只是小心地不按它,不久我就开始使用带有集成无线触摸板的外置无线键盘,从那以后我就没有遇到过这个问题。
更新:( 注意:下面的链接已损坏,解决方案在上面) 自从发布此“解决方案”后,我发布了一条显然满足用户需求的评论。刚刚了解到评论只是暂时保留并会自动删除,我重新发布下面有用评论的内容,以便为其他人保留:
我正在分享对我有用的“解决方案”。今天我突然想到用谷歌搜索更符合您原始问题的解决方案,并找到了以下链接。这不是我个人认为的“方便”,但至少可以通过将其作为脚本来更优雅。我找到了这个(见下文) – gyropyge 9 月 25 日 20:06
按Alt+F2并输入 输入
gksudo modprobe -r psmouse密码,按Enter,然后再次按Alt+F2输入以下内容gksudo modprobe psmouse,然后按Enter
Zan*_*nna 10
如果你不知道你的触摸板使用什么模块,你可以通过一些挖掘来找到
grep -iA2 touchpad /proc/bus/input/devices
Run Code Online (Sandbox Code Playgroud)
对我来说这回来了
N: Name="Elan Touchpad"
P: Phys=
S: Sysfs=/devices/platform/80860F41:03/i2c-11/i2c-ELAN0100:00/input/input10
Run Code Online (Sandbox Code Playgroud)
然后查看此类别中可用的内核模块:
ls $(find /lib/modules/$(uname -r) -type d -name mouse)
Run Code Online (Sandbox Code Playgroud)
对我来说返回
appletouch.ko bcm5974.ko cyapatp.ko elan_i2c.ko gpio_mouse.ko
psmouse.ko sermouse.ko synaptics_i2c.ko synaptics_usb.ko vsxxxaa.ko
Run Code Online (Sandbox Code Playgroud)
交叉引用两者 - 在我的情况下,我的触摸板模块看起来像 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
Run Code Online (Sandbox Code Playgroud)
要检查您是否获得了正确的模块,请测试从内核中卸载它的命令:
sudo modprobe -r elan_i2c
Run Code Online (Sandbox Code Playgroud)
如果您获得了正确的模块,触摸板将立即失效,因此您可以通过反复试验轻松找到它。重新加载它
sudo modprobe elan_i2c
Run Code Online (Sandbox Code Playgroud)
这有效地重新启动了模块。您可以像这样一起运行这两个命令:
sudo modprobe -r elan_i2c && sudo modprobe elan_i2c
Run Code Online (Sandbox Code Playgroud)
我偶尔必须在从暂停状态恢复时执行此操作。
小智 10
如果您有 Synaptics 触摸板:
synclient TouchpadOff=0
Run Code Online (Sandbox Code Playgroud)
pho*_*lat 10
对我来说,在华硕 ELAN1200 的内核 4.13.0-46 上,这不是重新加载elan_i2c而是hid-multitouch驱动程序:
sudo modprobe -r hid-multitouch && sudo modprobe hid-multitouch
Run Code Online (Sandbox Code Playgroud)
可能更容易并且对我有用的是在内核中重新加载驱动程序。以下代码首先查找处理触摸板的内核驱动程序的名称,然后rmmod使用modprobe. 请注意,您需要以 root 身份运行这些命令,因此sudo su请先运行。
> lsmod | grep touch
hid_multitouch 20480 0
> rmmod hid_multitouch
> modprobe hid_multitouch
Run Code Online (Sandbox Code Playgroud)
小智 6
这是对我有用的是 [Zenbook ASUS UX501VW]:
sudo modprobe -r elan_i2c
sudo modprobe elan_i2c
Run Code Online (Sandbox Code Playgroud)
我丢失的触摸板又回来了。