我有两个安装了 Ubuntu 18.04.1 的系统。这两个系统的硬件和软件配置相似,但其中一个系统会暂停到 SBTN 按下事件,而另一个系统则不执行任何操作。我检查了 gsettings,发现两个系统的 org.gnome.settings-daemon.plugins.power 配置相似。我想知道与 SBTN 按键事件相关的完整按键绑定。
我如何以及在哪里可以检查这些?
另外,如何将键盘按键事件(例如键码 127,即暂停/中断按钮)重新映射到 SBTN 按钮/PWBN 按钮?
如何将系统暂停操作映射到键盘暂停/中断按钮?
PS:我使用 acpi_listen 监听 PWBN 和 SBTN 按键事件,并且能够看到按键。为了检查键盘事件,我使用 xinput 测试。此外,我需要在挂起操作后使用相同的按键让系统恢复运行。
答案1
上述方法的问题在于创建的键盘快捷键适用于会话中的用户。我希望按钮分配在所有用户中都是持久的,并且不希望在执行暂停时输入任何密码。
扩展@BarBar1234 的方法并使用电源按钮事件而不是睡眠按钮事件,尽管不是所发布问题的确切解决方案,但以下内容工作正常。
$sudo vi /etc/acpi/events/power
event=button/power
action=/etc/acpi/suspendsys.sh
$sudo vi /etc/acpi/suspendsys.sh
#!/bin/bash
systemctl suspend
$sudo chmod u+x /etc/acpi/suspendsys.sh
$sudo systemctl restart acpid
答案2
首先,检查另一台机器上是否正在运行 acpi 服务,使用sudo systemctl status acpid
或sudo service acpid status
如果这样做,请systemctl suspend
在另一台对睡眠/挂起按钮没有响应的机器上进行测试,看看是否打印了任何错误或警告。
至于将自定义键绑定设置为暂停/中断键,我会尝试将其绑定到执行systemctl suspend
命令的脚本,因为尝试重新映射睡眠/挂起按钮将需要清除内置睡眠/挂起键的先前绑定(如果有的话)(如果我没记错的话)。换句话说,编写一个脚本suspendme.sh
。
touch suspendme.sh
nano suspendme.sh
在 suspendme.sh 脚本中:
#!/bin/bash systemctl suspend
chmod u+x suspendme.sh
mv suspendme.sh /usr/local/bin/
然后,您只需在 Gnome 和 Unity 中使用“系统设置”>“键盘”>“快捷方式”>“自定义快捷方式”即可设置快捷方式。只需单击 +,然后使用暂停键执行命令,suspendme.sh
因为它位于 /usr/local/bin 中,并且将成为路径的一部分。