检查 acpi 键绑定并将键盘按键事件重新映射到 acpi 事件

检查 acpi 键绑定并将键盘按键事件重新映射到 acpi 事件

我有两个安装了 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 acpidsudo 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 中,并且将成为路径的一部分。

相关内容