GreG

#GeeK #Domotique #Alire

Automatisation : Simuler les appuis de touches sur le clavier

Publié le 22 décembre 2016

Cet article a pour but de décrire comment automatiser des appuis de touches dans une application.

En effet, on me demande souvent de faire des actions répétitives sur des sites (toutes les heures).

Or comme il se trouve que j’ai un RaspberryPI qui tourne en permanence (comme beaucoup) il pourrait très bien se saisir de cette tâche.

NIVEAU_confirmé

Cliquez pour avoir la définition des niveaux.

Le projet

Le but du projet est d’effectuer les étapes suivantes toutes les 45 minutes :

  1. Lancer le focus sur l’application Mozilla déjà lancée
  2. Ouvrir une nouvelle fenêtre de navigation dans un nouvel onglet (pour ne pas perturber les fenêtres déjà actives)
  3. Lancer un site web dans la barre d’adresse
  4. Lancer un deuxième site web dans la même barre d’adresse
  5. Refermer l’onglet

Les outils de simulation des touches

Nous utiliserons comme application xdotool qui est assez complet car il permet non seulement de simuler les touches mais également d’activer des fenêtres ou simuler la souris. Personnellement j’évite d’utiliser la souris, car elle est trop liée aux positionnements des fenêtres. On privilégiera donc les raccourcis claviers qui ont beaucoup plus de chance de réussir si la fenêtre est active.

Installation de xdotool

On est sur de l’installation classique.

# Installation du paquet de configuration
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install xdotool

Utilisation de xdotool

Les commandes de base qui vont nous intéresser sont les suivantes :

# Pour saisir une touche de fonction (ctrl + t)
xdotool key ctrl+t
# Pour saisir du texte
xdotool type 'Mon texte à saisir'

Création du fichier Batch de séquencement des touches

Voici le fichier batch qui va simuler la saisie clavier correspondant aux différentes étapes du projet, il a été écrit dans un fichier /home/pi/SimuleClavier.sh avec nano :

nano /home/pi/SimuleClavier.sh

Saisir les lignes suivantes :

## =====================================================================
## === SimuleClavier.sh à mettre en cron /*45  (toute les 45 minutes) ==
## =====================================================================
#!/bin/bash

sleep 5s
# Activation de Mozilla
# Le navigateur doit déjà être lancé
WID=`xdotool search "Mozilla Firefox" | head -1`
xdotool windowactivate --sync $WID
sleep 2s
# Nouvel Onglet dans mozilla
xdotool key ctrl+t
sleep 2s
# Adresse du site à lancer
xdotool key alt+d
xdotool type 'http://www.mon_site.fr/bidule.php?pseudo=Le_Pseudo_De_Cnx'
xdotool key Return
sleep 10s
# Autre site à  lancer
xdotool key alt+d
xdotool type 'http://www.mon_site_2.fr/redirection.php'
xdotool key Return
sleep 20s
# Fermeture de l'onglet
xdotool key ctrl+w

Quittez nano à l’aide de CTRL+X et Y

Remarque

La touche alt+d permet de sélectionner la barre d’adresse du navigateur. En effet après chaque lancement de site la barre d’adresse perd le focus.

Pour les sites c’est ce que vous voulez mais il est parfois intéressant de voir comment ils fonctionnent. Dans mon cas, le passage du pseudo en paramètre permet d’éviter de le saisir dans la fenêtre de connexion.

Rendez ensuite votre script exécutable à l’aide de l’instruction suivante :

chmod 777 /home/pi/SimuleClavier.sh

Automatisation de la tâche

Nous utiliserons cron via l’installation suivante :

sudo apt-get install gnome-schedule

Il faudra ensuite créer une tâche planifiée. Vous pouvez le faire par l’interface graphique ou en ligne de commande.

Méthode ligne de commande

crontab -e

Choisir nano. Ce qui va lancer le fichier de configuration avec nano. Il vous faudra rajouter le dernière ligne pour lancer le script toutes les 45 minutes

# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
*/45 * * * * /home/pi/SimuleClavier.sh

Quittez nano à l’aide de CTRL+X et Y

Méthode graphique

Suite à l’installation une nouvelle icône « Scheduled tasks » est présente dans le menu démarrer :

 

 

 

 

 

 

 

En cliquant dessus une fenêtre de paramétrage s’ouvre

 

 

 

 

 

 

 

Créez une nouvelle tâche et saisissez comme commande /home/pi/SimuleClavier.sh puis Xapplication. Choisissez ensuite en mode « Advanced » –> */45 qui correspond à 45 minutes.

Ça y est votre tâche est planifiée pour s’exécuter toutes les 45 minutes.

Pour aller plus loin

Il peut être intéressant de travailler en tâche de fond le lancement des sites web sans interactions graphiques. On peut pour cela utiliser un script python qui ressemblerait à cela en Python version 2 en version 3 c’est différent :

#!/usr/bin/env python
import urllib
f = urllib.urlopen("http://www.mon_site.fr/bidule.php?pseudo=Le_Pseudo_De_Cnx")
s = f.read()
print(s)

Sources

  • http://www.memoclic.com/593-firefox/9114-raccourcis-clavier-firefox.html
  • http://xmodulo.com/simulate-key-press-mouse-movement-linux.htm
  • https://www.semicomplete.com/projects/xdotool
  • https://www.raspberrypi.org/documentation/linux/usage/cron.md

A lire sur : Framboise 314, le Raspberry Pi à la sauce française…. http://www.framboise314.fr/automatisation-simuler-les-appuis-de-touches-sur-le-clavier/

Share Button
Posté dans : Domotique, Geek, veille
Tag :
domotique, geek, veille

Articles récents

  • Install mtr sur Mac OSX M1
  • Serveur PTP linux
  • Postfix « message file too big »
  • Suivre sa consommation d’eau jour, semaine, mois, année avec Eedomus et réaliser enfin des économies
  • Comment automatiser et externaliser les sauvegardes de Jeedom sur NAS Synology

Archives

  • février 2022
  • juin 2019
  • juin 2018
  • février 2018
  • janvier 2018
  • novembre 2017
  • octobre 2017
  • septembre 2017
  • août 2017
  • juillet 2017
  • juin 2017
  • mai 2017
  • avril 2017
  • mars 2017
  • février 2017
  • janvier 2017
  • décembre 2016
  • novembre 2016
  • octobre 2016
  • septembre 2016
  • août 2016
  • juillet 2016
  • juin 2016
  • mars 2016
  • février 2016
  • janvier 2016
  • décembre 2015
  • novembre 2015
  • octobre 2015
  • septembre 2015
  • août 2015
  • juillet 2015
  • juin 2015
  • mai 2015
  • avril 2015
  • août 2014
  • juillet 2014
  • juin 2014
  • mai 2014
  • avril 2014
  • mars 2014
  • février 2014
  • janvier 2014

Mots-clés

30ans alf alire android apple bio chine chocolat cloud dolorean domotique espace geek google gopro hubic humour inconnus ios iphone linux m&ms mac macbook maman mediacenter montre ovh parrot pebble plante pub radioshack raid redbull reseau sense Skittles stockage stream surveillance veille video vidéos wood

Catégories

  • 80s
  • Alire
  • Android
  • Apple
  • Bio
  • Chocolat
  • Cloud
  • Domotique
  • Drone
  • Exploit
  • Geek
  • Humour
  • Linux
  • Mediacenter
  • Non classé
  • Reseau
  • Smartphone
  • veille

Copyright © 2025 GreG.