2011-12-23 2 views
2

나는 스크린 키보드를 파이썬으로 쓸데없이 혼란 스럽다. ClutterStage의 XWindow 객체를 가져 왔지만 윈도우가 포커스를 훔치지 못하게하는 속성을 찾을 수 없습니다. 기본적으로 마우스 이벤트 (클릭, 모션 등)를 받아 들일 필요가 있지만 입력하려는 창에서 키보드 포커스를 훔치지는 않습니다. :)어떤 XWindow 속성이 마우스 이벤트를 수신하는 동안 창에 포커스가 표시되지 않도록 할 수 있습니까?

답변

1

X11에서 입력 배달이 작동하는 방식으로 이것은 발생하지 않습니다. 입력 이벤트를 수신하려면 X11 창에 포커스가 있어야합니다. 즉, 이벤트는 포커스가있는 창에만 전달됩니다.

예를 들어, GTK +의 입력 방법 및 액세스 가능성 지원은 특정 API (각각 IM 및 ATK)를 통해 다른 프로세스와 데이터를 송수신하는 툴킷을 사용합니다. GNOME의 모든 가상 키보드는 입력 이벤트를 처리하는 두 가지 방법을 사용합니다.

순수 X11에서 XTest 확장 API를 사용하여 가상 키보드에서 이벤트를 호출 한 응용 프로그램으로 이벤트를 보낼 수 있습니다.

1

WM_HINTS 속성의 입력 힌트를 false로 설정하고 WM_TAKE_FOCUS 속성을 추가하지 않으려합니다. 이렇게하면 창 관리자가 절대로 키보드 포커스를 창으로 전송하지 않지만 다른 이벤트는 차단하지 않습니다. ICCCM의 4.1.7 절 참조. (우분투 10에서 테스트)

http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.7

+0

가 작동하지 않는 것을 제외하고는, 윈도우는 여전히 포커스를 가져옵니다. – cap