내가 Xlib를하고 XTestFakeKeyEvent를 사용하여 응용 프로그램에 키를 보내려고 latences, 그리고 다음 코드를 사용하여, 잘 작동 : 선택 목록 [selectWindow] 내가 데이터를 전송 창입니다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);
}
, 그리고 char [2]를 변경한다. (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);
그래서 다시 창을 선택하고 X K_Return 키를 응용 프로그램에 반환하지만 작동하지 않습니다. Xlib과 '지연'때문에 'for'루프 끝에 wait (2)를 넣으면 잘 동작하지만 나는 메시지를 보낼 때마다 2 초 동안 기다리고 싶지 않습니다.
어떻게 해결할 수 있는지 알 수 없습니다.
감사합니다.
이 똑같은 문제가 있습니다. 두 가지 해결 방법을 찾았습니다. 첫째, 전송 후 대기. 나는 2 초보다 훨씬 오래 기다릴 수 있음을 발견했다. usleep을 사용하면 10 분의 1 초만으로 작동합니다. 둘째, 두 개 이상의 리턴을 보내면 첫 번째를 제외한 모든 리턴이 올바르게 작동합니다 ("수면"없음). – MPT
@MPT,'nanosleep() '도 사용할 수 있습니다. –