C++ XLib,XTestFakeKeyEvent延迟

C++ XLib,XTestFakeKeyEvent延迟,c++,xlib,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

我尝试使用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 );
}
因此,我再次选择窗口,并将XK_返回键发送到应用程序,但它不起作用,我认为这是因为Xlib的“滞后”,因为如果我在“for”循环的末尾放置一个wait(2),它可以正常工作,但我不想每次发送消息都等待2秒钟

我不知道该怎么解决这个问题


谢谢。

在调用xtestfakekekeyevent后使用XFlush(disp)或XSync(disp,false)?

我遇到了完全相同的问题。我找到了两个解决办法。首先,发送后的等待。我发现我可以等不到2秒钟。使用usleep,它只需要十分之一秒的等待。第二,如果我发送了两个(或更多)返回,除了第一个,所有的都能正常工作(没有“睡眠”现象)。@MPT,你甚至可以使用
nanosleep()
这两个(或两者一起)都不能帮我解决这个问题。
XFlush
在执行
XTestFakeKeyEvent
之后为我修复了它!我快发疯了,我完全没注意到。谢谢你!
XSetInputFocus(disp, list[selectWindow],RevertToPointerRoot,CurrentTime);
XTestFakeKeyEvent(disp,XKeysymToKeycode(disp, XK_Return),True, CurrentTime );
XTestFakeKeyEvent(disp,XKeysymToKeycode(disp, XK_Return),False, CurrentTime );