扫描笔记本电脑打开/关闭按键事件不起作用

扫描笔记本电脑打开/关闭按键事件不起作用

我有一台带有 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

相关内容