AutoHotKey
De Banane Atomic
Aller à la navigationAller à la recherche
Généralités
AutoHotKey
SciTE4AutoHotkey permet d'avoir la coloration syntaxique avec les fichiers ahk.
Liens
Send
Send | les caractères spéciaux sont transformés |
SendRaw | pas de transformation, envoie les caractères tels qu'ils sont écrits |
SendInput | plus rapide et plus fiable que Send |
SendPlay | similaire à SendInput, mais plus adapté pour les jeux vidéo |
Clavier
# | Windows |
! | Alt |
^ | Ctrl |
+ | Shift |
<^>! | Alt Gr |
Si une combinaison ne fonctionne pas avec + essayez la forme: Shift & key::Send {key} |
Pour les caractères spéciaux comme % → key::Send `% |
$ is usually only necessary if the script uses the Send command to send the keys that comprise the hotkey itself, which might otherwise cause it to trigger itself. |
Capture de la Souris
LButton | clique gauche |
RButton | clique droit |
MButton | clique roulette |
XButton1 | bouton 4 (doit être assigné à Browser_Back) |
XButton2 | bouton 5 (doit être assigné à Browser_Forward) |
XButton3 n'est pas implémenté car Windows ne supporte que 5 boutons. Il faut donc mapper ce 6ème boutons à une combinaison de touches et remapper ces touches à une action. |
Double-clique
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
; Double click ~LButton:: If (A_TimeSincePriorHotkey<400) and (A_PriorHotkey="~LButton") MsgBox You double Left clicked on something Return |
Générer des événements souris
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
; Clique gauche MouseClick, left ; Double clique MouseClick, left, , , 2 |
Mapping pour une application spécifique
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
; Si LibreOffice est actif, mapper le point du pavé numérique avec le point et non la virgule par défaut en FR IfWinActive ahk_class SALFRAME NumPadDot::SendInput . ; Si Firefox ou Notepad++ est actif If WinActive("ahk_class MozillaWindowClass") or WinActive("ahk_class Notepad++") { } ; A window's title can contain WinTitle anywhere inside it to be a match. SetTitleMatchMode, 2 |
Par défaut, l'expression doit correspondre au début du titre de la fenêtre. Si ahk_class est spécifié, l'expression doit correspondre exactement à la classe de la fenêtre. |
Désactiver / remapper les touches Caps Lock, Num Lock, Scroll Lock
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
; set the default state of the lock keys SetCapsLockState, off SetNumLockState, on SetScrollLockState, off ; disable them $NumLock::Return $ScrollLock::Return ; make the capslock key behave as menu/AppsKey CapsLock::AppsKey |
if else
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
if Variable ... else if (x > y) { ... ... } else ... |
Lire et écrire dans un fichier
; écriture dans %USERPROFILE%\AppData\Local\Temp\file.tmp "text" > %A_Temp%\file.tmp ; écriture sans saut de ligne "text" | Set-Content -NoNewline %A_Temp%\file.tmp ; lecture du fichier %USERPROFILE%\AppData\Local\Temp\file.tmp FileRead, FileContent, %A_Temp%\file.tmp ; lecture de la ligne 1 FileReadLine, FileLineOne, %A_Temp%\file.tmp, 1 |
Exécuter du code PowerShell, Batch
; Batch, écriture du résultat dans %USERPROFILE%\AppData\Local\Temp\result.tmp RunWait %Comspec% /c "commande batch" > %A_Temp%\result.tmp,,HIDE ; PowerShell, écriture du résultat dans %USERPROFILE%\AppData\Local\Temp\result.tmp RunWait powershell.exe "commande powershell" > %A_Temp%\result.tmp,,HIDE |
ScanCode
Clique-droit sur l'icone → Open → View → Key history and script info
Appuyer sur une touche → F5
Le code de la 2ème colonne correspond au ScanCode
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
SC02D::MsgBox, %A_ThisHotKey% was pressed. ; x |
Exemples
Fichier:AutoHotkey.svg | ; ctrl-w -> ctrl-z ^w::^z ; ctrl-q -> ctrl-a ^q::^a $F1::Send ^c ; copy $F2::Send ^v ; paste F12::Send !{F4} ; fermer fenêtre avec F12 ; clique-milieu -> clique gauche + ctrl-v MButton:: MouseClick SendInput ^v Return ; Alt-A select the whole line !a:: Send {Home} Send +{End} Return ; dans LibreOffice #IfWinActive ahk_class SALFRAME NumPadDot::SendInput . |
Copie la sélection dans le presse-papier
Fichier:AutoHotkey.svg | ~Lshift:: TimeButtonDown = %A_TickCount% ; Wait for it to be released Loop { Sleep 10 GetKeyState, LshiftState, Lshift, P if LshiftState = U ; Button has been released. break elapsed = %A_TickCount% elapsed -= %TimeButtonDown% if elapsed > 200 ; Button was held down long enough { x0 = A_CaretX y0 = A_CaretY Loop { Sleep 20 ; yield time to others GetKeyState keystate, Lshift IfEqual keystate, U, { x = A_CaretX y = A_CaretY break } } if (x-x0 > 5 or x-x0 < -5 or y-y0 > 5 or y-y0 < -5) { ; Caret has moved clip0 := ClipBoardAll ; save old clipboard ;ClipBoard = Send ^c ; selection -> clipboard ClipWait 1, 1 ; restore clipboard if no data IfEqual ClipBoard,, SetEnv ClipBoard, %clip0% } return } } ~LButton:: MouseGetPos, xx TimeButtonDown = %A_TickCount% ; Wait for it to be released Loop { Sleep 10 GetKeyState, LButtonState, LButton, P if LButtonState = U ; Button has been released. { If WinActive("Crimson Editor") and (xx < 25) ; Single Click in the Selection Area of CE { Send, ^c return } break } elapsed = %A_TickCount% elapsed -= %TimeButtonDown% if elapsed > 200 ; Button was held down too long, so assume it's not a double-click. { MouseGetPos x0, y0 ; save start mouse position Loop { Sleep 20 ; yield time to others GetKeyState keystate, LButton IfEqual keystate, U, { MouseGetPos x, y ; position when button released break } } if (x-x0 > 5 or x-x0 < -5 or y-y0 > 5 or y-y0 < -5) { ; mouse has moved clip0 := ClipBoardAll ; save old clipboard ;ClipBoard = Send ^c ; selection -> clipboard ClipWait 1, 1 ; restore clipboard if no data IfEqual ClipBoard,, SetEnv ClipBoard, %clip0% } return } } ; Otherwise, button was released quickly enough. Wait to see if it's a double-click TimeButtonUp = %A_TickCount% Loop { Sleep 10 GetKeyState, LButtonState, LButton, P ; Button has been pressed down again. if LButtonState = D break elapsed = %A_TickCount% elapsed -= %TimeButtonUp% ; No click has occurred within the allowed time, so assume it's not a double-click. if elapsed > 350 return } ; Button pressed down again, it's at least a double-click TimeButtonUp2 = %A_TickCount% Loop { Sleep 10 GetKeyState, LButtonState2, LButton, P ; Button has been released a 2nd time, let's see if it's a tripple-click. if LButtonState2 = U break } ; Button released a 2nd time TimeButtonUp3 = %A_TickCount% Loop { Sleep 10 GetKeyState, LButtonState3, LButton, P if LButtonState3 = D ; Button has been pressed down a 3rd time. break elapsed = %A_TickCount% elapsed -= %TimeButtonUp% if elapsed > 350 ; No click has occurred within the allowed time, so assume it's not a tripple-click. { ;Double-click Send, ^c return } } ; Tripple-click Sleep, 100 Send, ^c return ; Ctl+A = Select All, then Copy ~^a::Send, ^c |
Old
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
CopyToClipboard2() { ClipSaved := ClipboardAll ; Save the entire clipboard to a variable of your choice. Send ^c ; Copy the highlighted text to the clipboard ClipWait, 2 ; Wait for the clipboard to contain text. if ErrorLevel { MsgBox, The attempt to copy text onto the clipboard failed. return } ;MsgBox Control-C copied the following contents to the clipboard:`nüClipboardü global SecondClipboard SecondClipboard := Clipboard ; Assign the clipboard content to the variable sleep, 100 Clipboard := ClipSaved ; Restore the original clipboard ClipSaved := ; Free the memory in case the clipboard was very large } ~LButton:: if not (WinActive("ahk_class CabinetWClass") or WinActive("ahk_class Shell_TrayWnd") or WinActive("ahk_class Progman")) { MouseGetPos, cos_mousedrag_x, cos_mousedrag_y KeyWait LButton MouseGetPos, cos_mousedrag_x2, cos_mousedrag_y2 if (abs(cos_mousedrag_x2 - cos_mousedrag_x) > 10 or abs(cos_mousedrag_y2 - cos_mousedrag_y) > 10) { CopyToClipboard2() } else if (A_TimeSincePriorHotkey < 400) and (A_PriorHotkey = "~LButton") { if (A_TimeSincePriorHotkey < 400) and (A_PriorHotkey = "~LButton") { ;MsgBox You triple Left clicked on something CopyToClipboard2() } else { ;MsgBox You double Left clicked on something CopyToClipboard2() } } } Return XButton2:: StringReplace, SecondClipboard, SecondClipboard, `r, , All ;SendInput {LButton} SendInput {Click left} SendInput {Raw}üSecondClipboardü ; plus rapide que Send et SendRaw Return |
Alt Tab
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
; AltTab avec Ctrl + Backspace ctrl & backspace::AltTab |
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
; AltTab avec CapsLock CapsLock::AltTabAndMenu !LButton:: ; The ! prefix makes it fire while the Alt key is down (which it is if the alt-tab menu is visible). MouseClick, left Send {Alt up} return !Enter:: Send {Enter} Send {Alt up} return |
Contrôle du son avec la molette
Fichier:AutoHotkey.svg | +WheelUp::Send {Volume_Up 1} +WheelDown::Send {Volume_Down 1} |
Verrouiller
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
; Windows + Esc #Escape::DllCall("LockWorkStation") |
Print Screen
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
; Lancer SnippingTool avec la touche Print Screen PrintScreen::Run SnippingTool.exe |
Mot de passe sous Windows
C:\Windows\System32\drivers\etc\AutoHotkey.ahk |
#a:: RunWait, powershell.exe "pm get key1" | Set-Content -NoNewline %A_Temp%\pm.tmp,,HIDE FileReadLine, Result, %A_Temp%\pm.tmp, 1 FileDelete, %A_Temp%\pm.tmp SendRaw %Result% SendInput {Enter} Return |
%UserProfile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 |
New-Alias pm "C:\Users\[USER]\Documents\WindowsPowerShell\Scripts\PasswordsManager.ps1" |
C:\Users\[USER]\Documents\WindowsPowerShell\Scripts\PasswordsManager.ps1 |
[CmdletBinding()] Param ( [string] $Action = "help", [string] $Key ) $PasswordFilesPath = "$home\passwords" switch ($Action) { "help" { "Password Manager: > pm store <key> > pm get <key> > pm list" } "store" { if ([String]::IsNullOrEmpty($Key)) { "Merci de renseigner une clé pour le stockage du mot de passe." } else { $Credential = Get-Credential -Message "Enter password for $Key" -Username "-" $SecurePassword = $Credential.Password $SecureStringAsPlainText = $SecurePassword | ConvertFrom-SecureString $FilePath = Join-Path "$PasswordFilesPath" "$Key.txt" Set-Content $FilePath $SecureStringAsPlainText "Mot de passe enregistré pour la clé $Key." } } "get" { $FilePath = Join-Path "$PasswordFilesPath" "$Key.txt" if ([String]::IsNullOrEmpty($Key)) { "Merci de renseigner une clé pour le récupération du mot de passe." } elseif (Test-Path("$FilePath")) { $SecureStringAsPlainText = Get-Content "$FilePath" $SecurePassword = $SecureStringAsPlainText | ConvertTo-SecureString $Credential = New-Object PSCredential "-", $SecurePassword $PlainPassword = $Credential.GetNetworkCredential().Password $PlainPassword } else { "La clé $Key ne correspond à aucun mot de passe." } } "list" { #"Stored passwords: #" ls $PasswordFilesPath | % BaseName } default { "$Action is not a valid parameter." } } |
Stocker et récupérer un mot de passe
Installation
- après l'installation, redémarrer pour mettre à jour le menu contextuel New
- créer un script: clique-droit dans un dossier → New → AutoHotkey Script
- modifier le script
- double-cliquer sur le fichier pour l'associer, l’icône AutoHotKey apparaît dans la zone de notification
Exécuter un script au démarrage
- Copier le script
- Coller le raccourci (Paste shortcut) dans %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
Exécuter AutoHotKey au démarrage
- Menu Start → AutoHotKey → copier le raccourci
- Coller le raccourci (Paste shortcut) dans %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
Définir Notepad++ comme éditeur par défaut
HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command
(Default) = "C:\Program Files\Notepad++\notepad++.exe" "%1"
Coloration syntaxique
- Language → Define your language → Import → Notepad++ AutoHotKey Syntax Highlighting Dark.xml
- redémarrer