Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/04/2011, à 11:37

N3m3siS

[C] Xlib et click sur bandeau de fenêtre

Bonjour à tous,

dans le cadre de mon stage, je suis chargé contrôler les mouvements du pointeur ainsi que les clics/dé-clics gauche. Ci-dessous mon code :

void myClick(int click, bool *c)
{
  if(click>0)
  {
    Display *dpy=XOpenDisplay (NULL);
    
    XEvent event;
    memset (&event, 0, sizeof(event));
    event.xbutton.button=Button1;
    event.xbutton.same_screen=True;
    event.xbutton.subwindow=DefaultRootWindow(dpy);
    
    while (event.xbutton.subwindow)
    {
      event.xbutton.window = event.xbutton.subwindow;
      XQueryPointer (dpy, 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(click==1)
    {
      event.type=ButtonPress;
      XSendEvent(dpy, PointerWindow, True, ButtonPressMask, &event);
      usleep(1);
      *c=1;
    }
    
    else if(click==2)
    {
      event.type=ButtonRelease;
      XSendEvent(dpy, PointerWindow, True, ButtonReleaseMask, &event);
      usleep(1);
      *c=0;
    }

    XFlush(dpy);
    XCloseDisplay(dpy);
  }
}

Sur la machine du travail, pas de soucis particulier.
En revanche, avec mon PC personnel (même OS : Maverick, même tout...), les mouvements du pointeurs sont ok ainsi que les clics/dé-clics. Le clic est bien maintenu tant que je n'ai pas dé-cliqué (style, sélection de plusieurs fichiers dans Nautilus). Mais je n'arrive pas à déplacer les fenêtres en maintenant le clics enfoncé (alors qu'au boulot je n'ai pas rencontré le problème).

Pourriez-vous éclairer ma lanterne svp ? Merci d'avance cool

Dernière modification par N3m3siS (Le 16/04/2011, à 11:55)


Neuro : Ubuntu 10.10 4x64bits@2.53Ghz / RAM 4Go
Kenpachi : Kubuntu 10.10 64bits@2Ghz / RAM 2Go
Ryuuku : Debian 5 Lenny 32bits@1Ghz / RAM 384Mo
[ Mon wiki : http://doc.hisoka.fr || Mon blog : http://blog.hisoka.fr ]

Hors ligne

#2 Le 16/04/2011, à 18:04

Bigcake

Re : [C] Xlib et click sur bandeau de fenêtre

Bonjour,

1) Rien à voir avec ton problème, mais il y a un potentiel segfault dans ton code :
si XOpenDisplay() renvoi NULL tu aura un segfault 6 lignes plus bas "event.xbutton.subwindow=DefaultRootWindow(dpy);"
Il faut que tu vérifie la valeur de dpy après XOpenDisplay().
2) Sinon pour ton problème a tu vérifié la valeur de "click" quand tu arrive dans cette fonction ? Le problème se situe peut-être ailleurs.


"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5

Hors ligne

#3 Le 23/04/2011, à 10:11

N3m3siS

Re : [C] Xlib et click sur bandeau de fenêtre

Bonjour smile
Merci bien pour tes indications, je testerai ca dès que je peux.
Je te tiens au courant !


Neuro : Ubuntu 10.10 4x64bits@2.53Ghz / RAM 4Go
Kenpachi : Kubuntu 10.10 64bits@2Ghz / RAM 2Go
Ryuuku : Debian 5 Lenny 32bits@1Ghz / RAM 384Mo
[ Mon wiki : http://doc.hisoka.fr || Mon blog : http://blog.hisoka.fr ]

Hors ligne