Je veux exécuter du code lorsque l'utilisateur utilisera la molette de la souris. J'ai écrit l'exemple d'application simple et cela ne fonctionne pas. Pourquoi mon application ne réagit pas sur la molette de la souris?Comment réagir à la roulette de la souris dans Xlib?
#include <X11/Xlib.h>
#include <X11/X.h>
#include <X11/Xutil.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
Display *d;
Window w;
XEvent e;
char *msg = "Hello, World!";
int s;
d = XOpenDisplay(NULL);
if (d == NULL) {
fprintf(stderr, "Cannot open display\n");
exit(1);
}
s = DefaultScreen(d);
w = XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 100, 100, 1,
BlackPixel(d, s), WhitePixel(d, s));
XSelectInput(d, w, ExposureMask | ButtonPressMask);
XMapWindow(d, w);
while (1) {
XNextEvent(d, &e);
if (e.type == Expose) {
XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10);
XDrawString(d, w, DefaultGC(d, s), 10, 50, msg, strlen(msg));
}
if (e.type == ButtonPress){
switch (e.xbutton.button){
case Button4:
printf("Scrolled up");
break;
case Button5:
printf("Scrolled down");
break;
default:
printf("cos");
}
}
}
XCloseDisplay(d);
return 0;
}
Merci :)
// Ceci est un texte aléatoire pour contourner stacksoverflow "s'il vous plaît ajouter quelques détails".
-t-il réagir à toute pression sur le bouton de la souris? Comment savez-vous que Button4 et Button5 correspondent à la molette de défilement? – yano