C에서 XTestFakeKeyEvent를 사용하여 Xvfb 디스플레이에 키 누르기를 보낼 수 없습니다.

C에서 XTestFakeKeyEvent를 사용하여 Xvfb 디스플레이에 키 누르기를 보낼 수 없습니다.

이 짧은 코드 조각을 사용하면 키보드(/dev/input/event1)에서 이벤트를 캡처하고 올바르게 인쇄할 수 있습니다. 그러나 XTestFakeKeyEvent를 사용하여 Xvfb 디스플레이로 보내는 것은 XTestFakeKeyEvent가 성공적으로 반환되더라도 아무런 효과가 없습니다.

        char devname[] = "/dev/input/event1";
        int device = open(devname, O_RDONLY);
        struct input_event ev;
        signal(SIGINT, INThandler);
        Display *dpy = XOpenDisplay(NULL);
        if (!dpy) {fprintf(stderr, "unable to connect to display");return 7;}
        while(1)
        {
                read(device,&ev, sizeof(ev));
                printf("Key: %i State: %i\n",ev.code,ev.value);
                if(ev.code!=4)
                        if(!(XTestFakeKeyEvent(dpy, ev.code, ev.value, 0)))
                                {fprintf(stderr, "unable to send keystroke\n");return 7;};
        }

문제는 Xvfb와 XTestFakeKeyEvent 간의 호환성이라고 생각하지만 XTestFakeKeyEvent를 사용하는 셸의 xdotool 프로그램을 사용하여 모니터에 키 입력을 보낼 수 있습니다. 제가 뭔가 잘못하고 있는 것일 수도 있습니다. 저는 X11 프로그래밍에 익숙하지 않습니다. 미리 감사드립니다.

관련 정보