Apprenez AutoHotKey en me volant mes scripts
(hillelwayne.com)- AutoHotKey est un outil d’automatisation Windows puissant mais intimidant pour les débutants, donc l’auteur publie sa collection de scripts personnels comme support d’apprentissage
- Le contenu se compose de 14 fichiers au total, principalement centrés sur des exemples d’automatisation immédiatement utilisables comme l’ouverture de dossiers, l’insertion de texte ou l’extension de raccourcis propres à certains programmes
- On y trouve aussi bien la saisie rapide de la date du jour, d’un tiret cadratin et de
¯\_(ツ)_/¯qu’un système de raccourcis modal pour utilisateurs de vim et une simple démo d’interface graphique - Un script permettant de convertir des horodatages en UTC et heure locale est également inclus, montrant une automatisation de flux de travail pratique qui va au-delà des simples raccourcis
- Chaque fichier contient des commentaires expliquant ce que fait le code et, pour certains, pourquoi il a été implémenté ainsi, ce qui en fait une codebase pédagogique agréable à lire
Une collection d’exemples AutoHotKey proches d’un usage réel
- Pour les utilisateurs qui trouvent AutoHotKey difficile à apprendre, l’auteur publie avec explications la plupart des scripts qu’il utilisait personnellement
- L’ensemble du code est disponible dans le dépôt GitHub, composé de 14 fichiers au total
- Voici quelques exemples notables
- Ouvrir rapidement des dossiers précis
- Insérer rapidement la date du jour, un tiret cadratin et
¯\_(ツ)_/¯ - Ajouter de nouveaux raccourcis à un programme donné
- Système de raccourcis modal pour utilisateurs de vim
- Démo simple d’interface graphique
- Script de conversion d’horodatages entre UTC et heure locale
Une lecture comme codebase pédagogique
- Ce dépôt est un exemple de codebase pédagogique conçue pour permettre aux gens d’apprendre en lisant le code
- Chaque fichier contient de nombreux commentaires sur ce que fait le code et, pour certaines implémentations, sur les raisons du choix technique
- Une explication séparée sur les codebases pédagogiques se poursuit dans cet article de newsletter
- Les parties qui demanderaient davantage d’explications peuvent être signalées via une issue GitHub
1 commentaires
Avis de Hacker News
Pour la première fois, j’ai l’impression de pouvoir apporter quelque chose d’utile à une discussion liée au code. En tant que personne qui écrit, je me suis fait un script AutoHotkey qui ouvre rapidement un notepad.exe vide à tout moment : la touche
~l’ouvre, une nouvelle pression le ferme, et s’il contient du texte, une boîte de dialogue d’enregistrement apparaîtC’est tout ce que fait mon AHK
Quand on veut passer rapidement de la fenêtre précédente à l’actuelle sans fermer ni réduire quoi que ce soit, le raccourci Windows natif Alt + Escape est utile. Contrairement à Alt+Tab, il n’affiche pas l’aperçu des fenêtres et bascule directement vers la dernière fenêtre qui avait le focus
Dans AutoHotkey v1, on peut se faire un boilerplate de switcher/launcher qui cherche un fragment de titre de fenêtre pour l’activer, revient en arrière avec
send, !{escape}si elle est déjà active, et la lance si elle n’existe pas. Si l’on ne veut pas encombrer la barre des tâches, on peut aussi utiliserWinHide/WinShow, mais cela ne convient pas toujours à certaines fenêtres ; pour la détection de fenêtres,ahk_exeouahk_classsont parfois plus adaptésWinActive("Untitled - Notepad")etWinExist("*Untitled - Notepad")pour fermer ou activer la fenêtre, et sinon d’exécuterRun "Notepad"WinActive()ouWinExist(), on peut combiner plusieurs conditions de titre avecor, et au besoin ajouter aussi une condition ahk_class, comme dans"Untitled - Notepad ahk_class Notepad"AutoHotkey est génial, mais j’aimerais que le langage soit un peu plus normal. J’ai galéré en essayant de faire une version stable d’Aero Snap basée sur le nombre d’or ; gérer plusieurs moniteurs et tailles ne devrait pas être aussi difficile, mais entre la syntaxe bizarre de
Loopet les échecs silencieux dus à de simples erreurs, ça m’a coupé l’envie et j’ai abandonnéJ’ai aussi trouvé le module ahk pour Python, mais combiné au module
keyboard, il ne fonctionnait pas aussi bien qu’AutoHotkey comme écouteur de raccourcishttps://github.com/idbrii/daveconfig/blob/main/win/autohotke...
https://pypi.org/project/ahk/
Pour mon mariage, j’ai créé une cabine photo avec AutoHotKey. J’ai utilisé un petit logiciel qui contrôlait le Nikon de ma fiancée en USB, ainsi qu’IrfanView sur l’ordinateur portable ; IrfanView était configuré pour surveiller un dossier et toujours afficher la photo la plus récente
Avec AutoHotKey, j’ai créé une petite interface graphique avec des boutons Preview, Autofocus et « SNAP ». Quand on appuyait sur SNAP, un grand compte à rebours se lançait, la photo était prise, le logiciel de l’appareil photo était réduit, puis IrfanView s’affichait. Quelques secondes plus tard, on revenait à l’interface avec les boutons. Les invités ont adoré, et nous avons économisé plusieurs centaines d’euros de location de cabine photo tout en obtenant de bonnes photos
Ce script AutoHotKey a vraiment changé la donne pour moi. Il mappe Ctrl + Shift + V au collage sans mise en forme : il convertit le presse-papiers en texte, colle, attend un court instant, puis restaure le presse-papiers d’origine
https://learn.microsoft.com/en-us/windows/powertoys/
https://stevemiller.net/puretext/
Un presse-papiers à valeurs multiples, comme les cinq derniers éléments copiés, serait bien aussi, mais c’est peut-être trop demander
AHK fait partie de ces applis qui vous attachent à Windows. Je l’utilise pour ajouter au clavier des caractères comme äöüß ou áóúñ, contrôler la luminosité des lumières de ma chambre et de mon appartement, insérer en un ou deux boutons des horodatages comme
08:39 –,2023-08-22 08:39:46ou2023-08-22 — Tuesday, ou encore allumer/éteindre l’alimentation de mes écrans via une prise compatible Tasmota quand je bascule la touche PauseCela dit, j’aimerais bien une fonction permettant d’utiliser un second clavier comme pavé de boutons tout en « consommant » ses frappes. Du coup, pour gagner davantage de boutons, j’utilise un petit clavier Bluetooth connecté à un Raspberry Pi Zero
https://www.hammerspoon.org/
https://miquelvir.medium.com/secondkeyboard-1c39e52e023b
Il y a aussi ceci : https://github.com/evilC/AutoHotInterception
https://github.com/autokey/autokey
Moi aussi, j’utilise AutoHotKey en permanence. J’y ai mis 6 raccourcis de date/heure, des lanceurs PuTTY/SSH pour les hôtes et ports série fréquents, des lanceurs contextuels pour plus de 10 applis comme Outlook, Windows Terminal ou Total Commander, le collage sans mise en forme partout, le collage avec suppression des retours à la ligne, une couche de saisie AltGr pour caractères spéciaux et emoji, ainsi que des raccourcis média/volume
https://gist.github.com/raveren/bac5196d2063665d2154
Sur mon portable Linux personnel, j’ai interverti Caps Lock et Escape, et je m’y suis habitué. Quand je démarrais aussi Windows en dual boot, j’avais fait le même réglage avec Powertoys, mais au travail je ne peux pas installer Powertoys ni Uncap, donc AutoHotKey est ma seule option
En suivant une réponse StackOverflow, Caps Lock et Escape se sont retrouvées à envoyer toutes les deux les deux touches en même temps, ce qui sabote parfois mes messages Teams
https://github.com/microsoft/PowerToys
https://github.com/susam/uncap
https://stackoverflow.com/questions/38558376/how-to-map-caps...
https://github.com/jtroo/kanata
Par exemple, https://github.com/evilC/TapHoldManager implémente cela dans AHK. Placer Shift/Ctrl/Win/Alt sous
fdsaetjkl;réduit l’usage des auriculaires et permet de garder davantage les doigts sur la rangée de reposCapsLock::Esc,Esc::CapsLockJ’ai aussi réuni d’autres améliorations rapides avec AHK, comme lancer des programmes via des raccourcis globaux : https://nickjanetakis.com/blog/remap-and-set-global-hotkeys-...
https://superuser.com/questions/550679/where-can-i-find-wind...
https://github.com/hwalinga/dotfiles/blob/master/CapsLockCtr...
Cela implémente aussi une double fonction où CapsLock agit comme Ctrl lorsqu’elle est pressée avec une autre touche, et comme Esc lorsqu’elle est pressée brièvement
Comme d’autres l’ont dit, AHK permet de faire un nombre étonnant de choses sous Windows. Personnellement, je dirais qu’AHK m’a fait économiser ou gagner plus de 100 000 dollars
Mais le langage AHK lui-même n’est pas des plus agréables à écrire. Je me demande pourquoi il n’existe pas d’outil aussi puissant en Python ou en Lua, et https://github.com/pywinauto/pywinauto ne fonctionnait pas aussi bien qu’AHK en pratique. Au fond, en dessous c’est la WinAPI, donc C# pourrait aussi être une option s’il existait une bonne bibliothèque wrapper. À mon avis, AHK est populaire parce qu’il est laid, mais qu’il marche
https://www.autohotkey.com/boards/viewtopic.php?f=80&t=77248
AutoHotKey est excellent. Je l’utilise pour changer d’application plus rapidement et, dans mon cas, je contrôle tout avec la touche Alt droite comme touche d’« activation des raccourcis »
En la maintenant enfoncée et en appuyant sur une touche alphabétique, je fais défiler les instances de l’application correspondante. Par exemple, Alt+C bascule vers une fenêtre VS Code, et les combinaisons Alt+F ouvrent une nouvelle instance d’application, comme une nouvelle fenêtre Chrome avec un profil donné. Alt+chiffre peut être assigné à la fenêtre actuellement au premier plan, et en tapotant Alt on active un mode d’édition qui permet d’assigner la fenêtre actuelle à une touche numérique. En mode édition, H/J/K/L deviennent les touches de navigation haut/bas/gauche/droite, ce qui rend le changement d’application beaucoup plus rapide
Le script qui m’a le plus marqué est celui que j’avais trouvé et modifié à l’époque où je jouais à Diablo 3. Je commençais à avoir des problèmes de trouble musculosquelettique lié aux mouvements répétitifs parce que j’appuyais trop fort la main de la souris sur le tapis, alors j’ai cherché un moyen de jouer à la manette
Ce script liait le déplacement analogique à un petit cercle autour du personnage, ce qui permettait de courir fluidement dans n’importe quelle direction, et une pression sur un bouton déplaçait la portée plus loin pour lancer des capacités à distance. Avec un peu de personnalisation selon la classe, ça marchait étonnamment bien