Écrire automatiquement du texte avec des raccourcis clavier

Dans cet article, nous allons voir comment rédiger du texte à l’aide de raccourcis clavier sous un environnement Linux. Pour cela, nous allons utiliser deux logiciels.

Le premier est xbindkeys, il permet d’associer des commandes Linux à des raccourcis clavier. C’est lui qui va gérer la définition des raccourcis à créer. Il peut également être remplacé par l’outil graphique « clavier » que certains systèmes possèdent. Nous allons également voire cette alternative.

Le second est xdotool, c’est lui qui permet de saisir du texte automatiquement à notre place, sans utiliser de clavier.

Les cas d’usages sont multiples, mais par exemple ça permet de créer des réponses automatiques ou d’ajouter sa signature en fin de mail avec un raccourci.

Création des raccourcis clavier

La première étape est de créer les raccourcis et de les associer à une commande Linux. Dans un premier temps, on va utiliser la commande xeyes pour faire du debug mais à terme, cela sera xdotool qui sera utilisé.

Il existe deux méthodes pour créer ces raccourcis et les associer à des commandes : xbindkeys et l’outil graphique nommé clavier. L’un ou l’autre peut être utilisé mais après quelques tests, il s’avère que l’outil clavier semble plus fiable et plus simple à utiliser.

Associer une commande à un raccourci avec xbindkeys

Le programme xbindkeys se trouve dans les dépôts officiels de la plupart des distributions, je travaille avec CentOS donc l’installation se fait avec yum :

yum install epel-release
yum install xbindkeys
Installation de xbindkeys sous CentOS

Ce programme fonctionne avec un fichier de configuration qui se situe dans le répertoire courant de l’utilisateur. Il s’agit du fichier suivant : ~/.xbindkeysrc

Ce fichier contient l’association des raccourcis et des commandes qui sont lancés lorsque les raccourcis sont activés. Dans un premier temps, il faut donc récupérer la chaîne de caractère qui décrit le raccourci utilisé. C’est dans un format particulier mais heureusement xbindkeys fourni un outil pour cela.

xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
    m:0x11 + c:75
    Shift+Mod2 + F9
Récupération de la chaîne de caractère décrivant le raccourci

Avec l’option -k (qui signifie key pour clé), un utilitaire se lance et demande l’activation d’un raccourci.

xbindkeys raccourci

Fenêtre qui se lance pour la création d’un raccourci xbindkeys

Dans cet exemple, j’ai choisi MAJ + F9. L’utilitaire retourne un bout de code qu’il faudra utiliser dans le fichier ~/.xbindkeysrc : ce sont les trois dernières lignes de mon exemple.

La partie « (Scheme function) » est à remplacer par la commande qui sera lancé suite à l’activation du raccourci. Les deux lignes suivantes ne doivent pas être modifiées, c’est la notation sous forme d’une chaîne de caractère du raccourci.

Maintenant nous pouvons créer le fichier ~/.xbindkeysrc :

"xeyes"
    m:0x11 + c:75
    Shift+Mod2 + F9
Création d'un raccourci SHIFT + F9 qui lance xeyes

Pour tester si le raccourci fonctionne, on s’assure que xeyes est bien installé, puis on lance xbindkeys sans argument, une fenêtre avec xeyes devrait apparaître (voir ici) :

yum install xeyes
xbindkeys
Lancement de xbindkeys

On est maintenant capable de créer des raccourcis et de les associer à des commandes, avec xbinkeys !

Associer une commande à un raccourci avec l’outil clavier

Nous avons vu comment associer des raccourcis à des commandes grâce à xbindkeys, nous allons voire la même chose avec l’outil graphique clavier.

Sur CentOS et la version de gnome que j’utilise, l’outil est accessible en allant dans le menu d’activité puis en faisant une recherche sur « clavier ».

Lancement de l’outil clavier sous gnome

Une fois l’outil lancé, il faut scroller tout en bas pour trouver les raccourcis personnalisés puis cliquer sur le + pour ajouter un nouveau raccourci.

gnome shortcut

Raccourcis personnalisés Gnome

Enfin, il suffit de donner un nom au raccourci, d’y associer une commande puis de définir le raccourci.

raccourcis gnome clavier

Création d’un raccourcis avec l’outil Clavier de Gnome

Rédiger du texte automatiquement avec xdotool

Maintenant nous allons voir comment rédiger du texte automatiquement à l’aide du programme xdotool. Ce logiciel permet de simuler les actions d’un clavier ou même d’une souris. Nous allons l’utiliser pour qu’il écrive du texte à notre place, via un petit script bash, qui sera lancé par l’une ou l’autre des méthodes de gestions de raccourcis vu précédemment.

L’outil est dans les dépôts officiels de la plupart des distributions, il s’installe facilement :

yum install xdotool
Installation de xdotool

Nous allons utiliser deux commandes xdotool :

  • Une qui permet d’ajouter les sauts de lignes, en simulant la touche « entrer », avec l’option key
  • L’autre commande qui permet de taper du texte automatique, avec l’option type
xdotool key --delay 110 Return
xdotool type --delay 0 "Bla bla bla"

Dans les deux commandes, on ajoute une option --delay qui permet d’ajouter un délai dans ce qui est rédigé. Après plusieurs tests, j’ai constaté que le premier retour à la ligne ou la première phrase écrite doit avoir un délai d’environs 100ms sinon une partie du texte est tronqué (à cause d’une sorte de lag).

Avec ces deux commandes, on peut faire un script qui permet de rédiger du texte de manière automatique, en fonction des raccourcis claviers passés en argument. Voici un exemple de script permettant de faire cela :

#!/bin/sh
# https://blog.madrzejewski.com/rediger-texte-raccourcis-clavier-linux-xbindkeys-xdotool
case $1 in
  # Exemple : signature d'un email
	'majf1')
		xdotool key --delay 110 Return
		xdotool type --delay 0 "Si vous avez d'autres questions, je reste à votre écoute."
		xdotool key --delay 1 Return
		xdotool key --delay 1 Return
		xdotool type --delay 0 'Merci de votre confiance,'
		xdotool key --delay 1 Return
		xdotool type --delay 0 'Agréable journée,'
		xdotool key --delay 1 Return
		xdotool type --delay 0 'Alexis'
	;;
  # Exemple : une autre version de la signature
	'majf2')
		xdotool key --delay 110 Return
    xdotool type --delay 0 "Cordialement,"
    xdotool key --delay 1 Return
		xdotool type --delay 0 'Alexis'
	;;
	*)
	;;
esac

Le script est assez simple, il reprend en argument une chaîne de caractère qui décrit un raccourci, par exemple « majf1 » pour le raccourci « MAJ + F1 ».

Ensuite un switch/case permet de vérifier si cette chaîne de caractère correspond à une réponse. Ensuite, xdotool est utilisé pour simuler l’écriture de la réponse au clavier. La seule subtilité étant l’ajout de certains délais pour éviter les effets de lags et des réponses tronquées.

Le programme s’utilise ainsi : ./macros.sh majf1

Il ne reste plus qu’à lancer les appels à ce script depuis xbindkeys ou l’outil clavier de Linux. Pour xbindkeys, il suffit de mettre à jour le fichier de configuration ~/.xbindkeysrc:

"/home/user/bin/macros.sh majf9"
    m:0x11 + c:75
    Shift+Mod2 + F9
Fichier de configuration xdotools

Ce fichier de configuration va lancer le script macros.sh avec l’argument majf9. Les deux lignes suivantes indique que cela doit être lancés lorsque les touches MAJ + F9 sont activées.

La même chose peut être faites avec l’outil clavier de Gnome.

Création du raccourcis avec l’outil clavier de Gnome

Une petite démonstration en Gif animé, la copie du texte est presque instantanée.

Conclusion

Dans cet article nous avons vu plusieurs choses.

Premièrement, nous avons vu comment associer des raccourcis clavier à des commandes Linux, via deux méthodes : xbindkeys et l’outil clavier de Gnome.

Deuxièmement, nous avons vu qu’il est possible de simuler des actions du clavier et de la souris avec l’outil xdotools. On utilise cet outil pour simuler l’écriture de réponse via un script.

En combinant les deux, nous avons vu qu’il est possible d’écrire du texte automatiquement à l’aide de raccourcis.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.