2009-10-05 3 views
3

리눅스 USB HID 장치 (Hama MCE)가 있는데, cat /dev/input/event7cat /dev/input/event8으로 수동으로 이벤트를 읽을 수 있습니다. 장치의 키를 누를 때마다 위의 cat 명령 중 하나를 사용하여 몇 바이트를 읽을 수 있습니다. 나는 컴퓨터에 Ubuntu Jaunty 64 비트 데스크탑의 기본 설치를 가지고 있습니다.Ubuntu Jaunty에서 HID 장치의 이벤트를 읽으려면 어떻게해야합니까?

나는 장치에서 방출 된 바이트를 해석 할 수있는 파서를 작성할 수 있다고 생각한다. 더 편리하다면 libhid을 사용할 것이다.

내 질문은 :

  1. 가 어떻게 일반 키 누름과 같은 장치에서 키 입력의 일부를받는 텍스트 모드 가상 콘솔을 방지합니까? 지금까지 일부 장치 키는 , BackSpace, PageUp 또는 숫자 키패드 번호를 입력합니다.
  2. 마찬가지로 X 서버가이 장치에서 키보드 및 마우스 이벤트를 수신하지 못하게합니까? 컴퓨터에 여러 USB 키보드와 마우스가 연결되어 있습니다. 이 장치를 제외하고 X 서버가 모든 이벤트를 수신하도록합니다.
  3. 장치가 컴퓨터에 연결될 때마다 /usr/local/bin/keydumper /dev/input/event7 /dev/input/event8 (또는 각 /dev/ 경로에 대해 하나의 명령) 명령이 실행되고 명령 줄에서 적절한 /dev/ 경로가 대체되어 실행됩니까?

답변

5

리눅스 USB에서 응답에 따라 내 자신의 질문에 대답은 드라이버 개발자를 HID 이 파일 핸들에만 을 보내고 동일한 장치의 다른 open() 또는 시스템 키보드 또는 마우스 이벤트 풀 으로 이동하지 마십시오. 하나의 프로세스가 한 번에 HID 장치에서 성공적인 EVIOCGRAB을 보유 할 수 있습니다. Lirc는 EVIOCGRAB을 수행하도록 구성 할 수 있습니다.

질문 3 : 장치가 연결되면 프로그램을 시작하도록 udev를 구성하십시오.

-1

모든 질문에 대한 해결책은 자체 필터 장치 드라이버 또는 장치 용 사용자 지정 드라이버를 작성하는 것입니다. 나는 그런 장치 (필터 장치 드라이버)가 윈도우에서 사용 가능하다는 것을 알고있다. 그래서 비슷한 것이 리눅스에있을 수있다. 해당 필터 장치 드라이버에서 차단하려는 대상 장치의 원하지 않는 모든 이벤트를 차단할 수 있으므로 실제로 어떻게 3 질문을 얻지 않아도 그에 대한 대답을 알 수 없습니다.

질문 1과 2는

ioctl(open("/dev/input/event7", O_RDONLY), EVIOCGRAB, 1); 

만큼이 파일 핸들이 열려있는, 이벤트가 생성 된 것 수행 .: :

0

나는 슬프게도 의견을 말할만한 점수가 부족합니다.

당신은

#include <linux/input.h> 
을 시도 EVIOCGRAB의 정의를 찾고 있다면
관련 문제