web-dev-qa-db-fra.com

Comment définir la position du curseur avec la commande / script?

J'ai un script qui réinitialise certaines choses, et à la fin de celui-ci, j'ai besoin de régler le curseur sur certaines coordonnées, soit sur un ensemble personnalisé, soit sur le centre de l'écran (où il est réinitialisé par défaut lors du redémarrage de gnome-Shell par exemple).

Comment cela peut il etre accompli? La solution devrait fonctionner pour toutes les tailles d’affichage et être capable d’obtenir automatiquement les données et de faire tous les calculs, etc.

J'utilise Ubuntu GNOME 16.04 avec GNOME 3.20.

4
user364819

Déplacement de la souris vers une position définie (absolue)

..est simplement fait par la commande (par exemple):

xdotool mousemove 200 200

Déplacer la souris vers le centre de l'écran est cependant une commande relative, pour laquelle nous devons lire les informations de l'écran et faire des calculs. Ceci est fait dans les deux petits scripts ci-dessous.

Version simple (déplace le curseur au centre de l'écran de gauche)

Pour déplacer la souris au centre de l'écran (le plus à gauche), utilisez le script ci-dessous:

#!/usr/bin/env python3
import subprocess

xr = [s for s in subprocess.check_output("xrandr").decode("utf-8").split() if "+0+" in s]
scr = [int(n)/2 for n in xr[0].split("+")[0].split("x")]
subprocess.Popen(["xdotool", "mousemove", str(scr[0]), str(scr[1])])
  • installer xdotool

    Sudo apt-get install xdotool
    
  • Copiez le script dans un fichier vide, enregistrez-le sous le nom center_screen.py

  • Exécuter:

    python3 /path/to/center_screen.py
    

Version étendue (arguments optionnels x, y)

Si des coordonnées arbitraires sont facultatif, utilisez:

#!/usr/bin/env python3
import subprocess
import sys

if sys.argv[1:]:
    scr = [sys.argv[1], sys.argv[2]]
else:
    xr = [s for s in subprocess.check_output("xrandr").decode("utf-8").split() if "+0+" in s]
    scr = [str(int(n)/2) for n in xr[0].split("+")[0].split("x")]

subprocess.Popen(["xdotool", "mousemove", scr[0], scr[1]])

Cette version déplacera le curseur au centre de l'écran lors de l'exécution de sans arguments, ou à une position arbitraire lors de l'exécution de avec arguments, par exemple:

python3 /path/to/center_screen.py 200 200

Explication

Dans le résultat de la commande: xrandr, il suffit de trouver la chaîne suivante:

1680x1050+0+0

... qui contient les données sur l'écran le plus à gauche (+0+). les deux chiffres dans 1680x1050 doivent alors être divisés par deux pour être utilisés dans:

xdotool mousemove <x> <y>

La ligne:

if sys.argv[1:]:

est alors de décider si les arguments donnés doivent être utilisés ou ceux calculés.

5
Jacob Vlijm