J'ai écrit un programme simple qui rapporte les événements de pression et de relâchement des touches pour une fenêtre particulière. Dans mon cas, il s'agit principalement du terminal puisque j'invoque le programme depuis le terminal. Je suis capable d'obtenir les événements d'appui et de relâchement des touches qui ont lieu dans la fenêtre du terminal (j'ai utilisé XSelectInput() avec KeyPressMask et KeyReleaseMask sur le terminal) mais cela ne fonctionne pas avec ButtonPress et ButtonRelease. Pas seulement ceux-ci, mais tous les événements liés à la souris ne sont pas signalés. Avez-vous une idée de la raison pour laquelle cela se produit ?
#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;
}