Я написал простую программу, которая будет сообщать о нажатии клавиш и отпускать события для определенного окна. В моем случае это в основном терминал, так как я вызываю программу из терминала. Я могу получить события нажатия и отпускания клавиш, происходящие в окне терминала (я использовал XSelectInput () с KeyPressMask и KeyReleaseMask на терминале), но это не работает с ButtonPress и ButtonRelease. Не только они, но и любые события, связанные с мышью, не сообщаются. Есть идеи, почему это происходит?
#include
#include
#include
#include
#include
#include
int main() {
Display *display = XOpenDisplay(NULL);
KeySym k;
int revert_to;
Window window;
XEvent event;
XGetInputFocus(display, &window, &revert_to);
XSelectInput(display, window, KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask);
while(1)
{
XNextEvent(display,&event);
switch (event.type) {
case KeyPress : printf("Key Pressed\n"); break;
case KeyRelease : printf("Key Released\n"); break;
case ButtonPress : printf("Button Pressed\n"); break;
case ButtonRelease : printf("Button Released\n"); break;
case EnterNotify : printf("Enter\n"); break;
}
}
XCloseDisplay(display);
return 0;
}