笔记本电脑暂停后触摸板不工作

笔记本电脑暂停后触摸板不工作

这似乎是一个常见的问题,但是在尝试了论坛上找到的所有解决方法后,我仍然不知所措。

眼镜:

  • 电脑:华硕k501LX-EB71
  • 操作系统:Ubuntu 14.04.3
  • 内核:3.19.0-26-通用
  • 触摸板:Elantech 触摸板
  • 驱动程序:xser​​ver-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
  1. 使其可执行-chmod +x /lib/systemd/system-sleep/touchpad

这基本上会在从挂起状态唤醒时重新启动 i2c_hid 设备。

礼貌:https://unix.stackexchange.com/a/526488/283735

答案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 笔记本电脑上都遇到了这个问题。

答案4

修补内核可以解决这个问题。你可以找到

  1. 补丁在 Linux 内核邮件列表上

  2. 修补说明位于“如何使用特定提交来修补内核”。

我的 K501LB 现在可以正常运行。

相关内容