[6] 오토핫키 완벽분해 강좌 - 마우스 조작

Posted by 아이티프로13
2018. 12. 15. 16:39 프로그래밍/AutohotKey


안녕하세요. 쿠과자입니다.

오랜만에 오토핫키 관련 강좌를 쓰네요.


저번 시간엔 오토핫키에서 빠질수 없는 Sleep과 관련해서 알아봤었는데요,

2018/05/09 - [프로그래밍/AutohotKey] - [5] 오토핫키 Autohotkey 완벽분해 강좌 - Sleep

이번에는 Mouse, 즉 마우스 커서를 조작하는 방법에 대해서 알아보고자 합니다.




마우스 관련 이벤트들


우선 마우스는 기본적으로 움직일 수 있고

좌클릭, 우클릭이 존재하고

클릭하고 드래그를 하거나,

마우스 휠 조작 등이 있죠.


그렇기 때문에 저희는 오토핫키를 통해

마우스 위치를 얻어서, 이걸 조작할 수 있습니다.



먼저 위 프로그램을 받아주세요.

Window Spy 라는 오토핫키 소스 프로그램으로, 오토핫키를 설치하면 내장되있습니다.

이를 실행해주면..



위 사진과 같이 복잡하게 뭐가 많이 뜰겁니다.

일단 제일먼저 봐야할것은 저기 빨갗게 칠해진,

Mouse Position 부분의 Window : 부분입니다. 각각 X, Y 좌표를 갖고있습니다.


이에 대한 자세한 설명은 

2019/05/08 - [프로그래밍/AutohotKey] - [Autohotkey][15] 오토핫키 강좌 - 기준점 바꾸기! Coordmode

를 참고해보세요.




위처럼, 마우스가 움직이면 그에 맞춰서 Mouse Position 부분이 움직이는것을 알 수가 있습니다.

Ctrl 이나 Shift 버튼을 누르면 그 부분이 일시정지가 되어, 어딘가에 기록한 다음에 다시 떼서 마우스 위치를 찾으시면 됩니다.



마우스 위치 변경하기

가장 기본적으로, 마우스 위치는 Mousemove 라는 오토핫키 명령어로 가능합니다.


MouseMove, X, Y [, Speed, R]


이런식으로 구현이 되며, X 와 Y 는 위에서 찾은 마우스의 X,Y 좌표이며

Speed는 마우스가 이동할 위치, R같은 경우 R을 적으면 현재의 마우스 위치에서 설정한 X,Y좌표만큼 이동하는 것입니다.

현재는 쓰일 일이 없으니 그렇구나~ 만 하고 넘어가시면 됩니다.

X,Y 좌표만 입력하면 마우스이동은 끝! 입니다.


F5::

Mousemove,216,131

Return



위와 같이 스크립트를 짜놓고 실행을 해보면..




위와 같이 정해진 좌표로 마우스가 이동하는것을 볼 수가 있습니다.



마우스 클릭


먼저, 마우스 클릭같은 경우 매우 간단하게는 Click 함수로 표현할 수 있습니다.

단순히 Click 만 입력하면 왼쪽 버튼을 누르는것이고,

위 사진과 같이 Click, Down 같은 경우 Click 버튼을 꾹 누르고 있는 상태,

Click, Up 같은 경우 Click 버튼을 뗀 상태가 됩니다.

F5::

Mousemove,216,131

Click,Down

Click,Up

Send,asdfasdf

Return




다른 경우는 Mouseclick 함수로 표현할 수 있습니다.

MouseClick [, WhichButton , X, Y, ClickCount, Speed, D|U, R]

위와 같은 형태며, WhichButton 엔 Left(좌클릭)나 Right(우클릭), Middle(가운데 버튼 클릭) 등이 올 수 있고

X,Y는 마찬가지로 좌표,

Clickcount는 얼마나 누를것인지,

Speed는 속도(가장 느린것이 100, 가장 빠른것이 0)

D를 선택하면 Down, 즉 꾹 누르는것

U를 선택하면 Up, 즉 떼는것

R은 위 설명과 동일합니다.


주로 X,Y까지만 쓰지 뒷부분은 자주 사용하진 않기때문에, 앞부분만 알고 계셔도 상관은 없을 듯 합니다.

F5::

Mouseclick,left,216,131

Send,asdfasdf

Return


위 두 스크립트 모두 위처럼 작동하는 것을 확인하실 수 있습니다.



마우스 드래그


마우스 드래그 또한 마우스 조작에서 가장 중요한 부분 중 하나입니다.

마우스 드래그는 작게 보면, 마우스를 이동한 후 꾹 눌러서,

뗄 부분으로 마우스를 이동한 후 떼는 방식으로 구현이 가능합니다.


그렇기 때문에, 여러가지 방법으로 구현이 가능하지만

3가지 방법으로 구현 방법을 소개해 드리겠습니다.


F5::

Mousemove,259,175

Click,down

Mousemove,56,76

Click,Up

Return


먼저, Mousemove 와 Click을 이용한 방법입니다.



F5::

Mouseclick,left,259,175,1,100,D

Mouseclick,left,56,76,1,100,U

Return

다음으로 마우스클릭을 이용한 방법입니다.

위에서 서술했듯이, 1은 클릭횟수, 100은 딜레이, D는 Down, U는 Up입니다.


MouseClickDrag, WhichButton, X1, Y1, X2, Y2 [, Speed, R]


다음으로 MouseclickDrag입니다.

특이하게 X1,Y1 시작점을 지정해주고, X2,Y2 끝점을 지정해줘서

드래그하는 함수입니다.





세 스크립트 모두 위처럼 작동합니다.



마우스 휠


마우스 휠도 사실은 하나의 버튼에 불과합니다.

Click, Wheeldown 을 통해 아래 휠 버튼을 누르고

Click, Wheelup 을 통해 위 휠 버튼을 누를 수 있습니다.

F5::


Mouseclick,left,140,115

Click,Wheeldown

sleep,300

Click,Wheeldown

sleep,300

Click,Wheeldown

sleep,300

Click,Wheelup


Return


위처럼 마우스 휠이 잘 작동되는것을 알 수 있습니다.




마우스의 위치


맨 윗부분에서, spy를 통해 마우스의 Window 위치를 통해 X,Y 좌표를 알 수 있다 했습니다.

이는, 그 창이 활성화되어있을때 그 창의 X,Y좌표를 가져오는것으로

다른 창이 활성화되있을때의 좌표를 입력하면 생전 딴 좌표로 이동하는것을 알 수 있습니다.


그렇기 때문에, 이를 이용해서 매크로를 만들때는

항상 매크로 대상이 되는 창을 활성화 된 상태에서 좌표를 가져와야 합니다.


물론 모니터의 화면, 즉 절대적인(absolute) 좌표(screen)를 가져와 클릭하거나 작업을 수행할 수도 있습니다.

이에 대해서는 나중에 Coordinate 를 이용한 강좌에서 제대로 설명해드리겠습니다.



공감 버튼을 눌러주시면

블로거에게 힘이 됩니다!