====== 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 ^^.