这似乎是一个常见的问题,但是在尝试了论坛上找到的所有解决方法后,我仍然不知所措。
眼镜:
- 电脑:华硕k501LX-EB71
- 操作系统:Ubuntu 14.04.3
- 内核:3.19.0-26-通用
- 触摸板:Elantech 触摸板
- 驱动程序:xserver-xorg-input-synaptics-lts-trusty(或)xserver-xorg-input-synaptics-lts-vivid(不确定正在使用哪一个)
我尝试过的方法:我可以运行sudo modprobe -r psmouse
“关闭”触摸板,然后sudo modprobe psmouse
再将其重新打开。这很有效。但是当我暂停时,即使我输入这些命令,也无法“恢复”触摸板。
有什么想法吗?
更新:
如果我休眠而不是挂起,则不会观察到此问题。我不确定该如何解释这个线索...
目前的解决方法:
由于休眠似乎不会引起问题并且我有适当数量的交换内存,因此我只是将休眠作为关闭盖子等操作的默认操作。以下是我启用休眠模式的步骤我还使用 org>gnome>settings-daemon>plugins>power 下的 dconf 编辑器修改了其他默认电源设置以进入休眠状态
答案1
以下解决方案在运行 Ubuntu 18.04 (5.0.0-36-generic) 的 Acer Predator Helios 300 上对我有用,而其他所有方法都不起作用 -
检查解决方案是否有效
当您的触控板无法工作时,尝试在从挂起状态唤醒后运行以下命令/sbin/rmmod i2c_hid && /sbin/modprobe i2c_hid
- 。
如果这能让您的触控板工作,请按照以下步骤创建一个自动解决方案,每次从挂起状态唤醒时都会运行此命令。
永久解决方案
1.创建/lib/systemd/system-sleep/touchpad
2.打开上述文件并编辑,sudo vi /lib/systemd/system-sleep/touchpad
3.在文件中保存以下内容-
#!/bin/sh
case $1 in
post)
/sbin/rmmod i2c_hid && /sbin/modprobe i2c_hid
;;
esac
- 使其可执行-
chmod +x /lib/systemd/system-sleep/touchpad
这基本上会在从挂起状态唤醒时重新启动 i2c_hid 设备。
答案2
在启动板中报告了此错误:Elantech 触摸板在挂起后停止工作。暂停后,OP 尝试了# modprobe -r psmouse
,# modprobe psmouse
但没有成功。但如果鼠标在挂起之前被移除并在挂起之后被插入?
如果手动操作成功,那么您可以通过在 /lib/systemd/system-sleep/
目录中创建包含以下内容的新文件来实现自动化:
#!/bin/sh
case $1/$2 in
pre/*)
echo "Going to $2..."
# Place your pre suspend commands here, or `exit 0` if no pre suspend action required
modprobe -r psmouse
;;
post/*)
echo "Waking up from $2..."
# Place your post suspend (resume) commands here, or `exit 0` if no post suspend action required
sleep 2
modprobe psmouse
;;
esac
众所周知,暂停后鼠标模块无法移除。我们还知道它可以在挂起之前移除和插入。因此,此技术会在挂起之前将其移除。恢复后插入它,希望内核不会拒绝它。
该sleep 2
命令来自我自己的问题,其中 systemd 和内核(通过 gnome 或 APM)都处于睡眠和唤醒状态。由于 Ubuntu 16.04/pulseaudio 8.0 中引入了一个错误,我需要将 pulseaudio 声音重定向回电视。内核和 systemd 需要 2 秒的延迟才能完成唤醒。仍然没有弄清楚双挂起和双恢复......
答案3
我用两种简单的方法处理这个问题。第一种方法并不总是有效(正如你提到的),只是在暂停操作后重新启动鼠标模块。
须藤 rmmod psmouse;须藤 modprobe psmouse
以下是关于如何“自动”执行此操作的很好的讨论: 如何在暂停恢复后执行命令?
另一种方法是在挂起之前终止模块,避免在恢复后锁定模块(这显然是产生问题的原因,正如 WinEunuuchs2Unix 所强调的那样)。
为此,我使用简单的命令行来暂停笔记本电脑,而不是“手动”关闭盖子。当然,这并不花哨,但有效,而且是一个直接的解决方案。无需花费时间进行破解。
sudo rmmod psmouse;sudo pm-suspend
然后,恢复笔记本电脑后,您应该通过键入以下内容重新启用该模块:
sudo modprobe psmouse
您可以随时破解默认pm-suspend
脚本,但我不建议这样做。生成这些临时的小命令序列更简单、更安全。
最后,快速执行“终止/暂停”和“重新启用”鼠标模块的简单、快捷的方法是将这些步骤与键盘快捷键关联起来:如何更改键盘上按键的功能?(如何创建自定义键盘命令/快捷键?)。
希望它能起作用,对我来说确实有效,尽管以这种方式处理确实很不舒服。我在 HP 和 Asus 笔记本电脑上都遇到了这个问题。