発生しているすべてのマウスとキーボードのイベントをキャプチャしたい C で簡単なプログラムを書いています。「XGrabPointer」を使ってみたのですが、結果的に画面がロックされて他のアプリに行けなくなりました。「XSelectInput()」を試してみたところ、キーボード イベントは正常に受信されましたが、マウス クリック イベントは取得されません。
どうすればそれを行うことができますか?
コード スニペットは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
int main(int argc, char **argv)
{
Display *dpy;
Window root;
unsigned long event_mask;
event_mask = FocusChangeMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask;
if((dpy = XOpenDisplay(NULL)) == NULL) {
perror(argv[0]);
exit(1);
}
dpy = XOpenDisplay(NULL);
root = XDefaultRootWindow(dpy);
int state;
XWindowAttributes attributes;
XGetInputFocus(dpy,&root,&state);
printf("window id = %d\n");
XSelectInput(dpy,root,event_mask);
XEvent ev;
while(1) {
XNextEvent(dpy, &ev);
if(ev.type==ButtonRelease){
printf("button release\n");
}
if (ev.type== KeyPress) {
printf("keypress event\n");
}
}
return 0;
}