J'ai écrit un programme simple qui rapportera les événements clés de presse et de libération pour une fenêtre particulière. Dans mon cas, c'est surtout le terminal puisque j'appelle le programme depuis le terminal. Je suis en mesure d'obtenir la touche presse et de libérer des événements ayant lieu dans la fenêtre du terminal (j'ai utilisé XSelectInput() avec KeyPressMask et KeyReleaseMask sur le terminal) mais la même chose ne fonctionne pas avec ButtonPress et ButtonRelease. Non seulement ceux-ci, mais tous les événements liés à la souris ne sont pas signalés. Une idée de pourquoi cela se passe?Événements de souris Xlib et ButtonPressMask
#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;
}
J'ai également oublié de mentionner que si je crée ma propre fenêtre avec xlib, les événements de la souris sont signalés. Cela signifie-t-il que XSelectInput ne peut pas être utilisé avec des fenêtres non mappées par moi? –
Puis-je demander le but ultime de ce que vous essayez de construire? – kazanaki