Остановите события KeyPress после отпускания кнопки X11 - PullRequest
0 голосов
/ 25 сентября 2019

Я создал простое окно X11 и зарегистрировался для событий KeyPress.Когда я нажимаю клавишу «w», я получаю вывод на консоль.Если я продолжу удерживать клавишу «w», а затем отпущу ее, события KeyPress будут срабатывать в течение короткого времени после того, как я отпущу кнопку.Я предполагаю, что это потому, что события KeyPress ставятся в очередь и требуют времени для завершения.

Есть ли способ, чтобы события KeyPress останавливались, когда я отпускаю кнопку?

Яработаю в OpenGL и мне нужно переместить объект, нажав клавишу «w».Проблема заключается в том, что есть задержка между моментом, когда я отпускаю кнопку 'w', и когда объект перестает двигаться.

XMapWindow(display, window);
XSelectInput(display, window, ExposureMask | KeyPressMask);

XEvent e;
while(1) {
    XNextEvent(display, &e);


    if (e.type == KeyPress) {
        printf("KeyPress\n");

        char string[25];
        KeySym keysym;
        XLookupString(&e.xkey, string, 25, &keysym, NULL);
        if (keysym == XK_w)
            printf("Pressed w key\n");
    }
}
...