나는 백라이트가 있는 매우 간단한 범용 게임 키보드를 가지고 있습니다. 일반적으로 백라이트를 사용하는 일반적인 방법은 를 사용하는 것입니다 xset led 3
. 이것이 실제로 작동하는지 확인할 수 있습니다. 하지만 컴퓨터가 두 대이기 때문에 주변 스위치를 통해 앞뒤로 전환할 수 있는데, 한 환경에서 다른 환경으로 전환할 때 USB를 뽑았다가 다시 연결해야 하기 때문에 문제가 발생합니다.
나는 /etc/udev/rules.d/keyboard.rules
다음 규칙에 따라 파일을 작성했습니다.
ATTRS{idVendor}=="258a", ATTRS{idProduct}=="0001", RUN+="/bin/bash -c \"DISPLAY=:1;xset led 3;\""
단독으로 실행 하면 /bin/bash -c \"DISPLAY=:1;xset led 3;\"
잘 작동하지만 단순한 규칙은 아닌 것 같습니다. 가끔씩만 켜지고, 켜지면 깜박인 다음 즉시 꺼집니다. 여러 번 확인한 결과 내 idVender 및 idProduct가 올바른 것으로 확인되었습니다.
Bus 003 Device 079: ID 258a:0001
또 무엇을 놓칠 수 있습니까?
답변1
문제는 귀하의 규칙이 여러 번 실행된다는 것입니다(이런 경우인지 확인할 수 있습니다 udevadm monitor
). 각 xset
명령은 LED 상태를 전환하여 LED가 잠시 깜박인 다음 다시 꺼지게 합니다. 규칙을 더욱 구체적으로 만들어야 합니다. 예를 들면 다음과 같습니다.
ACTION=="add", ENV{DEVTYPE}=="usb_interface", ATTRS{idVendor}=="258a", ATTRS{idProduct}=="0001", RUN+="/bin/bash -c \"DISPLAY=:1 xset led 3;\""
그래도 도움이 되지 않으면 더 자세히 조사하여 규칙의 속성을 지정해 보시기 바랍니다 bInterfaceClass
.bInterfaceSubClass
편집하다:
하드웨어에 대한 또 다른 이론은 udev
키보드가 LED 명령을 받아들일 준비가 되지 않았을 때 규칙이 너무 일찍 실행된다는 것입니다. 무슨 일이 일어났는지 보고해 보세요 "/bin/bash -c \"sleep 5;DISPLAY=:1 xset led 3;\""
. 그 외에 몇 가지 주의사항이 있습니다.
DISPLAY
나는 당신이 당신의 것이:1
이고 아닌지 를 확신하기를 바랍니다:0
.명령
DISPLAY
에 변수를 추가하는 방법에 주목하세요 . 변수 자체를 가 아닌 로 설정하십시오 .xset
DISPLAY=:1
DISPLAY
bash
xset
XAUTHORITY="/home/<user>/.Xauthority"
그것에 추가하고 싶을 수도 있습니다 .
답변2
/etc/udev/rules.d/keyboardled.rules
ACTION=="추가", ATTRS{idVendor}=="1c4f", ATTRS{idProduct}=="0002", RUN+="/bin/sh -c 'DISPLAY=:0.0 XAUTHORITY=/home/nill/.Xauthority sh -c "xset led 3" &'"
작동 중입니다... =D