Bonjour !
Actuellement je fais mumuse avec la libnds et j'ai commencé a codé un genre de touchpad pour mon PC que j'utiliserais sur ma DS (ça n'a aucun interret en soi je vous l'accorde mais le principe m'amuse).

Le problème est le suivant : quand je suis sur une fenêtre et que la DS demande a faire un clic (droit ou gauche) ça marche (quoi que j'ai du mal a virer les menus contextuels du clic droit) par contre dès que je passe sur le bureau et que je fais un clic droit, impossible de le fermer ou de selectionner un élément du menu contextuel (par contre le clic droit sur un fichier par exemple marche très bien). Pareil quand je clique sur ma barre de menus ou sur la liste de fenêtes , là, aucun des deux clics ne marche ce qui est plutot gênant :-° je pense que le problème vient de la selection de la focus window mais je ne sais absolument pas comment le résoudre ^^

Voici la fonction que j'utilise pour simuler les clics (je l'ai piquée sur internet j'ai honte ) :

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
54
55
56
57
 
void mouseClick(int button)
{
    Display *display = XOpenDisplay(NULL);
 
    XEvent event;
 
    if(display == NULL)
    {
        cout << " 1 Erreur a l'ouverture du display \n" << endl;
        exit(EXIT_FAILURE);
    }
 
    memset(&event, 0x00, sizeof(event));
 
    event.type = ButtonPress;
    if(button == 1)
    {
        event.xbutton.button = Button1;
    }
    else if(button == 2)
    {
        event.xbutton.button = Button2;
    }
    else if(button == 3)
    {
        event.xbutton.button = Button3;
    }
 
    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)
    cout << " 2 Erreur a l'ouverture du display \n" << endl;
 
    XFlush(display);
 
    usleep(1000);
    event.type = ButtonRelease;
    event.xbutton.state = 0x100;
    if(XSendEvent(display, PointerWindow, True, 0xfff, &event) == 0)
    cout << " 3 Erreur a l'ouverture du display \n" << endl;
 
    XFlush(display);
 
    XCloseDisplay(display);
}
Ah au fait, niveau OS je suis sous Leeenux (dérivé d'Ubuntu pour EEEPC) et je compile correctement en linkant les libs qui vont bien.

Quelqu'un aurait une solution pour moi ? Merci d'avance

Su_e_do_is