答案1
我遇到了同样的问题。(您有 HP 笔记本电脑吗?)
接下来的步骤将测试您是否遇到与我相同的问题,并提供解决方案。它基于 reddit 上 usser“ebin92”关于此主题的非常有用的评论。
测试
我们将检查打开/关闭盖子事件是否发送扫描码,如果是,则重新映射它们
- 打开终端并输入:
<journalctl -f>
- 然后打开并关闭盖子,并在终端中检查未知的扫描码(在我的情况下,它们是“e058”和“e057”)
- 将盖子发送的扫描码重新映射到 DISPLAY OFF 代码(如果需要,您可以将其重新映射到另一个键码)为此,请使用 >>
setkeycodes [SCANCODE] [KEYCODE]
在我的情况下,>>setkeycodes e058 245 e057 245
再次尝试打开和关闭盖子,如果问题解决,就让它永久生效。
永久修复
我们将启用新的 systemd 服务,在启动时重新映射扫描码
- 打开终端并转到 /etc/systemd/system。以超级用户身份执行后续步骤
- 创建一个名为“YOURNAME.service”的新文件。在我的例子中,它是“lidbehaviour_override.service”
- 放入附件内容(见下文)并编辑密钥代码以适合您的案例
- 授予文件执行权限,运行>>
sudo chdmod a+x FILENAME
就我而言>>sudo chdmod a+x lidbehaviour_override.service
- 测试服务是否一切正常。为此:· 使用以下方法重新加载守护进程配置(您在 systemd 中修改的所有内容)
sudo systemctl daemon-reload
· 使用以下方法运行新服务(sudo systemctl start YOURNAME.service
就我而言)systemctl start lidbehaviour_override.service
· 打开和关闭盖子 - 如果一切顺利,则让服务在启动时启动,
sudo systemctl enable YOURNAME.service
就我而言systemctl enable lidbehaviour_override.service
SYSTEMD 服务内容
[Unit]
Description=Fix aeroplane mode on/off when lid opens/closes
[Service]
ExecStart=/usr/bin/setkeycodes e058 245 e057 245
[Install]
WantedBy=multi-user.target