Rechercher : dans
Par :

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

Dernière réponse le 17 aoû 2008 à 20:54:28 jipicy, le 12 aoû 2006 à 16:16:11 
 Signaler ce message aux modérateurs

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.
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Meilleures réponses pour « Récupérer coordonnées souris à l'écran » dans :
Quelle touche utiliser pour faire une copie d'écran au clavier ? VoirPour sauvegarder dans une image (jpg, png...) ou dans un document (doc, odt...) ce que l'on voit à l'écran, il existe une touche sur tous les claviers qui permet de capturer ce qui est affiché. Chaque clavier est différent, ceci est encore plus...
Capture d'écran rapide VoirCapture d'écran/zone ou fenêtre rapide La combinaison magique ! Lorsque l'on navigue sur la toile, où que l'on survole un PDF intéressant, on souhaite parfois récupérer une partie ou une image verrouillée... Impossible de la sélectionner, de...
VB6. Connaître la position absolue de la souris. VoirCette petite fonction permet de connaître la position de la souris par rapport à l'écran et non par rapport à la feuille ou au contrôle qu'elle contient. Dans un module Déclaration Public Type POINTAPI x As Long y As Long End...
Télécharger Aquaruler VoirAquaruler est un utilitaire de mesures à l'écran. Il offre : des règles aux bords de l'écran rétractables dont peut déterminer l'unité de mesure les coordonnées de la souris des règles déplaçables dans l'écran une boîte de simulation de...
La souris VoirPrésentation de la souris La souris (en anglais «mouse» ou «mice») est un périphérique de pointage (en anglais pointing device) servant à déplacer un curseur sur l'écran et permettant de sélectionner, déplacer, manipuler des objets grâce à des...

1

jipicy, le 13 aoû 2006 à 11:42:45

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.
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

2

jipicy, le 14 aoû 2006 à 20:28:34

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.
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

3

Phiphi57, le 14 aoû 2006 à 21:30:21

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

Répondre à Phiphi57

4

Phiphi57, le 14 aoû 2006 à 21:43:08

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.delorie.com/gnu/docs/elisp-manual-21/elisp_463.html

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

Phiphi

Répondre à Phiphi57

5

jipicy, le 14 aoû 2006 à 22:40:13

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.

;-)) Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

6

jipicy, le 14 aoû 2006 à 23:49:55

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 ;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

7

Mr Micoz, le 30 déc 2007 à 19:47:27

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

Répondre à Mr Micoz

8

 jipicy, le 30 déc 2007 à 20:16:55

Merci, mais t'as un lien s'il te plaît, et t'es sûr que c'est pour GNU/Linux ? ;-))

Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy