임베디드 장치에서 키보드에 액세스하는 방법

임베디드 장치에서 키보드에 액세스하는 방법

저는 터치스크린 디스플레이가 내장된 장치를 작업하고 있는데 지금까지는 키보드가 없습니다. 사용자가 접근할 수 없는 커넥터를 통해 접근할 수 있는 콘솔이 있습니다. 이 장치에는 CDC/ACM 클래스 장치로 열거되어 /dev/ttyACM0을 생성하는 바코드 스캐너를 연결한 USB 포트도 있습니다. 콘솔에서는 "cat ttyACM0"을 실행하고 바코드를 스캔하여 콘솔에 인쇄된 결과를 볼 수 있습니다. 물론 실제 애플리케이션 코드는 좀 더 복잡하지만 본질은 동일합니다. /dev/ttyACM0을 열고 읽고 데이터를 UI에 전달합니다.

이제 USB HID 키보드를 매우 성공적으로 열거하는 자기 카드 리더가 있습니다. Windows에 연결하면 메모장을 열고 스와이프하여 키보드에 입력한 대로 데이터가 표시되는 것을 볼 수 있습니다. 하지만 지금까지 바코드 스캐너만큼 쉽게 키보드 데이터를 볼 수 있는 방법을 찾지 못했습니다.

리더가 열거되면 /dev/input/event1이 나타나는 것을 볼 수 있습니다. 내가 그것을 잡으면(실제로는 od -x it) 내가 예상하는 이벤트를 볼 수 있고할 수 있다통역사를 작성하세요. 내가 Register_keyboard_notifier()를 수행하는 모듈을 작성할 수 있었기 때문에 drivers/tty/vt/keyboard.c 코드에서도 이러한 이벤트를 볼 수 있습니다. 콜백이 호출되고 SHIFT 키를 처리하는 KBD_KEYSYM 메시지가 표시되며 스캔 코드가 해석되어 ASCII 문자로 변환됩니다. 내 모듈을 더욱 향상시켜 나만의 "/dev/keyboard" 항목 등을 만들 수 있습니다. 그러나 나는 항상 이 작업을 해서는 안 된다고 생각했으며, 사용자 영역 코드에서 /dev/ttyACM0에서 열고 읽는 사용자 영역 코드에서 이러한 ASCII 키 입력이 어떻게 보이는지 확인하기 위해 사용자 영역 코드에서 간단하고 간단한 작업을 수행할 수 있다고 생각했습니다. 바코드 스캐너의 출력을 보는 것과 같은 방식입니다.

업데이트: "시간은 누구도 기다리지 않습니다." 그리고 내 프로젝트 관리자도 마찬가지입니다. 본질적으로 다른 여러 포럼에서 다른 사람들이 동일한 질문을 했지만 답변이 없으므로 답변이 없을 수도 있습니다. 어쨌든, 나는 방금 드라이버를 작성하여 이제 잘 읽을 수 있는 /dev/magcard를 갖게 되었습니다.

관련 정보