블루투스 키보드가 연결되면 명령을 실행해야 합니다. 이 이벤트를 어떻게 "듣나요"?
답변1
하드웨어를 연결할 때,우데브프레임워크는 이를 처리하는 방법을 결정합니다. 일반적인 작업은 아래에 장치 노드를 생성하는 것이지만 /dev
모든 셸 명령을 실행할 수 있습니다.
먼저 장치를 식별하는 방법을 알아야 합니다. 키보드를 연결하고 실행합니다. udevadm info -a -n /dev/input/event9
여기서 마지막 매개변수는 장치에 해당하는 장치 파일의 경로입니다 /dev/
. 접두사를 생략할 수 있습니다 /dev/
. 를 교체 /sys
하여 장치 노드 이름 대신 syspath( 아래에 있는 경로)를 사용할 수 있습니다 . 모든 경우에 장치에 적합한 경로를 대체하십시오. 그러면 장치의 다양한 특성이 인쇄됩니다. 장치를 고유하게 식별하는 데 충분한 테이블에서 하나 이상의 행을 수집하십시오 .-n …
-p class/input/event9
input/event9
SETTING=="VALUE"
/etc/udev/rules.d
이름 vemv-keyboard.rules
또는 이와 유사한 파일 아래에 파일을 만듭니다. 일치시킬 설정과 실행할 작업이 포함된 줄을 이 파일에 넣으세요. ==
속성 일치, =
속성 설정, +=
기타 작업 지정 등 올바른 연산자를 사용하도록 주의하세요 . 그것은 다음과 같습니다:
# Run a program when my wireless keyboard is connected
SUBSYSTEMS=="input", ATTRS{vendor}=="Yoyodene", ATTRS{model}=="Bluetooth keyboard 9000", RUN+="/path/to/script $root/$name"
다음에 장치를 연결하면 프로그램이 실행됩니다(파일을 추가해도 연결된 장치에는 아무런 영향이 없습니다). 실행하여 규칙이 원하는 효과를 얻었는지 확인할 수 있습니다 udevadm test class/input/event9
(여기서 인수는 위의 syspath입니다). 규칙을 수동으로 적용하려면 를 실행하십시오 udevadm trigger --sysname=class/input/event9
.
답변2
udevadm monitor
달리기 는 내 문제를 해결하는 좋은 기반인 것 같습니다 . 데몬 프로세스가 출력을 구문 분석하고, 필수 항목을 필터링하고, 이러한 이벤트에 반응하도록 할 수 있습니다.