2010-08-11 5 views
1

내 PC 키보드, 일반적인 키보드 (H 우만 I nterface D evice) 입력 영역 디바이스 HID (그것이 리모트 컨트롤)처럼 작동하는 두 개의 장치를 갖는다.다른 장치들로부터 입력을 결정

입력을 키보드와 리모컨에서 분리하고 리모컨 만 캡처하려고합니다. 이 작업을 수행하기 위해 C/C++에서 프로그램을 작성하려면 어떻게해야합니까?

이 프로그램은 운영 체제에 따라 다르기 때문에 쉬운 작업이 아닙니다. Windows 용으로 필요하지만 Linux 용으로 누군가를 어떻게 사용하는지 알고 있다면 고맙겠습니다.

답변

1

나는 Linux에서이 작업을 수행했다. 내가 가진 장치는 HID 키보드로 나타나는 바코드 판독기였다.

그때 내 응용 프로그램이 독점하게 입력 장치를, "잡아"로 EVIOCGRAB IOCTL을 사용하여, /dev/input에서 해당 이벤트 장치를 열어 그것을했다 (즉, 입력 장치에 대한 이벤트가 더 이상 X로 이동하지, 또는 아무것도 그밖에). 그런 다음 이벤트 장치에서 입력 이벤트를 읽고 적절하게 조치를 취합니다.

+0

도움이 될 http://www.linuxjournal.com/article/6908 – KedarX

+0

다음은 Linux에서이 작업을 수행하는 방법을 보여줍니다. https://www.youtube.com/watch?v=_6lGwldHS1I – Andre

2

Windows XP 이상에서는 원시 입력 장치 메시지를 사용할 수 있습니다. 먼저 RegisterRawInputDevices() API 함수를 호출하여 '키보드'에 대해 원시 입력을 사용하도록 설정합니다. 입력 장치를 열거하고 리모컨에 해당하는 핸들을 찾으려면 GetRawInputDeviceList()으로 전화하십시오. 그런 다음 원시 입력 이벤트가 들어있는 WM_INPUT 창 메시지를 처리하고 연결된 RAWINPUT 구조체의 헤더를 검사하여 원본 장치 핸들이 이전에 가져온 핸들과 일치하는지 확인합니다. 이 경우 이벤트 처리를 계속할 수 있습니다.

유용한 RIDEV_INPUTSINK 플래그에 유의하십시오. 이를 지정하면 전경 창이 아니더라도 이벤트가 인 WM_INPUT 메시지를 수신하게됩니다.