X11鼠标移动事件
当创建在XLIBX11鼠标移动事件
- 一个窗口什么是我提供给
SetWindowAttributes.event_mask
成员的面具? - 我有什么要传递给的
XCreateWindow()
- 11日paramater什么事件,我在主消息循环寻找(这里我用
XNextEvent(lDisplay, &xEvent);
? - 因为X的表现比微软的Win32 API的不同,如何我确定鼠标是否在我的窗口或我的“应用程序”窗口,而不是在桌面上?
我已经找了一个类似的帖子,如果已经有一个,请指出我在正确的方向
更新
对于那些谁想要简单的答案,部分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 Programming Manual: Event Masks
只是让你知道 - 现在这个链接被破坏了。 – NmdMystery 2016-02-18 23:42:18
不再,它不是。 – striking 2016-03-05 20:57:35
我认为前三个是有据可查的。
要确定鼠标是否在窗口上,请听取Enter和Leave事件。 xev
实用程序是了解X窗口系统中存在的事件以及发送时间的好方法。
我完全忘记了'xev',确实非常有用。 – erb 2014-12-31 15:31:42
XLib有很好的文档记录。你有没有尝试搜索互联网?例如[XLib编程手册:事件掩膜](http://tronche.com/gui/x/xlib/events/mask.html) – 2012-02-20 07:14:41