Xlib을 사용하여 마우스 커서로 x와 y 좌표를 얻는 방법을 알고 싶습니다. 나는 현재 포인터 위치Xlib로 마우스 커서 좌표 맞추기
How can I get the current mouse (pointer) position co-ordinates in X를 얻을이 게시물,
를 발견했습니다하지만 난 그것을 마우스를 클릭 할 때 x 및 y 좌표를 얻을 수 있도록 수정하는 방법을 모르겠어요. 이 코드를 작성하려고 시도했지만 아무 것도 수행하지 않습니다.
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
int main(){
int x=-1,y=-1;
XEvent event;
int button;
Display *display = XOpenDisplay(NULL);
if (display == NULL) {
fprintf(stderr, "Cannot connect to X server!\n");
exit (EXIT_FAILURE);
}
Window root= XDefaultRootWindow(display);
XSelectInput(display, root, ButtonReleaseMask) ;
while(1){
XNextEvent(display,&event);
switch(event.type){
case ButtonRelease:
switch(event.xbutton.button){
case Button1:
x=event.xbutton.x;
y=event.xbutton.y;
button=Button1;
break;
case Button3:
x=event.xbutton.x;
y=event.xbutton.y;
button=Button3;
break;
default:
break;
}
break;
default:
break;
}
if(x>=0 && y>=0)break;
}
if(button==Button1)printf("leftclick at %d %d \n",x,y);
else printf("rightclick at %d %d \n",x,y);
XCloseDisplay(display);
return 0;
}
이벤트가 다른 창으로 전송되어 작동하지 않을 수 있습니다.
X Error of failed request: BadAccess (attempt to access private resource denied)
Major opcode of failed request: 2 (X_ChangeWindowAttributes)
Serial number of failed request: 7
Current serial number in output stream: 7
C에서이 작업을 수행하는 간단한 방법이 있다면, 나는 그것을 듣고 행복 : 또 다른 문제는 내가 XSelectInput 기능에 ButtonPressMask를 추가 할 때 다음과 같은 오류를 얻을 수 있다는 것입니다.
고마워, 코드가 잘 작동하지만 ButtonRelease로 변경해야한다. 그렇지 않으면 위에서 설명한 것과 같은 오류가 발생한다. 왜 그랬는지 모를거야? – rex123
두 가지 사건 모두 저에게 효과적이었습니다. 어떤 창 관리자를 사용하고 있습니까? KDE 창 관리자를 사용하고 있습니다. – parkydr
화합을 사용하고 있습니다. – rex123