XLib,XTestFakeKeyEvent迟到了

时间:2012-02-23 10:01:11

标签: c++ xlib

我尝试使用XLib和XTestFakeKeyEvent将密钥发送到应用程序,并且工作正常,使用以下代码:

XSetInputFocus(disp, list[selectWindow],RevertToPointerRoot,CurrentTime);
for(i=0;i<hello.size();i++){
    tamper[0] = hello[i];
    KeySym key = XStringToKeysym(tamper);
    XTestFakeKeyEvent(disp,XKeysymToKeycode(disp, key),True, CurrentTime );
    XTestFakeKeyEvent(disp,XKeysymToKeycode(disp, key),False, CurrentTime );
}

其中选择列表[selectWindow]是我发送数据的窗口,并篡改char [2](将char从hello [i]转换为char *用于该函数。 这段代码将hello wariable的内容写入所选窗口,但是,我试图发送Return键,

XSetInputFocus(disp, list[selectWindow],RevertToPointerRoot,CurrentTime);
XTestFakeKeyEvent(disp,XKeysymToKeycode(disp, XK_Return),True, CurrentTime );
XTestFakeKeyEvent(disp,XKeysymToKeycode(disp, XK_Return),False, CurrentTime );

所以我再次选择窗口,并将XK_Return键发送到应用程序,但它不起作用,我认为这是因为Xlib的“滞后”,因为如果我在等待(2) 'for'循环结束,它工作正常,但我不想在每次发送邮件的2秒内等待。

我不知道如何解决这个问题。

谢谢。

1 个答案:

答案 0 :(得分:1)

调用XTestFakeKeyEvent后,

XFlush(disp)或XSync(disp,false)?