반응형

🎯 이 글에서 배우는 것: 키 재배치, CapsLock 활용, 특수 리매핑 기법
🔄 리매핑이란?
키 리매핑 = 어떤 키를 다른 키로 바꾸기
예를 들어 CapsLock을 Ctrl로 바꾸면, CapsLock을 누를 때마다 Ctrl이 눌립니다!
📝 기본 리매핑
가장 간단한 형태
a::b ; a를 누르면 b가 입력됨
실용 예제
; CapsLock을 Esc로 (Vim 유저 필수!)
CapsLock::Esc
; 오른쪽 Ctrl을 Enter로
RCtrl::Enter
; F1을 F2로
F1::F2
🔑 자주 쓰는 리매핑
CapsLock 활용 (가장 인기!)
CapsLock은 위치는 좋은데 거의 안 쓰는 키죠. 유용하게 바꿔봅시다:
; CapsLock → Ctrl (개발자 필수)
CapsLock::Ctrl
; CapsLock → Esc (Vim 사용자)
CapsLock::Esc
; CapsLock → Backspace (오타 수정용)
CapsLock::Backspace
그래도 CapsLock 기능이 필요하다면?
; Shift+CapsLock으로 원래 CapsLock 기능
+CapsLock::CapsLock
; CapsLock은 Ctrl로
CapsLock::Ctrl
⌨️ 수식키 리매핑
; 왼쪽 Alt와 왼쪽 Ctrl 교체
LAlt::LCtrl
LCtrl::LAlt
; 오른쪽 Alt를 Win키로
RAlt::RWin
주의사항
쌍방향 교체할 때 주의하세요:
; ⚠️ 이렇게 하면 무한 루프!
; a::b
; b::a
; ✅ 임시 키 사용 또는 특수 처리 필요
*a::Send("{Blind}{b}")
*b::Send("{Blind}{a}")
🎯 특정 프로그램에서만 리매핑
; 메모장에서만 F1을 저장(Ctrl+S)으로
#HotIf WinActive("ahk_exe notepad.exe")
F1::^s
#HotIf
; VS Code에서 Ctrl+; 를 Ctrl+/로 (주석 토글)
#HotIf WinActive("ahk_exe Code.exe")
^;::^/
#HotIf
🖱️ 마우스 버튼 리매핑
; 마우스 4번 버튼(뒤로)을 Ctrl+W(탭 닫기)로
XButton1::^w
; 마우스 5번 버튼(앞으로)을 Ctrl+T(새 탭)로
XButton2::^t
; 가운데 클릭을 더블클릭으로
MButton::Click 2
🔧 Blind 모드
다른 수식키 상태를 유지하면서 리매핑:
; Shift를 누른 상태에서도 제대로 작동
*CapsLock::Send("{Blind}{Ctrl down}")
*CapsLock up::Send("{Blind}{Ctrl up}")
Blind가 뭐죠?
{Blind}를 사용하면 현재 눌린 수식키(Ctrl, Alt, Shift)가 그대로 유지됩니다.
; Shift+CapsLock = Shift+Ctrl 효과
*CapsLock::Send("{Blind}{Ctrl}")
🎹 방향키 대체 (Vim 스타일)
CapsLock을 수식키로 사용해서 HJKL로 방향키 만들기:
; CapsLock + H/J/K/L = 방향키
#HotIf GetKeyState("CapsLock", "P")
h::Left
j::Down
k::Up
l::Right
#HotIf
; CapsLock 원래 기능 비활성화
CapsLock::return
더 완전한 버전
; CapsLock을 눌고 있을 때만 특수 기능
CapsLock & h::Send("{Left}")
CapsLock & j::Send("{Down}")
CapsLock & k::Send("{Up}")
CapsLock & l::Send("{Right}")
; CapsLock만 눌렀다 떼면 Esc
CapsLock::Send("{Esc}")
🔀 키 조합 리매핑
기본 조합
; Ctrl+;를 Ctrl+/로
^;::^/
; Win+A를 Alt+Tab으로
#a::!Tab
; Ctrl+Shift+V를 Ctrl+V로 (포맷 없이 붙여넣기)
^+v::^v
복잡한 조합
; Ctrl+Shift+C를 누르면 현재 줄 복사
^+c::{
Send("{Home}")
Send("+{End}")
Send("^c")
}
🎮 게임용 리매핑
#HotIf WinActive("Game Title") ; 게임 창에서만
; WASD를 화살표로 (에뮬레이터용)
w::Up
a::Left
s::Down
d::Right
; Space를 Z로 (점프→공격)
Space::z
#HotIf
📐 숫자패드 리매핑
; 숫자패드를 마우스로
Numpad4::MouseMove(-20, 0, , "R")
Numpad6::MouseMove(20, 0, , "R")
Numpad8::MouseMove(0, -20, , "R")
Numpad2::MouseMove(0, 20, , "R")
Numpad5::Click
🔄 일시적 리매핑
키를 누르고 있을 때만 다른 키로:
; Space를 누르고 있을 때 Shift 역할
Space::Shift
; 근데 이러면 Space 입력이 안 됨!
; 해결: 짧게 누르면 Space, 길게 누르면 Shift
Space::{
KeyWait("Space", "T0.2") ; 0.2초 대기
if (ErrorLevel) ; 아직 누르고 있으면
Send("{Shift down}")
else
Send("{Space}")
KeyWait("Space")
Send("{Shift up}")
}
⚠️ 주의사항
1. 시스템 필수 키 주의
; ⚠️ 위험! 시스템 사용 불가해질 수 있음
;Ctrl::return ; Ctrl 완전 비활성화
;Alt::return ; Alt 완전 비활성화
2. 무한 루프 주의
; ⚠️ 무한 루프!
a::Send("a") ; a 누르면 a 보내고, 그게 또 트리거...
; ✅ 해결 방법
$a::Send("a") ; $ 접두사로 자신을 트리거하지 않음
3. 로그인 화면에서 작동 안 함
AHK 스크립트는 로그인 후에만 작동합니다. 시스템 레벨 리매핑은 레지스트리 수정이 필요합니다.
🌟 유용한 리매핑 모음
생산성 향상 팩
#Requires AutoHotkey v2.0
; CapsLock → Ctrl (타이핑 편의)
CapsLock::Ctrl
+CapsLock::CapsLock ; Shift+CapsLock = 원래 CapsLock
; 오른쪽 Alt → 한/영 전환 (한글 키보드)
RAlt::Send("{vk15}") ; 한/영 키
; Insert 키 비활성화 (실수 방지)
Insert::return
; Scroll Lock → 음소거
ScrollLock::Send("{Volume_Mute}")
; Pause → 미디어 재생/일시정지
Pause::Send("{Media_Play_Pause}")
노트북용 (F키 없는 키보드)
; CapsLock + 숫자 = F키
CapsLock & 1::F1
CapsLock & 2::F2
CapsLock & 3::F3
; ... 계속
🎮 실습 과제
- CapsLock을 Backspace로 리매핑
- 오른쪽 Shift를 Enter로 리매핑
- Ctrl+CapsLock은 원래 CapsLock 동작하도록
정답 보기 👀
#Requires AutoHotkey v2.0
; 1. CapsLock → Backspace
CapsLock::Backspace
; 2. 오른쪽 Shift → Enter
RShift::Enter
; 3. Ctrl+CapsLock → CapsLock 토글
^CapsLock::CapsLock
📚 다음 시간 예고
다음 글에서는 GUI 기초를 배웁니다:
- 윈도우 창 만들기
- 버튼, 텍스트 입력
- 이벤트 처리
나만의 프로그램을 만들어봅시다! 🪟
🔑 오늘 배운 핵심 정리
| 문법 | 용도 | 예제 |
|---|---|---|
a::b |
키 리매핑 | CapsLock::Ctrl |
$ |
자기 트리거 방지 | $a::... |
* |
수식키 무시 | *CapsLock::... |
{Blind} |
수식키 유지 | Send("{Blind}{Ctrl}") |
& |
키 조합 | CapsLock & h::Left |
#HotIf |
조건부 리매핑 | 특정 프로그램에서만 |
이전 글: [#9 함수 기초]
다음 글: [#11 GUI 기초]
반응형
'🔬 과학·테크 > 🔥 AutoHotkey v2 입문 가이드' 카테고리의 다른 글
| AutoHotkey v2 입문 가이드 #12: 파일 다루기 - 읽고, 쓰고, 관리하기 (0) | 2025.12.15 |
|---|---|
| AutoHotkey v2 입문 가이드 #11: GUI 기초 - 나만의 창 만들기 (0) | 2025.12.14 |
| AutoHotkey v2 입문 가이드 #9: 함수 기초 - 코드 재사용의 마법 (0) | 2025.12.12 |
| AutoHotkey v2 입문 가이드 #8: 제어문 - if/else, Loop, While, For (0) | 2025.12.11 |
| AutoHotkey v2 입문 가이드 #7: 변수와 데이터 타입 - 데이터 다루기의 기초 (0) | 2025.12.10 |