IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Manipulation de la souris en C/C++


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Manipulation de la souris en C/C++
    Bonsoir tout le monde,

    Dans le cadre d'un projet, j'ai besoin que mon programme manipule la souris (clics et déplacements).
    Pour les déplacements, c'est OK.
    Pour les clics, c'est presque OK mais malheureusement lorsque je veux provoquer un clic droit il ne se passe rien, alors que pour les autres actions tout se passe comme je le souhaite.

    Voici mon code, qui est en grande partie récupéré sur internet et remanié à ma sauce :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    #include <iostream>
    #include <unistd.h>
    #include <X11/Xlib.h>
     
    using namespace std;
     
    void click ( unsigned int button )
    {
       Display * display = XOpenDisplay(NULL);
       XEvent    event;
     
       // Set click event structure
       event.xbutton.same_screen = True;
       event.xbutton.button = button;
     
       // Get info about current pointer status
       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;
     
       // Walk down through window hierachy to find youngest child
       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
          );
       }
     
       // Send ButtonPress event to youngest child
       event.type = ButtonPress;
       if ( XSendEvent(display, PointerWindow, True, 0xfff, &event) == 0 )
       {
          cerr << "XSendEvent Failed !" << endl;
       }
       XFlush(display);
     
       // Send ButtonRelease event to youngest child
       event.type = ButtonRelease;
       if ( XSendEvent(display, PointerWindow, True, 0xfff, &event) == 0 )
       {
          cerr << "XSenderEvent Failed !" << endl;
       }
       XFlush(display);
     
    	// Close display
    	XCloseDisplay ( display );
    }
     
    int main ( int argc, char ** argv )
    {
       cout << "Clic gauche." << endl;
       click(Button1); // -> clic gauche
       getchar();
       cout << "Clic molette." << endl;
       click(Button2); // -> clic molette
       getchar();
       cout << "Clic droit." << endl;
       click(Button3); // -> RIEN !
       getchar();
       cout << "Molette haut." << endl;
       click(Button4); // -> molette haut
       getchar();
       cout << "Molette bas." << endl;
       click(Button5); // -> molette bas
     
       return 0;
    }
    Si quelqu'un pouvait m'éclairer sur l'abscence de réaction lors de l'appel à click(Button3), j'en serai ravis ...

    Merci à tous !

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Je me permet un petit up, car je n'ai toujours pas trouvé de solution ...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    coucou !

Discussions similaires

  1. Manipuler le curseur de la souris
    Par Poisson_Pilote dans le forum Bibliothèques tierces
    Réponses: 5
    Dernier message: 13/02/2009, 15h50
  2. Manipulation de la souris
    Par Eradqiel dans le forum SDL
    Réponses: 4
    Dernier message: 23/03/2008, 20h01
  3. comment manipuler le pointeur de la souris
    Par kris1 dans le forum Linux
    Réponses: 9
    Dernier message: 23/11/2007, 16h35
  4. manipuler souris et clavier
    Par lesafir dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/09/2007, 20h44
  5. Manipulation de la souris hors de la scene
    Par magnus2005 dans le forum Flash
    Réponses: 4
    Dernier message: 12/10/2005, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo