XLib, XTestFakeKeyEvent latences

XLib, XTestFakeKeyEvent latences

本文关键字:latences XTestFakeKeyEvent XLib      更新时间:2023-10-16

我尝试用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 );
}

其中Select list[selectWindow]是我发送数据的窗口,并篡改一个char[2](将函数的char[I]从hello[I]转换为char*)。这段代码将hello warable的内容写入选定的窗口,但,我尝试发送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的"滞后",因为如果我在"for"循环的末尾放一个wait(2),它可以正常工作,但我不想每次发送消息都等待2秒钟。

我不知道该怎么解决。

谢谢。

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