2013-02-11 2 views
4

일반적인 USB 키보드와 동일하게 작동하지만 숫자 패드 키와 LED 만있는 USB 숫자 패드를 구입했습니다. 그것은 리눅스에서 정상적으로 작동하고 실제 키보드와 숫자를 입력 할 수 있습니다. 창을 가질 필요없이 키 입력 및 LED 제어에 직접 반응 할 수있는 응용 프로그램을 작성하고 다른 응용 프로그램이 해당 응용 프로그램에 응답하지 못하게하려고합니다. 어떻게해야합니까?리눅스 : USB 키보드로 직접 연결

+0

http://www.x.org/wiki/XI2 –

+1

을에서 수행하는 방법을 볼 수 XInput에 대한 소스 코드를 볼 수 있습니다 나에게 많은 걸. XGrabDevice를 사용해야할까요? 하지만이 디스플레이는 어디서 구할 수 있습니까? – Rena

답변

1

글쎄, 이그나시오의 의견은 올바른 방향으로 나를 가리키는 데 약간 도움이되었다. gdk_display_get_default()에서 디스플레이를 가져온 다음 gdk_display_get_device_manager()를 사용하고 gdk_device_manager_list_devices()를 사용하여 장치를 찾은 다음 마지막으로 gdk_device_grab()를 사용하여 장치를 가져와야합니다. (또는 정말로 원한다면 X API를 직접 사용할 수도 있습니다 ...) 그러면 포커스에 관계없이 키보드의 이벤트를 내 윈도우로 보낼 수 있습니다.

내가 겪었던 한 가지 문제점은 창을 숨김, 최소화 또는 다른 작업 공간에서 수신하지 못하도록 "표시"해야한다는 것입니다. 내가 숨길 수있는 최선의 방법은 1x1 픽셀의 장식을하지 않고 어딘가에 화면에 붙이는 것입니다 (일부 WM에서는 실제로 화면이 보이지 않으므로 작은 크기이기도 함).

0

이벤트 장치 인터페이스 /dev/input을 확인하십시오.

좋은 파이썬 인터페이스입니다 http://pythonhosted.org/evdev/

상세 정보 :
가 입력 서브 시스템을 사용하여, 파트 II
리눅스 저널, 이슈 # 107 2003 년 월 나는 비슷한 작업입니다
http://www.linuxjournal.com/article/6429

아마도 키보드 이벤트를 캡처하기 위해 evdev를 사용할 것이지만 Xlib 레이어에서 XTest를 사용하여 가상 키보드 이벤트를 생성 할 것입니다.

/dev/input이 X보다 작으므로 창 포커스/표시가 필요하지 않습니다.

UPDATE (헤세이 17, 2014) : 여기

명령 행 통해 전혀 다른 방식이다.

1) xinput --list으로 사용 가능한 입력 장치 (및 해당 ID)를 나열하십시오.

2) "Float"대상 입력 장치는 xinput --float <device_id>입니다. 장치를 플로팅 한 후에는 실행중인 응용 프로그램에서 생성 한 입력 이벤트가 더 이상 들리지 않습니다. 따라서 테스트/개발 중에는 두 개의 키보드 (및/또는 마우스)를 꽂고, 다른 하나는 플로팅하고, 다른 하나는 연결해야합니다. (xinput --reattach <device_id> <master_id>으로 플로팅 된 장치를 다시 부착 할 수 있습니다.)

3) 장치가 플로팅 된 후 xinput --test <device_id>을 실행하여 생성 한 이벤트를 "볼"수 있습니다.

당신이 ... 말하지 않는 C.
http://anonscm.debian.org/gitweb/?p=pkg-xorg/app/xinput.git;a=tree