![노트북 열기/닫기 키 이벤트 스캔이 작동하지 않음](https://linux55.com/image/196596/%EB%85%B8%ED%8A%B8%EB%B6%81%20%EC%97%B4%EA%B8%B0%2F%EB%8B%AB%EA%B8%B0%20%ED%82%A4%20%EC%9D%B4%EB%B2%A4%ED%8A%B8%20%EC%8A%A4%EC%BA%94%EC%9D%B4%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9D%8C.png)
Void-Linux 및 Wayland 데스크탑 환경(sway)을 갖춘 노트북이 있습니다. 노트북의 열기/닫기 이벤트를 사용자 정의 명령에 바인딩하려고 하는데 여기서 주요 이벤트를 검색할 수 없습니다. Wayland 환경이 아닌 콘솔 showkey --scancodes
에서 시도해 보았는데 showkey --keycodes
, 노트북을 열거나 닫아도 아무 것도 표시되지 않습니다. 열기/닫기 이벤트를 올바르게 스캔하거나 Wayland에 바인딩하는 방법은 무엇입니까?
추신: 저는 노트북 모드 도구와 같은 복잡한 도구를 설치하고 싶지 않습니다(가능한 경우). 열기/닫기 시 매우 원시적인 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