🔬 과학·테크/🔥 AutoHotkey v2 입문 가이드

AutoHotkey v2 입문 가이드 #5: 키보드/마우스 입력 보내기 - Send, Click, MouseMove

_eNKI 2025. 12. 8. 19:38
반응형

🎯 이 글에서 배우는 것: Send로 키 입력, Click/MouseMove로 마우스 제어


⌨️ Send - 키보드 입력 보내기

Send는 AutoHotkey의 핵심 함수입니다. 마치 유령이 키보드를 치는 것처럼 동작합니다!

기본 사용법

Send("Hello World")  ; Hello World 입력

특수 키 입력

특수 키는 중괄호 {}로 감쌉니다:

Send("{Enter}")      ; 엔터키
Send("{Tab}")        ; 탭키
Send("{Backspace}")  ; 백스페이스
Send("{Delete}")     ; 삭제
Send("{Escape}")     ; ESC
Send("{Space}")      ; 스페이스 (또는 그냥 " ")

방향키와 기능키

Send("{Up}")         ; 위 화살표
Send("{Down}")       ; 아래 화살표
Send("{Left}")       ; 왼쪽 화살표
Send("{Right}")      ; 오른쪽 화살표

Send("{Home}")       ; Home키
Send("{End}")        ; End키
Send("{PgUp}")       ; Page Up
Send("{PgDn}")       ; Page Down

Send("{F1}")         ; F1키
Send("{F12}")        ; F12키

🎹 수식키와 함께 보내기

수식키 기호 (Send용)

기호
^ Ctrl
! Alt
+ Shift
# Win

예제

Send("^c")           ; Ctrl+C (복사)
Send("^v")           ; Ctrl+V (붙여넣기)
Send("^a")           ; Ctrl+A (전체 선택)
Send("^s")           ; Ctrl+S (저장)
Send("!{F4}")        ; Alt+F4 (창 닫기)
Send("^+{Escape}")   ; Ctrl+Shift+Esc (작업 관리자)
Send("#{Tab}")       ; Win+Tab (작업 보기)

여러 키 조합

; 전체 선택 후 복사
Send("^a")
Send("^c")

; 또는 한 줄로
Send("^a^c")

🔁 키 반복 입력

같은 키를 여러 번 입력:

Send("{Enter 5}")     ; 엔터 5번
Send("{Tab 3}")       ; 탭 3번
Send("{Backspace 10}") ; 백스페이스 10번
Send("{Down 20}")     ; 아래 화살표 20번

문자 반복

Send("{a 10}")        ; aaaaaaaaaa

⏱️ 키 누르고 있기

키를 누른 상태로 유지하거나 떼기:

Send("{Shift down}")  ; Shift 누름 (유지)
Send("hello")         ; HELLO 입력됨 (Shift 상태)
Send("{Shift up}")    ; Shift 뗌

; Ctrl 누른 상태로 여러 동작
Send("{Ctrl down}")
Send("a")             ; Ctrl+A
Send("c")             ; Ctrl+C  
Send("{Ctrl up}")

📝 SendText vs Send

특수 문자를 있는 그대로 보내려면 SendText 사용:

; Send는 특수문자 해석
Send("^c")           ; Ctrl+C로 해석됨

; SendText는 문자 그대로
SendText("^c")       ; ^c 문자가 입력됨
SendText("!@#$%")    ; !@#$% 그대로 입력

언제 어떤 걸 쓸까?

상황 사용할 함수
단축키 실행 Send("^c")
일반 텍스트 Send("Hello") 또는 SendText("Hello")
특수문자 포함 텍스트 SendText("가격: $100 (50% 할인)")
코드/수식 입력 SendText("if (x > 5) { return; }")

🖱️ Click - 마우스 클릭

기본 클릭

Click                 ; 현재 위치에서 왼쪽 클릭
Click "Right"         ; 우클릭
Click "Middle"        ; 가운데 클릭 (휠)
Click 2               ; 더블클릭

좌표 지정 클릭

Click 100, 200        ; (100, 200) 위치에서 클릭
Click 100, 200, "Right"  ; 우클릭
Click 100, 200, 2     ; 더블클릭

현재 위치 기준 상대 이동

Click 50, 30, 0, "Rel"   ; 현재 위치에서 오른쪽 50, 아래 30으로 이동 (클릭 없음)

🐭 MouseMove - 마우스 이동

절대 좌표 이동

MouseMove 500, 300    ; (500, 300)으로 이동

상대 좌표 이동

MouseMove 100, 50, , "R"  ; 현재 위치에서 오른쪽 100, 아래 50
MouseMove -50, -30, , "R" ; 왼쪽 50, 위 30

이동 속도

MouseMove 500, 300, 50    ; 속도 50 (0-100, 0이 가장 빠름)
MouseMove 500, 300, 0     ; 즉시 이동
MouseMove 500, 300, 100   ; 천천히 이동

📍 좌표 확인하기 - Window Spy

마우스 좌표를 어떻게 알 수 있을까요? Window Spy를 사용합니다!

Window Spy 실행 방법

  1. 시스템 트레이의 AHK 아이콘 우클릭
  2. Window Spy 선택
  3. 마우스를 움직이면 실시간으로 좌표 표시!

표시되는 정보

Mouse Position:
    Screen: 1234, 567     ← 화면 전체 기준
    Window: 234, 167      ← 현재 창 기준
    Client: 220, 150      ← 창 클라이언트 영역 기준

🎯 좌표 모드 (CoordMode)

좌표 기준점을 설정합니다:

CoordMode "Mouse", "Screen"  ; 전체 화면 기준 (기본값)
CoordMode "Mouse", "Window"  ; 활성 창 기준
CoordMode "Mouse", "Client"  ; 창의 클라이언트 영역 기준

언제 뭘 쓸까?

상황 권장 모드
창 위치가 바뀌어도 동작해야 함 Window 또는 Client
화면 특정 위치 (작업표시줄 등) Screen
게임 매크로 Client

🔧 실용적인 예제

예제 1: 자동 로그인 (개념)

#l::{  ; Win+L로 실행
    ; ⚠️ 실제 비밀번호 저장은 위험! 예시일 뿐
    Send("myusername")
    Send("{Tab}")
    Send("mypassword")
    Send("{Enter}")
}

예제 2: 화면 특정 위치 클릭

F1::{
    Click 1920, 1080  ; 화면 특정 위치 클릭
    Sleep 500         ; 0.5초 대기
    Click 1920, 1080, 2  ; 더블클릭
}

예제 3: 마우스 좌표 표시

^m::{  ; Ctrl+M
    MouseGetPos(&x, &y)
    MsgBox("현재 마우스 좌표: " x ", " y)
}

예제 4: 드래그 앤 드롭

F2::{
    Click 100, 100, "Down"    ; (100, 100)에서 마우스 버튼 누름
    MouseMove 300, 300        ; (300, 300)으로 이동
    Click "Up"                ; 마우스 버튼 뗌
}

예제 5: 간단한 그리기 매크로

F3::{
    Loop 4 {
        MouseMove 100, 0, 10, "R"    ; 오른쪽으로 100
        Sleep 100
        MouseMove 0, 100, 10, "R"    ; 아래로 100
        Sleep 100
    }
}

⏰ Sleep - 대기하기

동작 사이에 시간 지연이 필요할 때:

Send("^s")        ; 저장
Sleep 1000        ; 1초(1000ms) 대기
Send("^w")        ; 창 닫기

밀리초 단위

시간
100 0.1초
500 0.5초
1000 1초
5000 5초

⚠️ 주의사항

1. 너무 빠른 입력

프로그램이 따라오지 못할 수 있습니다:

; ❌ 문제 발생 가능
Send("^o")        ; 파일 열기 대화상자
Send("myfile.txt")
Send("{Enter}")

; ✅ Sleep 추가
Send("^o")
Sleep 500         ; 대화상자 열릴 때까지 대기
Send("myfile.txt")
Sleep 200
Send("{Enter}")

2. 창 활성화 확인

원하는 창이 활성화되어 있는지 확인:

#IfWinActive "메모장"
^1::Send("메모장에서만 작동!")
#IfWinActive

3. 게임에서 안 될 때

게임은 보통 SendInput이 필요:

SendMode "Input"  ; 가장 빠르고 안정적
; 또는
SendMode "Play"   ; 게임에서 더 잘 작동할 수 있음

🎮 실습 과제

  1. Win+1 → 메모장 열고 "Hello World" 입력
  2. Ctrl+Shift+D → 현재 날짜를 "2024-01-15" 형식으로 입력
  3. F5 → 마우스를 화면 중앙(960, 540)으로 이동 후 클릭
정답 보기 👀
#Requires AutoHotkey v2.0

#1::{
    Run "notepad"
    Sleep 500
    Send "Hello World"
}

^+d::{
    Send FormatTime(, "yyyy-MM-dd")
}

F5::{
    MouseMove 960, 540, 0
    Click
}

📚 다음 시간 예고

다음 글에서는 Run과 창 관리를 배웁니다:

  • 프로그램 실행 (Run)
  • 창 활성화/대기 (WinActivate, WinWait)
  • 창 제어 (WinMove, WinClose)

프로그램 제어의 달인이 되어봅시다! 🪟


🔑 오늘 배운 핵심 정리

함수 용도 예제
Send() 키 입력 Send("^c")
SendText() 텍스트 그대로 SendText("$100")
Click 마우스 클릭 Click 100, 200
MouseMove 마우스 이동 MouseMove 500, 300
Sleep 대기 Sleep 1000
MouseGetPos 좌표 얻기 MouseGetPos(&x, &y)
CoordMode 좌표 기준 CoordMode "Mouse", "Window"

이전 글: [#4 핫스트링(Hotstring)]
다음 글: [#6 프로그램 실행과 창 관리]

반응형