====== AutoHotKey ====== * [[http://www.autohotkey.com/|Official site (outdated)]] * [[http://www.autohotkey.com/docs/commands.htm|Toutes les fonctions]] * [[http://www.autohotkey.com/docs/Hotkeys.htm|Les hotkeys]] * [[http://www.autohotkey.com/docs/KeyList.htm|La codif des touches]] * [[http://ahkscript.org/|The new official site, community friendly ♥]] ===== Change default editor ===== [[http://ahkscript.org/boards/viewtopic.php?f=7&t=50#p28510|Source]] Il faut modifier les clés de registre windows : * Enregistrer le fichier suivant :Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command] @="notepad++.exe %1" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoHotkeyScript\Shell\Edit\Command] @="notepad++.exe %1" * Exécuter la commande suivante dans l'invite de commande (ou télécharger le fichier et double-cliquer :-) ) : regedit ahk.reg ===== Help ===== Un script plutôt maousse qui liste toutes les hotkeys actives : [[http://ahkscript.org/boards/viewtopic.php?f=6&t=96]]. Une fois lancé, ''Win'' + ''F1'' pour l'activer ;) NB : pour archive : {{::help.zip|code (v2.90)}}. ===== Macro creator ===== [[http://ahkscript.org/boards/viewtopic.php?f=6&t=143|Enregistrer et modifier des macros]]. Pretty handy. ===== GUI creator ===== Un [[http://ahkscript.org/boards/viewtopic.php?f=6&t=303|GUI editor]] pour AHK ! ===== Auto Reload ===== A insérer dans le script lui-même. Ne pas oublier d'adapter le nom du fichier ! ~^s:: ; Slf : Reload script on save WinGetActiveTitle, Reload If InStr(Reload, "myscript.ahk") Reload Return Fonctionne avec SciTE4AutoHotkey et Notepad++ at least. ===== Syntaxe ===== ==== Affectation ==== AHK supporte 2 syntaxe mutuellement exclusives pour l'affectation de variables. Mixer les 2 peut-être utile, mais c'est à utiliser à vos risques et périls. MyVar = Ceci est ma valeur ; Ceci est ma valeur MyVar := "Ceci est ma valeur" ; Ceci est ma valeur Rep := RegexReplace(Myvar, ".* (e\w+).*", "Match = $1") ; Match = est Rep := RegexReplace(%Myvar%, ".* (e\w+).*", "Match = $1") ; Erreur !!! car l'interpréteur va remplacer %Myvar% par Ceci est ma valeur, ce qui va rendre la commande invalide ! ==== HotKeys ==== * [[http://www.autohotkey.com/docs/KeyList.htm|KeyList]] * [[http://www.autohotkey.com/docs/Hotkeys.htm|Hotkeys]] Astuces : * La key history view donne toutes les infos. Pour le voir : Clic droit sur icon tray AHK > Open > Ctrl-K puis taper les touches désirées entre deux F5. Cette fenêtre donne les codes VK, SC et Key, très utiles. * **ATTENTION** : Pour hotlinker '':'', '':::'' fonctionne mais sans aucun modifier. Pour utiliser des modifiers, utiliser le ScanCode ''SC034''. * ^ = Ctrl ! = Alt + = Shift * ''~'' laisse passer les frappes (elles ne sont pas "bloquées" par ahk) * Il y a une syntaxe pour des combinaisons arbitraires de touches : ''&''. Elle permet aussi d'uiliser les modifiers dans les cas particuliers. * Sur certains claviers, le ''Alt'' de droite est remplacé par un ''AltGr'' qui est perçu comme une ''LControl'' + ''Ralt''. Comme le ''Ralt'' n'existe pas physiquement, cela suffit à identifier un ''AltGr'', un équivalent de ''^!''. => Exemples : * faire un hotlink sur ''Ctrl'' + ''Alt'' + '':'' = ''RAlt & SC034::'' * faire un hotlink sur ''Ctrl'' + ''Alt'' + '' '' = ''RAlt & Space::'' ==== Functions ==== * [[http://www.autohotkey.com/docs/Functions.htm|Functions]] * [[https://ginkobox.fr/vamp/index.php?tag=autohotkey|Snippets]] Petit précis : MyFunc(ByRef Var1, ByRef Var2) { if (Var1 = "A") { Var3 := 5 * Var2 return Var3 } else if (Var1 = "B") return true else return false } ==== Clipboard ==== [[http://www.autohotkey.com/docs/misc/Clipboard.htm|Clipboard]] clipboard = my text ; Give the clipboard entirely new contents. clipboard = ; Empty the clipboard. clipboard = %clipboard% ; Convert any copied files, HTML, or other formatted text to plain text. clipboard = %clipboard% Text to append. ; Append some text to the clipboard. StringReplace, clipboard, clipboard, ABC, DEF, All ; Replace all occurrences of ABC with DEF (also converts the clipboard to plain text). ===== Travailler avec des buffers ===== Un design pattern qui marche assez bien consiste à sérialiser des données dans des buffers ficher séparés via une ou plusieurs HotKeys puis de les utiliser dans d'autres HotKeys. Ces buffers évitent d'avoir à développer une logique complexe de sérialisation/parsing tout en permettant de vérifier facilement les contenus bufferisés. __**/!\ NB /!\**__ : Faire un ''FileRead, MyVar, FileName.ext'' suivi d'un ''Send %MyVar%'' "brut" est à proscrire, AHK se met alors à déconner sérieusement en envoyant chaotiquement des séquences entières du script lui-même. Il faut soit passer une ''Loop, parse'' ou bien charger le contenu du fichier dans le ''clipboard'' puis faire un ''Send ^v'', très efficace ^^.