如何在Linux中侦听鼠标事件?

我想编写一个程序在后台运行,并在鼠标点击时logging指针的位置。 我试图在谷歌search它,但结果是NCurses和一些GUI库。 有什么办法可以编写一个程序,在后台监听鼠标事件吗? C和/或Python方式是首选。

Solutions Collecting From Web of "如何在Linux中侦听鼠标事件?"

这里是记录鼠标位置,点击和释放的例子:

#include <stdio.h> #include <X11/Xlib.h> char *key_name[] = { "first", "second (or middle)", "third", "fourth", // :D "fivth" // :| }; int main(int argc, char **argv) { Display *display; XEvent xevent; Window window; if( (display = XOpenDisplay(NULL)) == NULL ) return -1; window = DefaultRootWindow(display); XAllowEvents(display, AsyncBoth, CurrentTime); XGrabPointer(display, window, 1, PointerMotionMask | ButtonPressMask | ButtonReleaseMask , GrabModeAsync, GrabModeAsync, None, None, CurrentTime); while(1) { XNextEvent(display, &xevent); switch (xevent.type) { case MotionNotify: printf("Mouse move : [%d, %d]\n", xevent.xmotion.x_root, xevent.xmotion.y_root); break; case ButtonPress: printf("Button pressed : %s\n", key_name[xevent.xbutton.button - 1]); break; case ButtonRelease: printf("Button released : %s\n", key_name[xevent.xbutton.button - 1]); break; } } return 0; } 

编译使用:

 $ gcc -lX11 mouse.c -o mouse $ ./mouse Mouse move : [664, 395] Mouse move : [665, 393] Mouse move : [666, 393] Mouse move : [666, 392] Mouse move : [664, 392] Mouse move : [664, 393] Mouse move : [664, 395] Button pressed : first Button released : first Button pressed : third Button released : third ^C $ 

在这里也可以看到键盘和指针事件,并且在Xlib手册中有很多信息。

类似的问题: 我如何捕获mouseevents和keyevents在Linux上使用Python后台

上面的答案是使用Python绑定evdev。 此绑定可用于捕获鼠标事件。