핫키 (마우스, 조이스틱 그리고 키보드 단축키)

목차

소개와 간단한 예제

핫키는 종종 단축키라고 지칭됩니다. 쉽게 한 행위를 촉발시킬 수 있기 때문입니다 (예를 들어 프로그램이나 키보드 매크로를 기동합니다). 다음 예제에서, 핫키 Win+N은 노트패드를 기동하도록 구성됩니다. 파운드 사인[#]은 Win를 나타냅니다. 이것은 수식키(modifier)로 알려져 있습니다:

#n::
Run Notepad
return

위의 마지막 줄에서 return은 핫키를 끝내는 기능을 합니다. 그렇지만, 핫키가 오직 한 줄만 실행할 필요가 있다면, 이 줄은 겹-쌍점의 오른쪽에 나열할 수 있습니다. 다시 말해, return문이 묵시적으로 있습니다:

#n::Run Notepad

핫키에 하나 이상의 수식자를 사용하려면, 그것들을 연속적으로 나열합니다 (순서는 문제가 안됩니다). 다음 예제는 ^!s를 사용하여 Ctrl+Alt+S를 나타냅니다:

^!s::
Send Sincerely,{enter}John Smith  ; 이 줄은 키눌림을 활성 (가장 앞쪽) 창에 보냅니다.
return

Hotkey Modifier Symbols

다음 수식키 심볼을 사용하여 핫키를 정의할 수 있습니다:

심볼 설명
#

Win (윈도우즈 로고 키).

[v1.0.48.01+]: For Windows Vista and later, hotkeys that include Win (e.g. #a) will wait for Win to be released before sending any text containing an L keystroke. 이 덕분에 그런 핫키 안에서 Send를 사용하더라도 PC가 잠기지 않습니다. 이 행위는 SendPlay (필요하지 않으므로) 그리고 맹목 모드를 제외하고 모든 전송 모드에 적용됩니다. [v1.1.29+]: Text mode is also excluded.

Note: Pressing a hotkey which includes Win may result in extra simulated keystrokes (Ctrl by default). See #MenuMaskKey.

!

Alt

Note: Pressing a hotkey which includes Alt may result in extra simulated keystrokes (Ctrl by default). See #MenuMaskKey.

^ Ctrl
+ Shift
& 앰퍼센트를 두 개의 키 사이 또는 마우스 버튼에 사용하면 그들을 조합해 맞춤 핫키를 만들 수 있습니다. 자세한 것은 아래를 참조합니다.
< 한 쌍중에 왼쪽 키를 사용합니다. 예를 들어 <!a는 !a와 같습니다. 왼쪽 Alt 키만 행위를 촉발시킨다는 점만 다릅니다.
> 한 쌍중에 오른쪽 키를 사용합니다.
<^>!

AltGr (alternate graph, or alternate graphic). 키보드 레이아웃에 오른쪽-Alt 말고 AltGr가 있다면, 이 일련의 심볼은 보통 AltGr을 나타내는 데 사용할 수 있습니다. 예를 들어:

<^>!m::MsgBox AltGr+m을 눌렀습니다.
<^<!m::MsgBox LeftControl+LeftAlt+m을 눌렀습니다.

다른 방법으로, AltGr 자체를 핫키로 만들려면, 다음 핫키를 사용하십시오 (위에 보여준 것과 같은 핫키가 필요 없습니다):

LControl & RAlt::MsgBox AltGr 자체를 눌렀습니다.
*

와일드카드: 추가 수식자가 눌려 있더라도 핫키를 촉발시킵니다. 이것은 종종 키나 버튼의 리맵핑과 함께 사용됩니다. 예를 들어:

*#c::Run Calc.exe  ; Win+C, Shift+Win+C, Ctrl+Win+C, 등등은 모두 이 핫키를 촉발시킵니다.
*ScrollLock::Run Notepad  ; ScrollLock을 누르면 이 핫키는 수식 키가 눌려 있더라도 촉발됩니다.

Wildcard hotkeys always use the keyboard hook, as do any hotkeys eclipsed by a wildcard hotkey. For example, the presence of *a:: would cause ^a:: to always use the hook.

~

핫키가 촉발되면, 그 키의 고유 기능은 불능이 됩니다 (시스템에 보이지 않습니다). 아래의 두 예제에서 , 사용자가 마우스 버튼을 클릭하면 활성 창으로 전송됩니다:

~RButton::MsgBox 오른쪽 마우스 버튼을 클릭했습니다.
~RButton & C::MsgBox 오른쪽 마우스 버튼을 누를 채로 C를 눌렀습니다.

다른 접두 심볼과 다르게, 틸드 접두 심볼은 어떤 핫키의 변형에는 나타나는 것이 허용됩니다. 그렇지만, 꺼지지 않았거나 보류된 맞춤 조합 핫키의 접두 키에 틸드가 적용되면, 모든 키조합에 대하여 그 접두 키의 행위에 영향을 미칩니다.

알트-탭을 대체하는 특수한 핫키는 언제나 틸드 접두 심볼을 무시합니다.

[v1.1.14+]: 틸드 접두 심볼이 그 자신도 핫키로 사용되는 맞춤 수식 키에 적용되면 (접두 키), 그 핫키는 키를 뗄 때까지 기다리는 대신에 키가 눌릴 때 촉발됩니다. 예를 들어, 위의 ~RButton 핫키는 버튼이 눌리자 마자 촉발됩니다. [v1.1.14] 이전이라면 (틸드 접두 심볼이 없으므로), 버튼을 떼자마자 촉발되었습니다. 그러나 RButton & C 조합이 활성화되어 있지 않을 경우에만 촉발되었습니다.

틸드 접두 심볼이 맞춤 조합 핫키에만 적용되고 비-맞춤 핫키에는 적용되지 않으면, 그 핫키의 고유 기능이 여전히 막혀 있습니다. 예를 들어, 아래의 스크립트에서 Menu를 누르면 툴팁을 보여주고 문맥 메뉴는 촉발시키지 않습니다:

AppsKey::ToolTip 창을 순회하려면 < 또는 >을 누릅니다.
AppsKey Up::ToolTip
~AppsKey & <::Send !+{Esc}
~AppsKey & >::Send !{Esc}

If at least one variant of a keyboard hotkey has the tilde modifier, that hotkey always uses the keyboard hook.

$

이것은 주로 스크립트가 Send 명령어를 사용하여, 핫키 자체를 구성하는 키들을 전송할 경우에만 필요합니다. 그렇지 않으면 핫키 자체가 촉발될 가능성이 있습니다. $ 접두 심볼은 강제로 키보드 갈고리가 이 핫키를 구현하는데 사용되도록 만듭니다. 그 부작용으로 Send 명령어는 그 핫키를 촉발시키지 못합니다. $ 접두 심볼은 이 핫키가 정의된 위쪽 어딘가에 #UseHook을 지정하는 것과 동등합니다.

$ 접두 심볼은 마우스 핫키에는 아무 효과가 없습니다. 왜냐하면 마우스 핫키는 언제나 마우스 갈고리를 사용하기 때문입니다. 또 이미 키보드 갈고리를 요구하는 핫키에도 아무 효과가 없습니다. 여기에는 tilde (~) 또는 wildcard (*) 수식자를 가진 모든 핫키, 키-뗌 핫키와 맞춤 조합 핫키가 포함됩니다. To determine whether a particular hotkey uses the keyboard hook, use ListHotkeys.

[v1.1.06+]: #InputLevelSendLevel를 사용하면 Send 명령어로 촉발될 핫키와 핫스트링을 제어할 수 있습니다.

UP

단어 UP이 핫키의 이름 다음에 오면 그 핫키는 누를 때가 아니라 뗄 때 촉발됩니다. The following example remaps the left Win to become the left Ctrl:

*LWin::Send {LControl down}
*LWin Up::Send {LControl up}

"Up"은 다음 예제와 같이 보통의 핫키와 함께 사용할 수도 있습니다: ^!r Up::MsgBox Ctrl+Alt+R을 누르고 뗐습니다.. 또 핫키 조합과도 작동합니다 (예, F1 & e Up::)

한계: 1) "Up"은 조이스틱 버튼과 작동하지 않습니다; 그리고 2) 보통의/누름 짝이 없이 "Up" 핫키 하나만 사용하면 그 키를 완전히 점령합니다. 그 키는 누를 수 없습니다. 이를 피하는 한 가지 방법은 틸드 접두 심볼을 추가하는 것입니다 (예, ~LControl up::)

"Up" hotkeys and their key-down counterparts (if any) always use the keyboard hook.

관련해서 한 마디 하자면, 위와 비슷한 테크닉은 핫키를 접두 키로 만드는 것입니다. 핫키를 뗄 때 촉발되지만, 다른 키를 누르지 않는 한, 누르고 있는 동안에만 촉발된다는 장점이 있습니다. 예를 들어:

LControl & F1::return  ; 왼쪽 콘트롤 키를 접두 키로 만듭니다.  "&" 앞에 한 번만 사용하면 됩니다.
LControl::MsgBox 다른 키를 수정하는 데 사용하지 않고 LControl를 뗐습니다.

주의: (키보드 키와 마우스/조이스틱 버튼의 완전한 목록은 키 목록을 참조하십시오)

다중 핫키를 수직으로 쌓으면 같은 행위를 수행하게 할수 있습니다. 예를 들어:

^Numpad0::
^Numpad1::
MsgBox Control+Numpad0이나 Control+Numpad1를 누르면 이 메시지가 화면에 보입니다.
return

키 또는 키-조합을 전체 시스템에 대하여 불능화할 수 있습니다. 아무것도 하지 않도록 만들면 됩니다. The following example disables the right-side Win:

RWin::return

문맥-감지 핫키

#IfWinActive/Exist#If 지시어를 사용하면 특정 조건에 따라 핫키가 다른 행위를 수행하게 (또는 전혀 못하게) 만들 수 있습니다. 예를 들어:

#IfWinActive ahk_class Notepad
^a::MsgBox 노트패드가 활성상태인 동안 Ctrl-A를 눌렀습니다. 다른 창에 Ctrl-A를 누르면 Ctrl-A 키눌림이 그 창으로 전송됩니다.
#c::MsgBox 노트패드가 활성화되어 있는 동안 Win-C를 눌렀습니다.

#IfWinActive
#c::MsgBox 노트패드가 아닌 다른 창이 활성 상태인 동안 Win-C를 눌렀습니다.

#If MouseIsOver("ahk_class Shell_TrayWnd") ; For MouseIsOver, see #If example 1.
WheelUp::Send {Volume_Up}     ; 태스크바 위에서 휠을 돌립니다: 볼륨을 높이거나/내립니다.
WheelDown::Send {Volume_Down} ;

Custom Combinations

Normally shortcut key combinations consist of optional prefix/modifier keys (Ctrl, Alt, Shift and LWin/RWin) and a single suffix key. The standard modifier keys are designed to be used in this manner, so normally have no immediate effect when pressed down.

A custom combination of two keys (including mouse but not joystick buttons) can be defined by using " & " between them. Because they are intended for use with prefix keys that are not normally used as such, custom combinations have the following special behavior:

Note: For combinations with standard modifier keys, it is usually better to use the standard syntax. For example, use <+s:: rather than LShift & s::.

아래의 예에서, Numpad0를 누른 채로 두 번째 키를 누르면 핫키가 촉발됩니다:

Numpad0 & Numpad1::MsgBox Numpad0을 누르고 있는 동안 Numpad1을 눌렀습니다.
Numpad0 & Numpad2::Run Notepad

The prefix key loses its native function: In the above example, Numpad0 becomes a prefix key; but this also causes Numpad0 to lose its original/native function when it is pressed by itself. 이를 피하기 위해, 스크립트는 Numpad0가 새 행위를 수행하도록 구성할 수 있습니다. 예를 들어 다음과 같이:

Numpad0::WinMaximize A   ; 활성/전경 창을 최대화합니다.
Numpad0::Send {Numpad0}  ; Numpad0를 떼면 Numpad0 키눌림을 생산하도록 만듭니다. 아래의 주석을 참조하십시오.

Fire on release: The presence of one of the above custom combination hotkeys causes the release of Numpad0 to perform the indicated action, but only if you did not press any other keys while Numpad0 was being held down. [v1.1.14+]: 이 행위를 피할 수 있습니다. 틸드 접두 심볼을 두 핫키중 하나에 적용하면 됩니다.

Modifiers: Unlike a normal hotkey, custom combinations act as though they have the wildcard (*) modifier by default. For example, 1 & 2:: will activate even if Ctrl or Alt is held down when 1 and 2 are pressed, whereas ^1:: would be activated only by Ctrl+1 and not Ctrl+Alt+1.

Combinations of three or more keys are not supported. Combinations which your keyboard hardware supports can usually be detected by using #If and GetKeyState(), but the results may be inconsistent. 예를 들어:

; Press AppsKey and Alt in any order, then slash (/).
#if GetKeyState("AppsKey", "P")
Alt & /::MsgBox Hotkey activated.

; If the keys are swapped, Alt must be pressed first (use one at a time):
#if GetKeyState("Alt", "P")
AppsKey & /::MsgBox Hotkey activated.

; [ & ] & \::
#if GetKeyState("[") && GetKeyState("]")
\::MsgBox

Keyboard hook: Custom combinations involving keyboard keys always use the keyboard hook, as do any hotkeys which use the prefix key as a suffix. For example, a & b:: causes ^a:: to always use the hook.

Other Features

NumLock, CapsLock, 그리고 ScrollLock: 이런 키들은 강제로 언제나 켜거나("AlwaysOn") 언제나 끌("AlwaysOff")수 있습니다. 예를 들어: SetNumLockState AlwaysOn.

익스플로러의 핫키 오버라이딩하기: Win+E (#e) 그리고 Win+R (#r) 같은 윈도우즈 내장 핫키는 개별적으로 오버라이드할 수 있습니다. 그냥 스크립트에서 거기에 행위를 할당하기만 하면 됩니다. 자세한 것은 오버라이드 페이지를 참조하십시오.

Alt-Tab 대안: 핫키는 알트-탭 대신에 다른 수단을 제공할 수 있습니다. 예를 들어, 다음의 두 핫키로 오른 손으로 알트-탭을 수행할 수 있습니다:

RControl & RShift::AltTab  ; 오른쪽 콘트롤 키를 누른 채로 오른쪽-쉬프트를 반복적으로 눌러 앞으로 이동합니다.
RControl & Enter::ShiftAltTab  ; 오른쪽 콘트롤 키를 뗄 필요도 없이, 엔터를 눌러 반대방향으로 이동합니다.

더 자세한 것은 Alt-Tab을 참조하십시오.

마우스 휠 핫키

마우스 휠을 돌릴 때 촉발되는 핫키는 WheelDown과 WheelUp이라는 키 이름을 통하여 지원합니다. 다음은 마우스 휠 핫키의 몇 가지 예입니다:

MButton & WheelDown::MsgBox 가운데 버튼을 누르고 있는 동안 마우스 휠을 돌렸습니다.
^!WheelUp::MsgBox Control+Alt를 누르고 있는 동안 휠을 위로 돌렸습니다.

[v1.0.48+]: WheelLeft and WheelRight are also supported, but have no effect on operating systems older than Windows Vista. Some mice have a single wheel which can be scrolled up and down or tilted left and right. Generally in those cases, WheelLeft or WheelRight signals are sent repeatedly while the wheel is held to one side, to simulate continuous scrolling. This typically causes the hotkeys to execute repeatedly.

[v1.0.43.03+]: 내장 변수 A_EventInfo에는 휠을 회전한 양이 담깁니다. 전형적으로 1이지만, A_EventInfo는 다음과 같은 상황에서 1 보다 더 클 수 있습니다:

마우스 휠에 아주 유용한 핫키로 창의 텍스트를 스크롤하는 대안 모드와 관련되어 있습니다. For example, the following pair of hotkeys scrolls horizontally instead of vertically when you turn the wheel while holding down the left Ctrl:

~LControl & WheelUp::  ; 왼쪽으로 스크롤 합니다.
ControlGetFocus, fcontrol, A
Loop 2  ; <-- 이 값을 증가시키면 더 빨리 스크롤됩니다.
    SendMessage, 0x0114, 0, 0, %fcontrol%, A  ; 0x0114은 WM_HSCROLL이고 그 다음에 0은 SB_LINELEFT입니다.
return

~LControl & WheelDown::  ; 오른쪽으로 스크롤합니다.
ControlGetFocus, fcontrol, A
Loop 2  ; <-- 이 값을 증가시키면 더 빨리 스크롤됩니다.
    SendMessage, 0x0114, 1, 0, %fcontrol%, A  ; 00x0114은 WM_HSCROLL이고 그 다음에 1이면 SB_LINERIGHT입니다.
return

마지막으로, 마우스 휠 핫키는 오직 누름-이벤트만 발생시키므로 (뗌-이벤트 없음), 키-뗌 핫키로 사용할 수 없습니다.

핫키 팁 그리고 논평

각 넘패드 키마다 NumLock의 상태에 따라 두개의 다른 핫키 서브루틴을 기동시킬 수 있습니다. Alternatively, a numpad key can be made to launch the same subroutine regardless of the state. 예를 들어:

NumpadEnd::
Numpad1::
MsgBox, 이 핫키는 NumLock의 상태와 관계없이 기동됩니다.
return

틸드 (~) 연산자접두 키와 함께 한 번이라도 사용되면, 모든 조합에 대하여 그 접두 키의 행위가 바뀝니다. 예를 들어, 아래의 두 핫키 모두, 두 정의 중에 하나만 틸드가 포함되어 있음에도 불구하고 활성 창은 모두 오른쪽 클릭을 받습니다:

~RButton & LButton::MsgBox 우버튼을 누르고 있는 동안 왼버튼을 눌렀습니다.
RButton & WheelUp::MsgBox 우버튼을 누르고 있는 동안 휠을 위로 돌렸습니다.

Suspend 명령어는 임시로 모든 핫키를 불능화할 수 있습니다. 단, 여러분이 직접 면제한 핫키는 예외입니다. 더 선택의 범위를 넓히려면, #IfWinActive/Exist를 사용하십시오.

Hotkey 명령어를 수단으로 하여, 스크립트가 실행중인 동안 핫키를 동적으로 생성할 수 있습니다. Hotkey 명령어는 또 스크립트에 이미 존재하는 핫키들을 개별적으로 수정하거나 불능으로 만들거나 활성화할 수 있습니다..

조이스틱 핫키는 현재 ^ (Ctrl)과 # (Win) 같은 수식 접두 심볼을 지원하지 않습니다. 그렇지만, GetKeyState를 사용하면 다음 예제에 보여주는 바와 같이 그 효과를 흉내낼 수 있습니다:

Joy2::
if not GetKeyState("Control")  ; 왼쪽 콘트롤키 오른쪽 콘트롤 키 눌 다 눌려 있지 않습니다.
    return  ; 즉, 아무것도 하지 않습니다.
MsgBox 콘트롤 키를 누르고 있는 동안 첫 번째 조이스틱의 두 번째 버튼을 눌렀습니다.
return

핫키가 계속 진행하기 위해 자신의 수식 키가 떼어지기를 기다려야할 경우가 있습니다. 다음 예제를 살펴 보겠습니다:

^!s::Send {Delete}

Ctrl+Alt+S를 누르면 시스템이 마치 Ctrl+Alt+Del를 누른 것처럼 행동합니다 (시스템이 Ctrl-Alt-Delete를 공격적으로 탐지하기 때문입니다). 이를 돌아가려면 KeyWait를 사용하여 키를 떼기를 기다립니다; 예를 들어:

^!s::
KeyWait Control
KeyWait Alt
Send {Delete}
return

#z::와 같은 핫키 라벨이 "Invalid Hotkey"와 같은 에러를 야기하는 경우, 시스템의 키보드 레이아웃/언어에 지정된 문자가 있을 수 있습니다 (이 경우는 "Z"). 키보드 레이아웃에 존재하지 않는 다른 문자를 사용하십시오.

핫키 라벨을 Gosub이나 Goto의 목표로 삼을 수 있습니다. 예를 들어: Gosub ^!s. See Labels for related details.

핫키의 흔한 사용 사례 하나는 예를 들어 일련의 키눌림이나 마우스 클릭 같이 반복 행위를 시작하고 멈추는 것입니다. 이를 보여주는 예는 다음 FAQ 주제를 참조하십시오.

마지막으로, 각 스크립트는 멀티-쓰레드와 비슷합니다. 덕분에 이전의 핫키 서브루틴이 여전히 실행중이더라도 새 핫키를 기동시킬 수 있습니다. 예를 들어, 현재 핫키에 의하여 메시지 상자가 화면에 보여지고 있더라도 새 핫키를 기동시킬 수 있습니다.

Alt-Tab 핫키

Alt-Tab hotkeys simplify the mapping of new key combinations to the system's Alt-Tab hotkeys, which are used to invoke a menu for switching tasks (activating windows).

Each Alt-Tab hotkey must be either a single key or a combination of two keys, which is typically achieved via the ampersand symbol (&). 다음 예제에서 오른쪽 Alt를 누른 채로 J 또는 K를 눌러 알트-탭 메뉴를 항해합니다:

RAlt & j::AltTab
RAlt & k::ShiftAltTab

AltTabShiftAltTab은 두 개의 특수한 명령어입니다. 같은 줄에 핫키로 사용될 때만 인지됩니다. 다음은 완전한 목록입니다:

AltTab: 알트-탭 메뉴가 보이면, 그 안에서 앞으로 이동합니다. Otherwise, display the menu (only if the hotkey is a combination of two keys; otherwise, it does nothing).

ShiftAltTab: 위와 같지만 메뉴에서 역방향으로 이동합니다.

AltTabMenu: Show or hide the alt-tab menu.

AltTabAndMenu: 알트-탭 메뉴가 보이면, 그 안에서 앞으로 이동합니다. 그렇지 않으면 메뉴를 화면에 보여줍니다.

AltTabMenuDismiss: 알트-탭 메뉴를 닫습니다.

위의 예를 시연하기 위하여, 마우스 휠이 알트-탭을 완전해 대체하도록 만들 수 있습니다. 다음 핫키가 효과를 발휘하면, 가운데 버튼을 클릭해 메뉴를 보여주고 휠을 돌려서 그 안을 항해합니다:

MButton::AltTabMenu
WheelDown::AltTab
WheelUp::ShiftAltTab

To cancel the Alt-Tab menu without activating the selected window, press or send Esc. In the following example, you would hold the left Ctrl and press CapsLock to display the menu and advance forward in it. Then you would release the left Ctrl to activate the selected window, or press the mouse wheel to cancel. Define the AltTabWindow window group as shown below before running this example.

LCtrl & CapsLock::AltTab
#IfWinExist ahk_group AltTabWindow  ; 알트-탭 메뉴가 화면에 보인다는 사실을 알려줍니다.
*MButton::Send {Blind}{Escape}  ; The * prefix allows it to fire whether or not Alt is held down.
#If

If the script sent {Alt Down} (such as to invoke the Alt-Tab menu), it might also be necessary to send {Alt Up} as shown in the example further below.

총평

현재, 모든 특수 알트-탭 행위는 위의 예제와 같이 직접적으로 핫키에 할당해야 합니다 (즉, 명령어처럼 사용할 수 없습니다). #IfWin 또는 #If에 영향을 받지 않기 때문입니다.

An alt-tab action may take effect on key-down and/or key-up regardless of whether the up keyword is used, and cannot be combined with another action on the same key. For example, using both F1::AltTabMenu and F1 up::OtherAction() is unsupported.

맞춤 알트-탭 행위는 핫키를 통해서도 만들 수 있습니다. As the identity of the alt-tab menu differs between OS versions, it may be helpful to use a window group as shown below. For the examples above and below which use ahk_group AltTabWindow, this window group is expected to be defined in the auto-execute section. Alternatively, ahk_group AltTabWindow can be replaced with the appropriate ahk_class for your system.

GroupAdd AltTabWindow, ahk_class MultitaskingViewFrame  ; Windows 10
GroupAdd AltTabWindow, ahk_class TaskSwitcherWnd  ; Windows Vista, 7, 8.1
GroupAdd AltTabWindow, ahk_class #32771  ; Older, or with classic alt-tab enabled

다음 예제에서, F1을 누르면 메뉴를 화면에 보여주고 그 안에서 앞으로 이동합니다. 다음 F2를 누르면 선택된 창을 활성화합니다, 또는 Esc를 누르면 취소됩니다:

*F1::Send {Alt down}{tab} ; 이 경우 별표가 필요합니다.
!F2::Send {Alt up}  ; Alt 키를 뗍니다. 그러면 선택된 창이 활성화됩니다.
#IfWinExist ahk_group AltTabWindow
~*Esc::Send {Alt up}  ; When the menu is cancelled, release the Alt key automatically.
;*Esc::Send {Esc}{Alt up}  ; Without tilde (~), Escape would need to be sent.
#If

함수 핫키 [v1.1.20+]

하나 이상의 핫키를 함수에 할당할 수 있습니다. 다음 예제와 같이 그냥 핫키 라벨 바로 뒤에 정의하면 됩니다:

; Ctrl+Shift+O는 현재 폴더를 탐색기에 엽니다.
; Ctrl+Shift+E는 현재 파일이 선택된 폴더를 엽니다.
; SciTE와 Notepad++를 지원합니다.
^+o::
^+e::
    editor_open_folder() {
        WinGetTitle, path, A
        if RegExMatch(path, "\*?\K(.*)\\[^\\]+(?= [-*] )", path)
            if (FileExist(path) && A_ThisHotkey = "^+e")
                Run explorer.exe /select`,"%path%"
            else
                Run explorer.exe "%path1%"
    }

[v1.1.28+]: Hotstrings can also be defined this way. Multiple hotkeys or hotstrings can be stacked together to call the same function.

There must only be whitespace, comments or directives between the hotkey/hotstring labels or label and the function. Hotkey/hotstring labels defined this way are not visible to IsLabel(), Gosub or other commands; however, the auto-execute section ends at the first hotkey/hotstring even if it is assigned a function.

함수를 사용하면 얻는 큰 혜택은 지역 변수를 사용할 수 있다는 것입니다. 다른 목적으로 같은 변수를 두 개 이상의 핫키에서 사용할 때 충돌을 피할 수 있습니다. 또한 자체-문서화 핫키를 권장합니다. 위의 코드에서 함수 이름 자체가 핫키를 설명하고 있습니다.

핫키 명령어를 사용해도 함수나 함수 객체를 핫키에 할당할 수 있습니다.