屏幕合上后触摸板无法使用
这是一个遗留问题,从两年前开始就一直存在。过去由于对驱动不熟悉,没有考虑驱动的问题。
解决问题的尝试
现在首先判断触摸板使用的驱动是哪一个。搜集资料发现,当前系统中的触摸板驱动为 psmouse。
在正常模式下移除该驱动,触摸板无法使用。加载该驱动,触摸板能够恢复正常。
研究网上的帖子进行了如下尝试:
- 在挂起后尝试重新加载 psmouse 模块
这个方法不起作用。检查发现从挂起状态恢复后 psmouse 仍旧存在, 排除驱动在挂起时被移除的问题。
- 在BIOS中进行相关设置
检查BISO,发现并无网上提及的配置。尝试设置USB模式为 enable,重启后进入系统发现 usb 键盘无法使用。恢复为 smart 后 usb 键盘正常工作。
- 修改合上盖子的操作
在 Tweak Tool 中将合上盖子的操作从 suspend 动作切换到其它动作,解决了这个问题。
- 查看一篇博客,可通过修改配置文件来解决问题
- 以 root 权限打开 /etc/systemd/logind.conf 配置文件
修改默认配置如下:
HandleLidSwitch=lock
- 使用 sudo systemctl restart systemd-logind.service 让设置立刻生效
通过修改合上盖子后的动作来解决该问题确实是一个解决方案。只是没有找到挂起后触摸板无法使用的问题根源。
进一步的分析
对于系统挂起事件而言,触摸板硬件与触摸板驱动肯定有哪部分受到了影响。研究发现一旦挂起之后触摸板无法使用,再次移除、加载触摸板驱动仍旧无法使触摸板正常工作。这样的尝试能从一定程度上说明问题可能不在触摸板驱动上,不过,也有可能是触摸板的配置不同了。那么这就引出了一个新的问题: 系统引导时加载内核模块与系统运行起来后加载模块有什么不同呢?
这个新的问题暂时放一放。
排除挂起前后触摸板被禁用的问题
有没有可能是在挂起后禁用了触摸板硬件呢?要如何排除这个问题呢?
进一步的研究发现,在 xinput 中能够关闭输入设备。我在 xinput 中关闭触摸板设备,重新开启触摸板能够正常工作。我怀疑是不是挂起的时候将设备关闭了呢?进一步的检验发现挂起前后触摸板都是启用的,排除了这个问题。
这之后,我发现删除 psmouse 内核模块后重新加载之后不能识别出设备,dev 目录下的 input 目录中没有生成设备文件。没有设备文件,xinput 也无法识别出触摸板设备。
留给未来的疑问
挂起到底做了什么事情?与输入输出设备相关的有哪些?
有时间的话要好好研究研究!