#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
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
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