Bonjour, je souhaiterai créer un programme qui me simule un clique gauche grace à l'utilisation de XLib.

J'ai trouvé une portion de code qui semble convenir mais il y a plusieurs choses que je ne comprend pas .

Tout d'abord le code.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#include <unistd.h>
 
#include <X11/Xlib.h>
#include <X11/Xutil.h>
 
void mouseClick(int button)
{
	Display *display = XOpenDisplay(NULL);
 
	XEvent event;
 
	if(display == NULL)
	{
		fprintf(stderr, "Errore nell'apertura del Display !!!\n");
		exit(EXIT_FAILURE);
	}
 
	memset(&event, 0x00, sizeof(event));
 
	event.type = ButtonPress;
	event.xbutton.button = button;
	event.xbutton.same_screen = True;
 
	XQueryPointer(display, RootWindow(display, DefaultScreen(display)), &event.xbutton.root, &event.xbutton.window, &event.xbutton.x_root, &event.xbutton.y_root, &event.xbutton.x, &event.xbutton.y, &event.xbutton.state);
 
	event.xbutton.subwindow = event.xbutton.window;
 
	while(event.xbutton.subwindow)
	{
		event.xbutton.window = event.xbutton.subwindow;
 
		XQueryPointer(display, event.xbutton.window, &event.xbutton.root, &event.xbutton.subwindow, &event.xbutton.x_root, &event.xbutton.y_root, &event.xbutton.x, &event.xbutton.y, &event.xbutton.state);
	}
 
	if(XSendEvent(display, PointerWindow, True, 0xfff, &event) == 0) fprintf(stderr, "Errore nell'invio dell'evento !!!\n");
 
	XFlush(display);
 
	usleep(100000);
 
	event.type = ButtonRelease;
	event.xbutton.state = 0x100;
 
	if(XSendEvent(display, PointerWindow, True, 0xfff, &event) == 0) fprintf(stderr, "Errore nell'invio dell'evento !!!\n");
 
	XFlush(display);
 
	XCloseDisplay(display);
}
Et ensuite les questions

  • Pourquoi utilise t on memset ? Je pense que c'est pour s'assurer que la structure ne contienne pas de données non prévues mais j'aimerai confirmation .
  • Je ne comprend pas à quoi sert la boucle while :s


Merci d'avance et bonne journée