我对Xlib函数的事件处理有一些理解问题。
我的问题是,如何在不干扰动画的情况下,在动画中按键。
到目前为止,我的设置是,我在while循环中有一些动画,并希望实现修改参数的KeyPress事件。
它看起来有点像这个
而(1){
XNextEvent(dis,&report)
开关(report.type){
case按键:
if(XLookupKeysym(&report.xkey,0)==XK_space){
//。。。修改参数a../
}}
//。。。参数a用于修改动画的某些动画//
}
现在,问题是我必须一直按键才能在屏幕上显示动画,否则什么都不会出现。我已经尝试了一些多次代码修改,使用KeyRelease等,但我没有clou,真的。
Trivially说-我需要在没有XNextEvent过程的动画过程中挂起一个关键帧,等待任何事件。但是如果我的代码中没有XNextEvent语句,KeyPress事件检查的条件语句就无法工作。
我想正式的意思是:
而(1){
if(report.type==KeyPress){
if(XLookupKeysym(&report.xkey,0)==XK_space){
//。。。修改参数a../
}}
//。。。参数a用于修改动画的某些动画//
}
在使用XNextEvent()
获取XEvents之前,请使用XPending()
检查XEvents。
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...//
}