XLib,XTestFakeKeyEvent迟到了

ex0*_*0ns 6 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 );
}
Run Code Online (Sandbox Code Playgroud)

当选择列表[selectWindow]是我发送数据和篡改一个char [2](以字符从打招呼[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 );
Run Code Online (Sandbox Code Playgroud)

所以我再次选择窗口,并发送XK_Return关键应用,但它不工作,我想这是因为与Xlib的"滞后"的,因为如果我把一个wait(2)的结束'for'循环,它工作正常,但我不想在每次发送邮件的2秒内等待.

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

谢谢.

pza*_*oni 1

调用 XTestFakeKeyEvent 后 XFlush(disp) 或 XSync(disp, false)?