Задержки XLib, XTestFakeKeyEvent - PullRequest
       2

Задержки XLib, XTestFakeKeyEvent

6 голосов
/ 23 февраля 2012

Я пытаюсь отправить ключ в приложение с помощью 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 Ответ

1 голос
/ 29 марта 2012

XFlush (disp) или XSync (disp, false) после вызова XTestFakeKeyEvent?

...