본문 바로가기

자동화프로그램/오토핫키

오토핫키 키보드 제어, 마우스 제어 방법

반응형

참고 링크: 오토핫키 설치 방법, 오토핫키 에디터 설치 및 환경설정

참고 링크: 오토핫키 기초 사용법 및 주석처리


오토핫키 키보드 제어

본 편에서는 오토핫키를 활용하여 키보드 제어와 마우스 제어를 알아보고자 합니다. 먼저 상대적으로 쉬운 키보드제어를 보이고, 다음으로 마우스를 제어하는 것을 보이겠습니다. 

반복하여 타이핑할 문자를 오토핫키를 이용하여 저장하고 싶다면 "Send" 를 활용하면 됩니다. 예를 들어, 아래 코드와 같이 작성하면, "alt+1"을 눌렀을 때, test 문자가 입력되게 됩니다. 

#SingleInstance, Force

F4::
ExitApp


!1::
Send, test
return

 만약 같은 문자를 100 번 반복하여 입력하고 싶다면 아래와 같이 입력하면 됩니다. "alt+2"을 눌렀을 때 a 문자가 100 번 입력됩니다. "SendInput" 명령어의 "Send"와 다른 점은 문자가 입력되는 속도가 send와 다르게 한방에 입력되는 것 처럼 보입니다. 속도의 차이가 있지만, 동일한 문자를 100번 입력한다는 기능상의 차이는 없습니다. SendMode 라는 명령어는 하위 명령어로 Event or Play or Input or InputThenPlay 의 명령어를 갖습니다. SendMode의 타입을 설정하면, 그 아래에 나오는 Send는 앞서 설정한 센드모드를 갖습니다. 

!2::
Send, {a 100}
return

!3::
SendInput, {b 100}
return

!4::
SendMode, Input
Send, {c 100}
sendmode,   
return

재미있는 것은 다음 기능인 것 같아요, 만약에 엔터키나 스페이스 키를 넣고 싶으면 "중괄호" 를 활용해야 합니다. 

Send, enter 라고 입력하면, 'enter'라는 문자가 입력이 되게 됩니다. 만약 중괄호에 enter를 넣어 입력을 하면 엔터키로서의 기능을 하게 됩니다. 만약 중괄호 안의 문자를 그대로 출력하여 사용하고 싶다면, SendRaw 명령어를 사용하면 됩니다.  Down 문자가 중괄호 안에 있으면, 키보드의 아래쪽 방향 화살표를 의미합니다. 

Ctrl + v 를 입력하고 싶으면 ^v 라고 입력하면 됩니다.

alt + 8 을 누르면, 다른 이름 저장을 해줍니다. 

!5::
Send, {Enter}
Send, {Space}
return

!6::
SendRaw, {Enter}
return

!7::
Send, ^v
return

!8::
Send, {Alt Down}fa{Alt Up}
return

다양한 특수키를 보고싶다면 오토핫키코리아에서 찾아보면 됩니다. (링크: 오토핫키코리아)


오토핫키 마우스 제어

마우스 클릭은 MouseClick 명령어를 사용합니다. MouseClick이후에 좌클릭인지/우클릭인지 설정을 하고, x좌표와 y좌표를 설정하는 칸이 있습니다. 이후 몇 번 클릭을 하는지도 설정을 합니다.  아래 예시 코드를 에디터에 입력하고 실행을 하여 alt+1을 누르면, 컴퓨터의 150,150 위치에서 두 번 좌클릭을 하게 됩니다. alt + 2 를 누르면, 컴퓨터의 150, 150 좌표에서 우클릭을 한 번 합니다. 만약에 클릭을 0번 하는 것으로 입력하면, Mouse Move와 동일하게 커서가 움직입니다.

!1::
MouseClick, Left, 150, 150, 2
return

!2::
MouseClick, Right, 150, 150, 1
return

추가로 클릭하는 속도 옵션을 설정할 수 있는데,  0~100 사이의 속도를 선택할 수 있습니다. 0에 가까울수록 빠르게 움직이며, 100에 가까울수록 느리게 움직입니다. 단순히 마우스를 이동하고 싶다면, MouseMove 명령어를 눌러즙니다. 그리고 'R' 을 입력하면 현재 마우스 커서의 위치에서부터 relative 위치로의 이동을 의미합니다. 참고로 아래 코드에서 보이듯, 세미콜론(;) 표시가 코드의 가장 앞쪽에 있으면, 해당 줄에서 세미콜론 이후의 코드는 주석처리로 됩니다. 

!3::
;MouseClick, Left, 150, 150, 1, 0	; 가장 빠름
MouseClick, Left, 150, 150, 1, 100	; 가장 느림
return

!4::
MouseMove, 150, 150, 50
;MouseMove, 150, 150, 50, R
return

그런데 마우스 커서의 현재 위치 또는 컴퓨터 화면이 달라지는 경우마다 좌표값이 변화가 있을 것 입니다. 이런 좌표값의 문제를 쉽게 해결해 주는 것이 오토핫키 에디터입니다. 오토핫키 에디터의 Active window info를 사용해서 꽤나 효과적인 기능을 구현할 수 있습니다. 아래 그림에서 보이듯 돋보기가 있는 아이콘입니다.

active window info icon
Active window info

해당 아이콘을 누르면 아래와 같이, 현재 커서가 있는 창에 대한 정보와 마우스 포지션, 해당 커서의 컬러 등 정보를 제공합니다. 이 때 Win+A 키를 누르면, 그 때 커서관련 정보를 캐치하여 볼 수 있습니다. Mouse Position에서 absolute는 현재 화면의 가장 왼쪽 상단을 기준으로부터의 좌표를 의미하며, relative는 현재 활성화된 창 기준의 위치입니다. client는 활성화된 창의 가장 상단 title bar를 제외한 화면을 기준으로 한 좌표를 보여줍니다. 

active window info 예시 화면

오토핫키를 이용하여 마우스로 드래그를 하고싶다면, 어떻게 해야할까요?  MouseClickDrag 명령어를 넣은 뒤, 좌표 4개를 넣으면 됩니다. 시작 x, y좌표 그리고 끝나는 x, y 좌표.

!7::
MouseClickDrag, Left, 150, 100, 150, 250, 50
return

 여기까지 간단히, 오토핫키를 이용한 키보드와 마우스 제어에 대해 알아봤습니다.

감사합니다. 

반응형