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.
Table des matières
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
:
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.
Avec l’option -k
(qui signifie key pour clé), un utilitaire se lance et demande l’activation d’un raccourci.
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
:
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) :
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 ».
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.
Enfin, il suffit de donner un nom au raccourci, d’y associer une commande puis de définir le raccourci.
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 :
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
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 :
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
:
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.
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.