Functions > Keyboard >


HotKeySet

D�finit un raccourci clavier qui appelle une fonction utilisateur.

HotKeySet ( "key" [, "function"] )

Param�tre

key La combinaison de touches � utiliser comme raccourci clavier. M�me format que Send(). Voir Remarques.
function [optionnel] Le nom de la fonction � appeler lorsque la touche est press�e. Si cette valeur n'est pas sp�cifi�e, le raccourci pr�c�demment cr�� est effac�.

Valeur de retour

Succ�s: Retourne 1.
�chec: Retourne 0.

Remarques

Il est recommand� d'utiliser les touches/caract�res minuscules (c'est-�-dire "b" et pas "B") lors de la d�finition des raccourcis clavier pour �viter les erreurs dues � certaines dispositions de clavier dont les touches majuscules et minuscules peuvent �tre mapp�s diff�remment.

Les claviers avec 102 touches, comme le clavier Hungarian, n�cessite l'utilisation de "{OEM_102}" pour capturer la touche "�".

Si deux scripts AutoIt utilisent les m�mes raccourcis clavier, vous devriez �viter de faire fonctionner ces scripts simultan�ment, le second script ne peut pas saisir le raccourci clavier � moins que le premier script termine ou annule l'enregistrement du raccourci avant la d�finition du raccourci du deuxi�me script. Si les scripts utilisent des GUI, alors envisagez d'utiliser GUISetAccelerators car ces touches ne sont actives que lorsque la GUI parent est active.

L'appui sur un raccourci clavier interrompt g�n�ralement la fonction ou l'instruction en cours dans le script, et ex�cute la fonction d�finie jusqu'� ce que celle-ci se termine ou qu'elle soit interrompue. Les exceptions sont les suivantes :
1) Si la fonction en cours est une fonction "bloquante", l'appui sur le raccourci clavier est mis en attente puis trait� d�s que la fonction bloquante se termine. MsgBox() et FileSelectFolder() sont des exemples de fonctions bloquantes. Essayez le comportement de Shift-Alt-d dans l'exemple.
2) Si vous avez mis le script en pause par un clic sur l'ic�ne AutoIt de la zone de notification, tous les raccourcis clavier utilis�s pendant cette pause sont ignor�s.

Les combinaisons suivantes ne peuvent pas �tre d�finies:

ASC nnnn Ne peut pas �tre utilis� avec Send(). Elle utiliserait le premier caract�re "A" comme Send() fait quand "{...}" est invalide.
Ctrl+Alt+Delete Raccourci r�serv� par Windows.
F12 Raccourci �galement r�serv� par Windows, selon son API.
"Touche Entr�e du clavier num�rique" A la place, utilisez {Enter} qui capture les deux touches "Entr�e" du clavier.
Win+B,D,E,F,L,M,R,U; et Win+Shift+M Ce sont des raccourcis int�gr�s � Windows. Note: Win+B et Win+L sont probablement r�serv�s sur Windows XP et sup�rieur.
Alt, Ctrl, Shift, Win Ce sont les touches de modification elles-m�mes!
Autres Tout raccourci clavier global qu'un utilisateur a d�fini par une application tierce, et toute combinaison de deux "touches de base" ou plus telle que '{F1}{F2}' et n'importe qu'elle touche de la forme '{LALT}' ou '{ALTDOWN}'.

Lorsque vous d�finissez un raccourci clavier, AutoIt capture les appuis de touche sans les faire passer � l'application active en cours, avec une exception: les touches de verrouillage (NumLock, CapsLock, et ScrollLock) basculeront toujours leur �tat respectif!
Pour Send() une combinaison de touches d�clenchera un �v�nement HotKeySet(), utilisez ControlSend(), ou annulez l'enregistrement de l'�v�nement HotKeySet(), sinon, l'�v�nement Send() provoquera une boucle infinie.

; Capture et envoi d'un appui de touche
HotKeySet("{Esc}", "captureEsc")
Func captureEsc()
    ; ... peut faire des actions ici
    HotKeySet("{Esc}")
    Send("{Esc}")
    HotKeySet("{Esc}", "captureEsc")
EndFunc ;==>captureEsc
La fonction appel�e ne peut pas recevoir de param�tres. Ils seront ignor�s.

La macro @HotKeyPressed peut �tre utilis�e � l'int�rieur de la fonction pour traiter diff�rentes touches dans la m�me fonction.

En relation

GUISetAccelerators, Send

Exemples

Exemple 1


#include <MsgBoxConstants.au3>

; Appuyez sur Echap pour terminer le script, Pause/Break pour "pause"

Global $g_bPaused = False, $g_bStop = False

HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage")  ; Shift-Alt-d

While Not $g_bStop
    Sleep(100)
WEnd

Func TogglePause()
    $g_bPaused = Not $g_bPaused
    While $g_bPaused
        Sleep(100)
        ToolTip('Script en "Pause"', 0, 0)
    WEnd
    ToolTip("")
EndFunc   ;==>TogglePause

Func Terminate()
    $g_bStop = True
EndFunc   ;==>Terminate

Func ShowMessage()
    MsgBox($MB_SYSTEMMODAL, "", "Ceci est un message.")
EndFunc   ;==>ShowMessage


Exemple 2


#include <MsgBoxConstants.au3>

; Appuyez sur Echap pour terminer le script, Pause/Break pour "pause"

Global $g_bPaused = False, $g_bStop = False

HotKeySet("{PAUSE}", "HotKeyPressed")
HotKeySet("{ESC}", "HotKeyPressed")
HotKeySet("+!d", "HotKeyPressed") ; Shift-Alt-d

While Not $g_bStop
    Sleep(100)
WEnd

Func HotKeyPressed()
    Switch @HotKeyPressed ; Le dernier raccourci utilis�.
        Case "{PAUSE}" ; la cha�ne est le raccourci {PAUSE}.
            $g_bPaused = Not $g_bPaused
            While $g_bPaused
                Sleep(100)
                ToolTip('Script en "Pause"', 0, 0)
            WEnd
            ToolTip("")

        Case "{ESC}" ; La cha�ne est le raccourci {ESC}.
            $g_bStop = True

        Case "+!d" ; La cha�ne est le raccourci Shif-Alt-d.
            MsgBox($MB_SYSTEMMODAL, "", "Ceci est un message.")

    EndSwitch
EndFunc   ;==>HotKeyPressed