Récupérer coordonnées souris à l'écran

Fermé
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 12 août 2006 à 16:16
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 30 déc. 2007 à 20:16
Hi everrrrrrrrrrry body,

Je cherche une commande (de préférence en shell bash), capable de me renvoyer les coordonnées de la souris...

Je m'explique.

Je voudrais donc récupérer les coordonnées de la souris sur mon bureau (en environnement X), afin de les exploiter pour ouvrir une console (Eterm) en lui appliquent les coordonnées adéquates (position x,y et dimension largeur/hauteur) ainsi que divers paramètres.

Donc j'ai essayé avec "xev", mais ce n'est pas l'idéal. En fait j'ai rien pu en tirer de bon ;-((

Donc si vous avez un semblant de piste ou une solution tout court, je vous en serai gré.

Merci d'avance et bon week-end.
A voir également:

7 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
13 août 2006 à 11:42
Bon, j'ai un peu avancé et je vais essayer de vous faire part de mon état d'avancement...

Donc j'en reviens pour commencer à "xev", qui s'il s'avère fort utile pour ce qui concerne le clavier (reconnaissance des touches), l'est un peu moins (à moins que ça ne soit moi qui ne sache pas bien m'en dépatouiller) en ce qui concerne la souris.

Lancer tel quel sans aucun paramètre, il affiche une fenêtre (50x50) qui lors de son survol renvoie effectivement les coordonnées de la souris en temps réel, les clics, etc... mais qu'à l'intérieur de ladite fenêtre !!!
Vous me direz, pourquoi ne pas l'agrandir, ou encore mieux lui passer la taille et la position en paramètre ?
Oui mais bon, j'y avais songé, mais il reste une bordure non négligeable et puis la sortie est tellement verbeuse qu'on se perd facilement dans les résultats !!!

De plus j'ai essayé de récupérer la sortie dans un fichier texte (xev > fich.txt), mais comme dit ci-dessus, beaucoup trop verbeux :-(
J'ai aussi essayé avec la commande "tee" au travers d'un pipe :
xev | tee fich.txt
pour récupérer à la fois la sortie sur l'écran et dans un fichier. Malheureusement ça ne marche pas!
Non seulement je n'ai aucune sortie sur l'écran, mais de plus le fichier reste désespérément vide !!! ;-(((

Si quelqu'un sait pourquoi... merci de m'en informer.


Comme je n'arrivais à rien avec "xev", je me suis tourné vers la commande "import" de l'excellentissime suite d'outils d'"Imagemagick".

Je pensais bien tenir la solution, mais il y a un hic !

D'abord je vous expose mes manips et mes "moulinettes".

Je lance une console "Eterm" (tout ce qu'il y a de plus simple, avec juste une taille et une position prédéfinies) :
Eterm -g 100x10+95+10&
Je lance ensuite la commande "xwininfo" pour récupérer les infos relatives à cette fenêtre (id, longueur, hauteur, etc...) :
xwininfo

xwininfo: Please select the window about which you
          would like information by clicking the
          mouse in that window.

xwininfo: Window id: 0x3200046 "jp@MDK: /home/jp"

  Absolute upper-left X:  98
  Absolute upper-left Y:  39
  Relative upper-left X:  0
  Relative upper-left Y:  0
  Width: 624
  Height: 161
  Depth: 24
  Visual Class: TrueColor
  Border width: 0
  Class: InputOutput
  Colormap: 0x20 (installed)
  Bit Gravity State: ForgetGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: no
  Corners:  +98+39  -302+39  -302-568  +98-568
  -geometry 100x10+95+10
Jusque là pas de problèmes, quoi que vous me direz, la taille et la géométrie diffèrent quelque peu !!! ;-\
Ben vous ne pensez pas si bien dire, c'est bien là que se situe le "hic" !!!

Qu'à cela ne tienne, je lance donc la "moulinette" dont j'ai le secret absolu, qui me permet de récupérer les coordonnées (enfin c'est ce que je croyais) :
import -verbose /dev/null
/dev/null PS 631x193 1024x768+95+13 DirectClass 0.000u 0:01
/dev/null PS 631x193 1024x768+95+13 DirectClass 0.210u 0:01
qui me renvoie bien (à quelques pixels prés) les coordonnées des axes (+95+13) ainsi que celles de la taille (631x193) (la différence étant dûe au style de décoration des fenêtres sous KDE).

Je disais donc que c'est à ce niveau que se situe le "hic".
Je n'arrive pas à déterminer comment est exprimé le paramètre "-g" (géométrie) d'Eterm, dont voici un extrait du "man" :
-g geom, --geometry geom
              Window  geometry  as  Width  x  Height+X  coord+Y   coord,   i.e
              100x200+0+100
celui-la même renvoyé par la commande "wininfo" (-geometry 100x10+95+10), par rapport à la taille exprimée par "wininfo" :
Width: 624
Height: 161
et la commande "import" :

/dev/null PS 631x193 1024x768+95+13 DirectClass 0.000u 0:01

???

Je sais pas si j'ai été clair là, mais si une bonne âme charitable voudrait bien essayer de m'expliquer quelle fonction mathématique (ça n'a jamais été mon fort ;-( ) peut résoudre cette équation (s'il en existe une... of course).

Merci d'avoir pris le temps de me lire et merci à ceux qui tenteront de m'aider.

Bonne fin de week-end z'@toutes z'et @ tous.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
14 août 2006 à 20:28
Re- tout le monde,

Bon ayé ;-))))

J'ai en fait trouvé une soluce à mon problème.

Alors pour résumer, en fait "Eterm" n'utilise pas le "pixel" pour définir la taille (longueur/hauteur) de la fenêtre comme le font d'autres applications , mais comme sur les bons vieux terminaux (VT100) le nombre de "colonnes" et de "lignes".

Ce qui justifie alors mon énigme dans le précédent post, à savoir la relation entre :

Width: 624
Height: 161

et
-geometry 100x10

qui se résume donc à :

100 colonnes
sur
10 lignes

Le rapport entre la longueur et le nombre de colonnes est donc :

 longueur (624)
---------------------   = 6 (arrondi) 
 nbre colonnes (100)


idem pour la hauteur et le nombre de lignes :

 hauteur (161)
--------------------  = 16 (arrondi)
 nbre de lignes (10)


Donc en déduction pour mon histoire, je n'ai plus qu'à diviser ma longueur par 6 et la hauteur par 14 (c'est le résultat le plus approchant sur de nombreux essais que j'ai effectués), et j'obtiens l'effet escompté pour ma moulinette ;-)))

Bon je suppose qu'il doit y avoir un moyen plus accadémique de calculer le rapport longueur/hauteur/colonne/ligne, donc s'il y a des connaisseurs... merci d'avance.

Bonne soirée z'@ toutes z'et @ tous.
0
Phiphi57 Messages postés 789 Date d'inscription samedi 26 février 2005 Statut Contributeur Dernière intervention 19 juillet 2009 295
14 août 2006 à 21:30
Salut,

je sais pas si ca peut aider, mais j'imagine qu'il y a une inconnue de plus dans ton probleme : la taille de la police utilisée... non?
avec une petite police tu dois avoir plus de lignes et de colonnes sur le meme 624x161 ...

Phiphi
0
Phiphi57 Messages postés 789 Date d'inscription samedi 26 février 2005 Statut Contributeur Dernière intervention 19 juillet 2009 295
14 août 2006 à 21:43
Re,

avec un peu de google, il semblerait qu'il y ait une "fonction" mouse-pixel-position liée a Emacs (ou XEmacs)
http://www.gnu.org/

peut etre pourrais tu réussir a t'en servir??
j'espere que ca peut aider un peu...

Phiphi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
14 août 2006 à 22:40
Salut Phiphi,

Merci pour l'intérêt.

Effectivement, c'est une (la taille des caractères) éventualité à laquelle j'avais songée aussi (en fait j'avais plutôt pensé en prime abord à prendre en compte la résolution) mais je ne savais pas trop comment inter-connecter le tout (je l'ai dit plus haut, les maths et moi ... ;-[ ).

Le lien semble en effet parler de la position de la souris, mais me semble-t-il à l'intérieur même de la fenêtre Emacs, non ? Enfin c'est ce que j'en ai compris (mon anglais étant quelque peu sommaire).

Quoi qu'il en soit, merci encore pour tes posts, mais je vais certainement m'en tenir là (à moins qu'une âme charitable me ponde le truc tout cuit), et avec ce que j'ai "pondu", ça me convient parfaitement pour l'usage que je voulais en faire, à savoir tracer un parallélogramme à n'importe quel endroit du bureau et ouvrir un "Eterm" ayant les dimensions requises et des options prédéfinies (seule la couleur de police est passée en paramètre).

Voilà, merci encore.

;-))
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
14 août 2006 à 23:49
J'avais z'oublié au cazou vous seriez intéressé par mes bétises ;-))
#! /bin/bash
## script.sh

## Usage : sh script.sh [paramètre]
## paramètre étant une couleur "noir-rouge-vert-jaune-bleu-magenta-cyan-blanc"

# Récupération dans une variable des valeurs avec la commande "import"
recup="$(import -verbose /dev/null)"

# Tri des valeurs obtenues
coord="$(echo $recup | sed -e 's/D.*//;s/[^0-9x+]//g;s/1024x768/ /g;s/[+x]/ /g')"

# Envoi des valeurs récupérées dans un fichier temporaire sous forme de liste
for i in $(echo $coord)
do
echo $i >> fich.tmp
done

# Récupération de chaque valeur dans une variable
i=1
for ligne in `cat fich.tmp`
do eval V$i="$ligne"
i=$(expr $i + 1)
done

# Définition des variables finales
L="$(expr $V1 / 6)"
H="$(expr $V2 / 14)"
x="$V3"
y="$V4"

# La commande et ses paramètres
Eterm -O0x --buttonbar 0 --scrollbar 0 --app-cursor -f "${1:-white}" -g "$L"x"$H"+"$x"+"$y"&

# Effacement du fichier temporaire
rm -f fich.tmp

exit 0
Amusez-vous bien ;-))
0
Le logiciel "super macro" permet (entres autres) de connaitre la position de ton curseur.
Dans la fenetre satandard , tu selectionnes "Deplacement souris"
une fenetre s'ouvre , qui te demande si tu veux activer la capture , appuies sur Alt+c.
La tu peux voir les coordonnées du curseur qui s'affiche dans cette fenetre.
Pour figer ces coordonnées appuies à nouveau sur ALT+C.
voilou
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 déc. 2007 à 20:16
Merci, mais t'as un lien s'il te plaît, et t'es sûr que c'est pour GNU/Linux ? ;-))
0