小编use*_*247的帖子

XSelectInput 不适用于 ButtonPressEvents,怎么办?

我正在用 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"); …
Run Code Online (Sandbox Code Playgroud)

xlib

5
推荐指数
1
解决办法
4126
查看次数

标签 统计

xlib ×1