[英]How do I Monitor Mouse Movement Events in All Windows (Not Just One) on X11
[英]X11 Mouse Movement Event
在XLib中创建窗口时
SetWindowAttributes.event_mask
成员的掩码是什么? XCreateWindow()
的第11个参数 XNextEvent(lDisplay, &xEvent);
我一直在寻找类似的职位。 如果已经有一个,请指出正确的方向。
更新资料
对于那些希望对1-3部分做出简单回答的人:
1。
xAttributes.event_mask = ExposureMask | KeyPressMask | ButtonPress |
StructureNotifyMask | ButtonReleaseMask |
KeyReleaseMask | EnterWindowMask | LeaveWindowMask |
PointerMotionMask | Button1MotionMask | VisibilityChangeMask |
ColormapChangeMask;
2。
unsigned long valuemask = CWEventMask | CWBackPixel | CWBorderPixel | CWCursor;
switch (xEvent.type) { case MapNotify: break; case Expose: // If this is not the last expose event break if (xEvent.xexpose.count != 0) break; else break; case ConfigureNotify: break; case VisibilityNotify: break; case DestroyNotify: break; case ButtonPress: case ButtonRelease: case EnterNotify: case MotionNotify: case LeaveNotify: if(_mouseHandler) _mouseHandler->HandleInput(lDisplay, &xEvent); break; case KeyPress: case KeyRelease: if(_keyboardHandler) _keyboardHandler->HandleInput(lDisplay, &xEvent); break; default: if(_keyboardHandler) _keyboardHandler->HandleInput(lDisplay, &xEvent); break; }
XLib有很多文献资料。 例如XLib编程手册:事件掩码
我认为前三个文件有据可查。
要确定鼠标是否在窗口上方,请侦听Enter和Leave事件。 xev
实用程序是了解X窗口系统中存在什么事件以及何时发送事件的好方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.