![扫描笔记本电脑打开/关闭按键事件不起作用](https://linux22.com/image/196596/%E6%89%AB%E6%8F%8F%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91%E6%89%93%E5%BC%80%2F%E5%85%B3%E9%97%AD%E6%8C%89%E9%94%AE%E4%BA%8B%E4%BB%B6%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我有一台带有 Void-Linux 和 Wayland 桌面环境 (sway) 的笔记本电脑。我正在尝试将笔记本电脑的打开/关闭事件绑定到自定义命令,但我无法在此处扫描关键事件。我在 Wayland 环境之外的控制台showkey --scancodes
上进行了尝试showkey --keycodes
,但当我打开或关闭笔记本电脑时,它没有显示任何内容。如何在 Wayland 中正确扫描打开/关闭事件或绑定它?
PS:我真的不想安装一些复杂的工具,例如笔记本电脑模式工具(如果可能的话),我只需要在打开/关闭时运行非常原始的 bash 脚本。
答案1
作为解决方法,我根据 @peregrino69 注释创建了一个脚本:它每秒读取 LID 状态/proc/acpi/button/lid/LID0/state
,并在状态更改时执行回调函数:
#!/bin/bash
_state="open"
function on_state_open {
# run commands on open
}
function on_state_close {
# run commands on close
}
function on_state_change {
local update="$1"
local change=false
if [[ "${_state}" != "$update" ]]; then
change=true
fi
_state="$update"
if $change; then
case "${_state}" in
"open")
on_state_open
;;
"closed")
on_state_close
;;
esac
fi
}
while true; do
snapshot=$(cat /proc/acpi/button/lid/LID0/state | awk -d' ' '{print $2}')
on_state_change "$snapshot"
sleep 1
done