2011-10-05 7 views
3

여러 디지털 펜 (IRIS 펜)에 응답하는 응용 프로그램을 개발하려고합니다. 그래서 펜에 종이가 쓰여지는 경우, 출력을 단일 화면으로 릴레이합니다. 따라서 나 자신을 위해 다중 입력 화이트 보드를 만듭니다.포커스를 잃은 후에도 X11에서 이벤트 캡처

우분투에서 이러한 펜은 마우스로 인식되므로 마우스 이벤트를 처리하는 것과 비슷한 방식으로 처리 할 수 ​​있습니다.

그래서 이제는 XLib을 사용하여 C/C++에서 이러한 이벤트를 처리하고 이러한 이벤트를 JNI 콜백을 사용하여 Java Swing 응용 프로그램에 전달합니다. 이 작업을 수행 할 수 있지만 X11 창이 포커스를 잃으면 이벤트가 스윙 프레임으로 전송되지 않습니다. 또한 X11에서 루트 창을 사용하려고했지만 작동하지 않는 것 같습니다.

도움이 될 것입니다. 미리 감사드립니다.

+0

이렇게하는 쉬운 방법은 없습니다. 잘 알려진'xeyes' 프로그램은 정기적 인 간격으로 마우스를 폴링합니다. 이것은 아마도 가장 쉬운 대안 일 것입니다. –

답변

2

어떻게 자바 하나의 앞에있는 C/X11 창을 최대화하고 투명하게 어떻습니까? C/X11에 초점을 맞추면서 Java 창을 볼 수 있어야합니다.

우분투를 사용하고 있으므로 Compiz의 "불투명도, 채도 및 채도"플러그인을 사용하여이를 수행 할 수 있습니다. compiz-plugins-main 패키지에 있으며, Compiz 설정 관리자 (compizconfig-settings-manager 패키지에서)를 사용하여 활성화 할 수 있습니다. 플러그인을 활성화하면 Alt + 휠이 기본적으로 바운드되어 포커스가 설정된 창의 투명도가 변경됩니다.

+0

답을 고맙습니다. 이전에'transset'으로 X11 윈도우의 투명도를 설정하려고했으나 나에게 도움이되지 않았습니다. 하지만 지금은 CCSM을 사용해 보았는데 정말 훌륭하게 작동합니다. 이제는 초점 손실 문제에 대해 걱정할 필요가 없습니다. –

1

마우스를 직접 읽으십시오. 정확한 위치는 기억이 나지 않지만 '/ dev/input/mouseX'와 같은 위치에서 찾을 수 있습니다. 여기서 X는 0에서 n-1까지의 기기의 번호입니다.

패킷을 읽으면 마우스가 움직일 때까지 응용 프로그램이 차단되고 읽은 함수는 델타 (아마도 화면 좌표, 경우에 따라 더 유용합니다) 및 마우스 버튼 상태를 설명하는 원시 마우스 패킷을 반환합니다. 여기에 설명 된대로

원시 패킷

디코딩 할 수 있습니다 http://www.computer-engineering.org/ps2mouse/

+0

도움 주셔서 감사합니다. 그것은 그것을 할 수있는 가능한 방법 중 하나 일 수 있습니다. –

+1

'/ dev/input'을 사용하면 root로 응용 프로그램을 실행해야합니다. 왜냐하면 다른 사용자도 현재 사용자를 도청 할 수 있기 때문입니다. –

1

모달 대화 상자를 만들고 XmDIALOG_SYSTEM_MODAL (속성의 실제 이름은 툴킷에 따라 다릅니다 : Motif, Gtk, Qt, ...). 이와 같은 대화 상자는 전체 디스플레이를 차단하고 포커스를 잃지 않습니다.

물론이 대화 상자가 화면에 표시되는 동안 다른 작업을 수행 할 수 없다는 단점이 있습니다.

This entry in the X11 FAQ 도움이 될 수 있습니다.

관련 문제