2013-11-23 46 views
0

我对使用Xlib函数进行事件处理有一些理解问题。XEvent动画处理

我的问题是 - 如何在动画过程中按下某个键,而不会干扰动画。

到目前为止,我的设置是我在while循环中有一些动画,并且想要实现一个修改参数的KeyPress事件。

它看起来是这样的

而(1){

XNextEvent例行(DIS,&报告);
开关(report.type){
情况下按键:
如果(XLookupKeysym(& report.xkey,0)== XK_space){
//...modify参数..//
}}
//...Some动画,其中一个参数是用来修改动画... //
}

现在的问题是,我必须始终按键坐上我的动画屏幕,否则不会显示。我已经尝试了一些多重代码修改,使用KeyRelease等,但是我没有clou,真的。

Trivially说 - 我需要在没有XNextEvent进程的动画期间挂钩一个键,等待任何事件。但是在我的代码中没有XNextEvent语句,KeyPress事件检查的条件语句不起作用。

我想正式这将意味着:

而(1){

如果(report.type ==按键){
如果(XLookupKeysym(& report.xkey,0) == XK_space){
//...modify参数..//
}}
//...Some动画其中参数a被用于修改动画... //
}

回答

1

使用XPending()检查XEvents,然后用XNextEvent()获取它们。然后

XPending()返回事件队列中的事件的数量,以便修改您的循环:

while(1){ 
    if (XPending(dis) > 0) { 
     XNextEvent(dis, &report); 
     switch (report.type) { 
     case KeyPress: 
      if (XLookupKeysym(&report.xkey, 0) == XK_space){ 
       //...modify parameter a..// 
      } 
     } 
    } 
    //...Some animation where parameter a is used to modify animation...// 
    } 
+0

正是我脑子里想的,每个按键一个事件。谢谢! –