2012-04-21 6 views
3

교육적인 목적으로 나는 내 wiimote를 마우스처럼 사용할 수 있도록 cwiidXlib을 사용하여 python 스크립트를 작성했습니다.Python에서 Xlib을 사용하여 마우스 클릭을 시뮬레이트하는 방법

지금까지 커서를 disp.warp_pointer(dx,dy)으로 호출하고 모든 설정 시간 간격을 disp.sync() (으)로 호출하여 커서를 이동 시켰습니다. 나는 그것을하는 것이 가장 효율적인 방법이 아닐지 모르지만 적어도 지금은 간단하고 충분히 잘 작동합니다.

내가 더 어려워지는 문제는 마우스 클릭입니다. Xlib에서 마우스 클릭을 어떻게 시뮬레이트합니까? 나는 언론과 기사를 분리하여 드래그 앤 드롭 할 수 있기를 바라고 있습니다. 나는 this 게시물을 보았지만, 모든 솔루션은 다른 라이브러리를 사용하는 것 같습니다.

+0

링크 된 질문에 대한 [python-uinput suggestion] (http://stackoverflow.com/a/3572488/709852)이 효과가 있습니다. 이해할 수 있겠지만 실제로 커널 레벨에서 이벤트를 주입하기 때문에 XLib 또는 Tkinter 또는 GTK 또는 다른 툴킷을 사용하는지 여부는 중요하지 않습니다. –

답변

3

일반 Xlib (C 언어)에서는 XTestExtension 또는 XSendEvent()을 사용할 수 있습니다. 파이썬 바인딩에 대해서는 잘 모르겠습니다. xpyb을 사용하는 xcb 버전의 바인딩이있을 수 있습니다.

xautomation 패키지의 xte이라는 이진 파일도 있습니다 (데비안에서는 sudo apt-get install xautomation, 그 다음은 man xte). xte은 매우 사용하기 쉽고 소스 코드를 보면 XTestExtension을 사용하는 방법을 알 수 있습니다.

포인터 :

+2

추가 검색시 Python의'Xlib.ext.xtest'가'XTestExtensions'와 동일 할 수 있습니다. 어쨌든'xtest.fake_input'은 훌륭하게 작동합니다. – math4tots

+0

@ math4tots : 귀하의 의견을 주셔서 감사합니다, 나는 동일한 달성하려고했지만 XTest * 메서드를 호출하는 방법을 찾을 수 없습니다. 문안 인사, – Sebastian

2

만 파이썬 Xlib를 사용 :

,

fake_input의 세 번째 매개 변수는 시뮬레이트중인 마우스 버튼을 선택합니다. 왼쪽/가운데/오른쪽 버튼 1/2/3, 4/5 및 6/7은 수직 및 수평 휠 스크롤을 수행해야합니다.