Bluetooth 키보드를 헤드리스 Raspberry Pi에 연결하고 어떻게든 키 입력(Ctrl+Shift+X 조합 포함)을 가로채서 시스템에서 제거하여 더 이상 시스템과 상호 작용하지 않도록 하고 싶습니다.
나는 라즈베리 파이에 키보드를 연결한 적이 없고 오직 SSH를 통해서만 상호 작용했으며 계속 그렇게 하고 싶습니다. 하드웨어 키보드가 연결된 경우에만 키보드를 홈 자동화 기능, 제어 인터페이스로 사용하기 위해 해당 하드웨어의 키 누름(및 해제)을 Python 스크립트로 리디렉션하고 싶습니다.
또한 이러한 장치에는 X 서버가 설치되어 있지 않으므로 그대로 유지해야 합니다.
어떻게 해야 하나요?
답변1
키보드는 결국 표준 HID(휴먼 인터페이스) 장치로 인식되어 아래의 장치로 표시됩니다 /dev/input/
. 다음 명령을 사용하여 장치에서 이벤트를 읽 evtest
거나 라이브러리를 통해 Python에서 이벤트를 읽을 수 있습니다.파이썬-evdev. 다른 유사한 라이브러리가 있을 수 있습니다. Raspian용 패키지가 있는지는 모르겠지만 Fedora용 rpm은 확실히 있습니다 python-evdev
.
evtest
매개변수가 없으면 장치가 나열되고 이벤트를 모니터링할 장치를 선택하라는 메시지가 표시됩니다. 유사한 도구를 사용하여 inotifywait
에 나타나는 새 장치를 찾을 수 있습니다 /dev/input/
. Python 라이브러리는 장치를 나열하고 모니터링할 수도 있지만 폴링 없이는 새 장치를 감지할 수는 없을 것 같습니다. 한 기기에서 요청 하면 grab
다른 기기에서는 이벤트를 받을 수 없습니다.
evtest
정시 출력 enter
:
Event: time 1509452892.590022, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1509452892.590022, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1509452892.590022, -------------- SYN_REPORT ------------
Event: time 1509452894.005980, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1509452894.005980, type 1 (EV_KEY), code 28 (KEY_ENTER), value 1
Event: time 1509452894.005980, -------------- SYN_REPORT ------------