Correction de gravity2.c
/* la gravite change selon les lettres tapees */
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
GC gc;
Display *display;
int screen;
Window win, root;
unsigned long white_pixel, black_pixel;
XSetWindowAttributes attrib;
unsigned long mask_attrib;
int nbre;
char chaine[20];
KeySym touche;
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 | KeyPressMask );
XStoreName (display, win, "gravity2");
XMapWindow (display, win);
for (;;) {
XEvent ev;
XNextEvent (display, &ev);
switch (ev.type) {
case ButtonPress :
XDrawString (display, win, gc, ev.xbutton.x, ev.xbutton.y, "ici", 3);
break;
case KeyPress :
nbre = XLookupString(&ev, chaine, 20, &touche, 0);
chaine[nbre] = 0;
if ((nbre == 1) && (chaine[0] == 'q'))
exit(0);
if (nbre == 1) {
if (chaine[0] == 'n')
attrib.bit_gravity = NorthGravity;
if (chaine[0] == 'e')
attrib.bit_gravity = EastGravity;
if (chaine[0] == 's')
attrib.bit_gravity = SouthGravity;
if (chaine[0] == 'w')
attrib.bit_gravity = WestGravity;
mask_attrib = CWBitGravity;
XChangeWindowAttributes(display, win, mask_attrib, &attrib);
}
default :
break;
}
}
}