XSelectInput не реагирует на нажатие клавиш - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь создать простой регистратор глобальных ключей в Linux, используя X11 / Xlib.h

Я видел Глобальную горячую клавишу с X11 / Xlib , но это, кажется, специфичнона одну горячую клавишу.Когда я пытаюсь вызвать XGrabKey, я получил

X Error of failed request:  BadAccess (attempt to access private resource denied)
      Major opcode of failed request:  33 (X_GrabKey)

Вот мой текущий код, который не реагирует на нажатие (или отпускание) клавиши.

#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>

int main() {
    Display *display = XOpenDisplay(NULL);
    Window root = DefaultRootWindow(display);
    XEvent ev;

    XSelectInput(display, root, KeyPressMask | KeyReleaseMask );
    while(1) {
        printf("Waiting\n");
        XNextEvent(display, &ev);
        switch(ev.type) {
            case KeyPress:
                printf("Pressed\n");
                break;
            default:
                break;
        }
    }

    XCloseDisplay(display);
    return 0;
}
...