2012-07-11 1 views
6

/dev/input/event0에서 읽은 키보드 이벤트를 내장 된 응용 프로그램 내부의 해당 ASCII에 정의 된 값으로 변환하려고합니다. X 또는 터미널을 실행하지 않습니다./dev/input/event *의 Linux 키 코드를 ASCII로 변환하려면 어떻게해야합니까?

이것은 내 자신의 std :: map <을 만드는 것보다 리눅스에서 정의 된 키맵 기능을 통해 이루어져야한다고 생각합니다.하지만 시작할 수있는 좋은 곳을 찾지 못하는 것 같습니다. 지금까지 발견 한 예제 중 대부분은 X 윈도우 나 터미널로 실행하고 있다고 가정합니다.

+0

터미널이 재미있을 수있는 구현합니다. 레거시 터미널을 지원하기 위해 40 년 이상 추상화되지 않은 채 묻혀있을 지 모르지만. –

+0

예, kdb-1.12.tar.gz를 파고 있지만 흔적을 잃어 버렸습니다. –

+0

이 정보가 도움이됩니까? [Derek @ TheDailyLinux에 의해 게시 됨»이벤트 장치 노드 (/dev/input/event)](http://www.thelinuxdaily.com/2010/05/grab-raw-keyboard-input-from)에서 원시 키보드 입력 잡기 -event-device-node-devinputevent /) – kbulgrien

답변

1

텍스트 입력 (기존 미국 키보드와 7 비트 ASCII 표준의 매우 간단한 경우 제외)은 매우 복잡한 필드입니다. 기존의 모든 입력 메소드를 이용할 수있는 X 클라이언트를 사용하여이 작업을 수행 할 것을 강력하게 제안합니다.

하지만 키보드와 하나의 언어에 만족해야한다면 터미널과 마찬가지로 이벤트를 해석하면됩니다. 값에 대해서는 /usr/include/linux/input.h의 정의를 확인하십시오. Shift 및 Ctrl 키 (Alt, Fn 등과 같은 ASCII가 아닌 키는 물론 해석 할 수 있음)를 추적하고 키 업 이벤트에서 해당 바이트를 내 보냅니다. 어플 리케이션에 기본값이 작동하지 않는 경우에도 자동 반복 기능을 구현하는 것이 좋습니다.

기본적으로 :하지 마십시오. 이것은 당신이 깨닫는 것보다 훨씬 (!) 더 어려운 문제입니다.

관련 문제