나는 2년 넘게 수정되지 않은 작은 Wayland/Mutter 버그를 수정하기 위해 쉘 스크립트 작업을 시도하고 있습니다. 저는 쉘 스크립팅을 처음 접했지만 이것이 가능할 것이라고 생각합니다.
문제는 Wayland에서 LED로 키보드 레이아웃을 표시하는 xkb 옵션이 제대로 작동하지 않는다는 것입니다. 첫 번째 레이아웃 스위치에서 작동하여 LED를 켰다가 작동을 멈추고 LED가 항상 켜진 상태로 유지됩니다.
그래서 내 아이디어는 특정 키(내 경우에는 CapsLock)를 눌렀을 때 시스템 LED 파일의 내용을 확인하고 이를 반대 값으로 변경하는 스크립트를 갖는 것입니다. 논리는 다음과 같습니다.
listen to CapsLock and upon keypress
do cat /sys/class/leds/input7::capslock/brightness
if cat returns 0
then echo 1 > /sys/class/leds/input7::capslock/brightness
if cat returns 1
then echo 0 > /sys/class/leds/input7::capslock/brightness
wait for next CapsLock keypress
나는 예제를 통해 배우는 데 능숙하지만 온라인에서 이에 대한 정보를 찾을 수 없습니다. 관련 결과를 얻기 위해 올바르게 표현하는 방법을 모르는 것 같습니다. 따라서 올바른 방향에 대한 조언과 조언을 주시면 감사하겠습니다!
고쳐 쓰다:
현재 상태에 따라 LED를 켜고 끄는 쉘 스크립트를 만들었습니다. CapsLock을 누를 때마다 실행되게 하려면 어떻게 해야 합니까?
#!/bin/bash
led=`cat /sys/class/leds/input7::capslock/brightness`
if [[ $led = "1" ]]
then
echo 0 > /sys/class/leds/input7::capslock/brightness
else
echo 1 > /sys/class/leds/input7::capslock/brightness
fi
업데이트 2:
분명히 쉘 스크립트를 실행 가능하게 만들고 로 옮긴 다음 암호 없이 실행할 수 있도록 /usr/local/bin/
파일에 추가했습니다 ./etc/sudoers.d/
UPD3ìnput
재부팅할 때마다 디렉터리 구조의 숫자가 변경될 수 있다는 사실을 알고 이를 고려하여 스크립트를 수정했습니다.
#!/bin/bash
led=`cat /sys/class/leds/input?::capslock/brightness`
file=`ls /sys/class/leds/input?::capslock/brightness`
if [[ $led = "1" ]]
then
echo 0 > $file
else
echo 1 > $file
fi
이제 Caps Lock을 누를 때마다 이 작업을 수행해야 합니다.
UPD4:
CapsLock 누르기 대신 실제 키보드 레이아웃 변경 이벤트를 캡처해야 할까요? 이 접근 방식은 더욱 다양하며 레이아웃을 전환하는 데 사용되는 바로 가기에 관계없이 LED 표시기가 대체 레이아웃을 표시할 수 있게 해줍니다. 그러한 이벤트를 모니터링할 수 있는 방법이 있습니까?