AutoHotkey 소개 및 설치
AutoHotkey란
AutoHotkey(AHK)는 Windows 전용 키보드/마우스 자동화 도구다. 스크립트(.ahk 파일)를 작성하면 키보드 리맵(특정 키를 다른 키로 바꾸기), 단축키 등록, 반복 작업 자동화 등을 할 수 있다. 무료, 오픈소스.
- 공식 사이트: https://www.autohotkey.com
- 공식 문서 (v1): https://www.autohotkey.com/docs/v1/
- 공식 문서 (v2): https://www.autohotkey.com/docs/v2/
설치
- https://www.autohotkey.com 에서 다운로드
- 설치 시 v1.1 과 v2.0 중 선택 — 문법이 다르므로 주의
- v1.1: 레거시. 기존 스크립트/예제가 대부분 v1 기준
- v2.0: 최신. 문법이 더 깔끔하지만 v1과 호환 안 됨
- 설치 후
.ahk파일을 더블클릭하면 실행됨 (화면 우측 하단 시스템 트레이에 초록색H아이콘이 뜨면 실행 중)
기본 사용법
핫키란
AHK의 핵심 개념은 핫키(hotkey)다. "이 키를 누르면 → 이 동작을 해라"를 정의하는 것.
트리거키::동작트리거키::동작:: 를 기준으로 왼쪽이 누를 키, 오른쪽이 실행할 동작이다.
Modifier(조합키)란
Modifier는 다른 키와 함께 눌러서 동작을 바꾸는 키를 말한다. Ctrl, Alt, Shift, Win이 대표적. 예를 들어 Ctrl+C에서 Ctrl이 modifier다.
AHK에서는 modifier를 기호로 축약한다:
| 기호 | 의미 | 예시 |
|---|---|---|
! |
Alt | !F1 = Alt+F1 |
^ |
Ctrl | ^c = Ctrl+C |
+ |
Shift | +Enter = Shift+Enter |
# |
Win | #e = Win+E |
< |
왼쪽 | <! = 좌측 Alt |
> |
오른쪽 | >^ = 우측 Ctrl |
이 기호들을 조합해서 핫키를 만든다. 예:
; 좌측 Alt + ← 를 누르면 Home 키 입력
<!Left::SendInput, {Home}
; 좌측 Alt + → 를 누르면 End 키 입력
<!Right::SendInput, {End}; 좌측 Alt + ← 를 누르면 Home 키 입력
<!Left::SendInput, {Home}
; 좌측 Alt + → 를 누르면 End 키 입력
<!Right::SendInput, {End}읽는 법: <!Left = <(왼쪽) + !(Alt) + Left(←) → "좌측 Alt + 왼쪽 화살표"
SendInput, {Home}은 Home 키 입력을 보내라는 뜻. 중괄호 {}는 특수 키 이름을 감쌀 때 사용한다 ({Home}, {End}, {PgUp} 등).
핫키 동작 제어 접두사
modifier 기호 외에, 핫키의 동작 방식을 바꾸는 접두사도 있다:
| 접두사 | 의미 | 예시 |
|---|---|---|
~ |
원래 키 기능도 함께 실행 | ~LWin:: = Win 키 원래 기능 유지하면서 추가 동작 |
$ |
자기 자신의 SendInput에 반응하지 않게 방지 | $a::SendInput, b = 무한 루프 방지 |
스크립트 파일 구조
#SingleInstance Force ; 같은 스크립트가 이미 실행 중이면 교체 (중복 방지)
#InstallKeybdHook ; 좌/우 modifier를 구분하려면 필요 (<! vs >! 등)
; 좌측 Alt + ←/→ 로 Home/End 사용
<!Left::SendInput, {Home}
<!Right::SendInput, {End}#SingleInstance Force ; 같은 스크립트가 이미 실행 중이면 교체 (중복 방지)
#InstallKeybdHook ; 좌/우 modifier를 구분하려면 필요 (<! vs >! 등)
; 좌측 Alt + ←/→ 로 Home/End 사용
<!Left::SendInput, {Home}
<!Right::SendInput, {End};뒤는 주석(실행 안 됨)#으로 시작하는 줄은 스크립트 전체에 적용되는 설정(지시문)
자주 쓰는 명령어
| 명령어 | 설명 |
|---|---|
SendInput, {키} |
키 입력 전송 |
Send {Blind}{키} |
modifier 상태 유지한 채 키 전송 (아래 설명 참조) |
SetCapsLockState, AlwaysOff |
CapsLock 상태를 항상 꺼짐으로 고정 |
KeyWait, 키 |
해당 키가 떼질 때까지 대기 |
MsgBox, 텍스트 |
디버깅용 메시지 박스 팝업 |
Modifier 상태와 {Blind}
Modifier 상태란 키를 보내는 시점에 Ctrl, Alt, Shift, Win 키가 눌려 있는지 여부를 말한다.
기본적으로 SendInput은 modifier를 모두 뗀 상태에서 키를 전송한다. 예를 들어 Shift를 누른 채로 핫키가 발동해도, SendInput, {Home}은 Shift 없이 Home만 보낸다.
{Blind}를 붙이면 현재 눌린 modifier를 건드리지 않고 그대로 키를 보낸다. 예: Win 키를 누른 상태에서 Send {Blind}{vkE8}은 Win+vkE8으로 전송된다. [🔒 Internal Post] 스크립트가 이 원리를 이용한다.
시작프로그램 등록
.ahk 파일의 바로가기를 Windows 시작프로그램 폴더에 넣으면 부팅 시 자동 실행된다. PowerShell에서 바로가기를 만드는 방법:
$ws = New-Object -ComObject WScript.Shell
$shortcut = $ws.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\script-name.lnk")
$shortcut.TargetPath = "C:\path\to\script.ahk"
$shortcut.Save()$ws = New-Object -ComObject WScript.Shell
$shortcut = $ws.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\script-name.lnk")
$shortcut.TargetPath = "C:\path\to\script.ahk"
$shortcut.Save()또는 시작프로그램 폴더를 직접 열어서(Win+R → shell:startup) .ahk 파일의 바로가기를 수동으로 넣어도 된다.
한국어 키보드 주의사항
한국어 IME(입력기) 환경에서는 우측 Alt/Ctrl이 일반 modifier가 아닌 한/영, 한자 전환 전용키로 동작한다. Windows가 이 키들을 별도의 가상키코드(virtual key code — OS가 각 키를 식별하는 고유 번호)로 인식하기 때문에, AHK의 >!이나 >^ 접두사로는 잡을 수 없다:
| 물리 키 | Windows 인식 | AHK 접두사 | 가상키코드 |
|---|---|---|---|
| 우측 Alt | 한/영 전환 | >! 안 먹힘 |
vk15 |
| 우측 Ctrl | 한자 변환 | >^ 안 먹힘 |
vk19 |
따라서 >!Key나 >^Key 대신 가상키코드를 직접 사용해야 한다:
; 우측 Ctrl(한자키) + ↑ = PgUp
vk19 & Up::SendInput, {PgUp}; 우측 Ctrl(한자키) + ↑ = PgUp
vk19 & Up::SendInput, {PgUp}관련 문서
- [🔒 Internal Post]
- Windows 키 단축키 정리
- [🔒 Internal Post]