Soit un jeu vidéo dans lequel il faut cliquer à un même endroit pour collecter un exemplaire d'un item nécessaire à la progression dans le jeu. Ou se passer de l'item en attendant 7 heures entre quelques clics (la durée du jeu tend ainsi vers l'infini :D ). Ou acheter, avec de l'argent bien réel, plusieurs exemplaires de l'item afin d'avoir la paix. En réalité, trois clics sont nécessaires : clic pour collecter, clic pour confirmer la collecte, clic sur le message de confirmation "objet ajouté à votre inventaire".
Comment faire pour automatiser cela ? Comment faire pour cliquer automatiquement à notre place ? xdotool
(paquet logiciel du même nom dans Debian).
Dans mon cas : xdotool click --repeat 130000 --delay 500 1
. 130 000 clics avec le bouton gauche de la souris (le « 1 » en fin de ligne), espacés de 500 millisecondes.
Procédure : il suffit de préparer la commande dans un terminal, de ranger le terminal dans un coin de l'écran, de mettre le jeu au premier plan, de positionner le pointeur de la souris sur l'endroit où il faut cliquer, alt+tab, entrée, et hop, enjoy for fun and profit!
Certes, je n'ai pas pu utiliser mon ordinateur pendant plus d'une heure. Lire un bouquin, et hop. :)
On peut utiliser xdotool
pour envoyer des touches de clavier, pour cibler une fenêtre (ou un groupe de fenêtres) en particulier avant envoi d'événements, pour déplacer la souris, etc. Ça peut servir d'enchaîner tout cela dans un script.
En réalité, tout le jeu vidéo en question est un clicker / jeu incrémental (progression uniquement en cliquant). Mais les endroits où cliquer changent à chaque scène. Peut-être y-a-t-il moyen de feinter avec xdotool
en déplaçant la souris + cliquer un peu partout. Je n'ai pas creusé. Mais il y a des récompenses à choisir après une majorité des scènes, et ça, ça relève d'un choix stratégique qui ne s'automatise pas avec un outil aussi simple que xdotool
.