QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1131|回复: 1

如何捕捉rootwindow的鼠标和键盘事件? (Xlib)

[复制链接]
发表于 2005-3-10 22:07:52 | 显示全部楼层 |阅读模式
我用了xlib下的XSelectInput(display, RootWindow(display,screen_num), KeyPressMask | PointerMotionMask );但没有得到键盘和鼠标事件。以下是我一段代码,请教各位能人能不能帮我看出问题出在什么地方,谢谢!

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/Xatom.h>
#include <stdio.h>

Display *display;
int screen_num;

void main(int argc, char **argv)
{
        Window rootWindow;
        XEvent report;
        char *display_name = NULL;
               
        /* Connect to X server */
        if ( (display=XOpenDisplay(display_name)) == NULL )
        {
                printf(" cannot connect to X server \n ");
                exit (-1);
        }
       
        printf(" connect to X server \n");
       
        screen_num=DefaultScreen(display);
       
        while (1) {
                rootWindow=RootWindow(display, screen_num);
                XSelectInput(display,rootWindow,KeyPressMask | PointerMotionMask | FocusChangeMask);
                XNextEvent(display, &report);

                 switch (report.type){
                case MotionNotify:
                        printf("mouse move\n");
                        break;
                 case ButtonPress:
                        printf("Button press\n");
                        break;
                 case FocusOut:
                        printf("Focus out\n");
                        break;
                 case FocusIn:
                        printf("Focus in\n");
                        break;
                }
               
}

请问捕捉rootwindow的鼠标和键盘事件是不是不用XSelectInput()函数呢,如何实现?
发表于 2005-3-11 12:44:29 | 显示全部楼层
很久以前学过一点,只记得
XSelectInput是告诉服务器发什么事件,如果不告诉的话,服务器就不发
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 14:00 , Processed in 0.043728 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表