Pour les utilisateurs qui jonglent quotidiennement avec plusieurs langues de saisie, le simple raccourci Alt+Shift ou Win+Espace peut devenir un frein. Passer de l'anglais au russe puis à l'ukrainien oblige à compter mentalement les cycles et à vérifier l'icône de langue dans la barre des tâches. Insatisfait des outils existants, un développeur a mis au point une solution personnalisée avec le logiciel libre AutoHotkey.
Un problème de productivité bien connu
L'auteur du script utilise régulièrement trois claviers : anglais (États-Unis), russe et ukrainien. Il explique que les changements cycliques par défaut ne sont pas pratiques : « Il faut cliquer plus et regarder dans la zone de notification pour l'étiquette de la langue. » Les utilitaires comme Punto Switcher fonctionnent bien avec deux langues, mais n'offrent rien de satisfaisant pour trois. L'objectif était de pouvoir accéder directement à la langue souhaitée, quel que soit le réglage en cours.
Une solution technique avec AutoHotkey
Le script repose sur AutoHotkey v2, un outil d'automatisation de frappes. Il attribue chaque langue à une touche de modification physique :
Ctrl gauche→ anglais (localeId 0x0409)Ctrl droit→ russe (0x0419)Alt droit→ ukrainien (0x20422)
Lorsque l'utilisateur appuie sur l'une de ces touches, le script appelle des fonctions de l'API Windows (LoadKeyboardLayout, SystemParametersInfo) pour modifier la disposition par défaut du système et envoyer les messages WM_INPUTLANGCHANGEREQUEST à toutes les fenêtres ouvertes. La boucle for windowId in windowIds permet d'appliquer le changement à chaque fenêtre active, en ignorant celles dont l'accès est refusé.
Le développeur a pris soin d'ajouter le préfixe ~ (tilde) devant chaque raccourci : cela empêche le script de bloquer la fonction native de la touche. Ainsi, Ctrl conserve son usage habituel dans les combinaisons de touches (sélection, copier-coller) tant qu'il n'est pas utilisé seul pour changer de langue.
Un écueil inattendu : le comportement d'AltGr
Un détail technique a nécessité un correctif : sur les claviers russe et ukrainien, la touche Alt droit se comporte comme AltGr, équivalente à Ctrl gauche + Alt droit. Cela déclenchait d'abord le gestionnaire de Ctrl gauche (qui passait à l'anglais) avant celui de Alt droit (qui passait à l'ukrainien). Pour résoudre ce problème, le développeur a introduit une variable globale isAltGr et un délai de 100 millisecondes dans le gestionnaire de Ctrl gauche. Si Alt droit est pressé immédiatement après, la variable signale qu'il s'agit d'AltGr, et le script bascule vers l'ukrainien sans passer par l'anglais.
Des ajustements pour une meilleure ergonomie
Après une période d'utilisation, les touches Ctrl et Alt se sont révélées peu confortables pour une utilisation fréquente. L'auteur a alors eu une idée : utiliser la touche Verrouillage Maj (Caps Lock). Il a modifié le script comme suit :
CapsLock + 1→ anglaisCapsLock + 2→ russeCapsLock + 3→ ukrainien
« C'est un peu inhabituel d'utiliser Caps Lock comme modificateur, donc la mémoire musculaire a mis un certain temps à s'installer, mais maintenant je l'utilise avec plaisir », témoigne-t-il.
Conclusion
Cette astuce illustre comment un outil comme AutoHotkey peut résoudre un besoin de niche avec une approche « maison ». Pour ceux qui travaillent avec trois langues ou plus sous Windows, le script peut être adapté avec les identifiants de disposition appropriés. Le code complet est disponible librement, avec des commentaires pointant vers les fonctions API Windows pour faciliter la maintenance.