/* input.c */
/* fenetre InputOnly */
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/cursorfont.h>
GC gc;
Display *display;
int screen;
Window win, subwin, root;
unsigned long white_pixel, black_pixel;
XSetWindowAttributes xwsa;
Cursor curs0;
main() {
if ((display = XOpenDisplay ("")) == NULL) {
fprintf (stderr, "Can't open Display\n");
exit (1);
}
gc = DefaultGC (display, screen);
screen = DefaultScreen (display);
root = RootWindow (display, screen);
white_pixel = WhitePixel (display, screen);
black_pixel = BlackPixel (display, screen);
win = XCreateSimpleWindow (display, root,
0, 0, 300, 300, 5, black_pixel, white_pixel);
XSelectInput (display, win, ExposureMask | ButtonPressMask);
XStoreName (display, win, "Input");
XMapWindow (display, win);
xwsa.event_mask=ButtonPressMask;
subwin = XCreateWindow (display, win, 10, 10, 10, 10, 0, CopyFromParent,
InputOnly, CopyFromParent, CWEventMask, &xwsa);
/* fenetre non dessinee mais qui definit et delimite des zones sensibles */
/* aux evenements */
curs0 = XCreateFontCursor(display, XC_crosshair);
XDefineCursor(display, subwin, curs0);
XMapWindow (display, subwin);
for (;;) {
XEvent ev;
XNextEvent (display, &ev);
switch (ev.type) {
case Expose :
break;
case ButtonPress :
if (ev.xbutton.window == subwin)
write(1, "la sous fenetre sent le clic", 28);
break;
default :
break;
}
}
}
Cliquez au milieu de la fenêtre puis dans le coin gauche : regardez les messages affichés dans stdout.
La fenêtre InputOnly n'a pas d'attributs d'affichage.
Elle sert de zone sensible aux entrées de la souris ou du clavier.
Elle posséde donc un masque d'événement modifiable
ainsi que d'un curseur.
| programme suivant | compléments | index général | fonctions de la XLib | événements | types dans XLib |