我需要从X窗口系统获取事件而不暂停程序的执行。目前,我使用XNextEvent(dpy, &xev)
来获取事件,但有没有办法获取事件并同时运行我自己的代码?
答案 0 :(得分:1)
while (XPending(dpy))
{
XNextEvent(dpy, &e);
switch (e.type)
{
case Expose:
break;
// Manage events...
default:
break;
}
}
XPending(Display *display):返回关联显示的队列中的事件数。
您可以通过其中一个函数重新设置XNextEvent(dpy, &e);,仅针对指定的窗口/掩码或两个同时获取事件:
这3个功能是非阻塞的。 例如,如果您只想为指定的Window进行fecth事件,则可以执行以下操作:
while (XcheckWindowEvent(dpy, window, your_event_mask, &e))
{
switch (e.type)
{
case Expose:
break;
// Manage events...
default:
break;
}
}
PS:抱歉我的英文不好