프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

35. CoordMode


지난 강에서 여러 좌표 유형을 배웠습니다. 원점을 어디로 삼는가에 따라 좌표 유형이 바뀌고, 실제 좌푯값도 달라집니다.

따라서 '내가 어떤 좌표 유형을 사용하겠다!'라고 프로그램에 지정해주어야 하는데, 그래서 사용하는 함수가 CoordMode 함수입니다.

CoordMode

CoordMode(TargetType[, RelativeTo])

CoordMode 함수의 원형은 위와 같습니다. 두 개의 매개변수가 보이죠?

  • TargetType: 좌표 유형을 지정할 대상
  • RelativeTo: 좌표 유형

1. TargetType

'좌표 유형을 지정할 대상'에는 Pixel, Mouse, ToolTip, Caret, Menu 중 하나를 지정하여 적어줍니다. 'Pixel'은 화면 상의 픽셀과 관련된 함수를 이용할 때 적용받는 좌표 유형을 지정해주며, 'Mouse'는 마우스 커서를 이동하거나 클릭하는 등 마우스와 관련된 함수를 이용할 때 적용받는 좌표 유형입니다. 어떤 문자열을 적어야 하는지 필요할 때마다 언급하겠습니다.

그 외에 ToolTip, Caret, Menu도 적어줄 수 있지만, 기초 강좌인 여기서는 생략하도록 하겠습니다.

2. RelativeTo

선택할 좌표 유형입니다. 지난 강을 참고하여 Screen, Window, Client 중 하나를 지정할 수 있습니다. 각각 스크린 좌표, 창 좌표, 클라이언트 좌표입니다.

원형에서 대괄호 처리되어있으면 선택 매개변수라고 했죠? 만약 이 매개변수를 생략하면 Screen을 사용한 취급이 됩니다.

Tip: CoordMode를 사용하지 않으면

CoordMode를 사용하지 않으면 클라이언트 좌표를 사용합니다. 명확한 코드를 위해 적어주는 것을 추천드리나, 규모가 작고 좌표를 이용하는 일이 적은 경우 생략해도 됩니다.

CoordMode에 따른 마우스 커서의 동작

CoordMode 함수를 수행하면

1마우스 커서를 (100, 100)으로 움직여라!
2CoordMode("Mouse", "Screen")
3마우스 커서를 (100, 100)으로 움직여라!
CoordMode에 따른 마우스 커서 움직임

우리가 마우스 커서를 움직이는 함수를 배우진 않았지만, 1번 줄은 활성 창의 클라이언트 영역을 기준으로 (100, 100)으로 이동할 것이며 3번 줄에선 주 모니터를 기준으로 (100, 100)으로 이동할 것입니다.

그럼 아래와 같은 스크립트는 어떻게 동작할까요?

1CoordMode("Mouse", "Client")
2
3F1::
4{
5 마우스 커서를 (100, 100)으로 움직여라!
6}
7
8F2::
9{
10 CoordMode("Mouse", "Screen")
11 MsgBox("좌표 유형이 [Screen]으로 변경되었습니다.")
12}
핫키를 이용하여 사용할 좌표 유형을 변경?

위의 스크립트를 실행한 후 F1을 누르면 일단 마우스 커서는 클라이언트 좌표를 기준으로 (100, 100)으로 움직일 것입니다. 그런데 F2을 누르면 그 때부터 스크린 좌표 유형을 사용하게 되므로, 다시 F1을 누르면 주 모니터를 기준으로 (100, 100)으로 마우스 커서가 움직일 것이라 생각하기 쉽습니다.

그러나 사용하는 좌표 유형은 해당 지역 전체에 영향을 끼치고, 해당 지역을 벗어나면 초기화되는 특성 (=지역적)을 가지고 있습니다. 따라서 위의 스크립트는 F2 지역에서 좌표 유형을 바꿨으므로, F1 지역에는 영향을 미치지 않을 것입니다. (더 정확히는 Threads 개념에 대한 이해가 필요한데, 강좌에선 다루지 않는 내용이므로 '지역' 개념으로 설명합니다.) 만약 전역적으로 모든 지역에 다른 좌표 유형을 사용하고 싶다면 24강에서 언급한 '자동 실행 스레드'에 CoordMode를 사용하면 됩니다.

또, CoordMode를 사용하지 않으면 기본으로 사용하는 좌표 유형은 '클라이언트 좌표'이기 때문에, 자동 실행 스레드에 적은 1번 줄 CoordMode는 생략하여도 같은 동작을 할 것입니다.

이제 컴퓨터가 좌표를 어떻게 다루는지, 또 사용할 좌표 유형은 어떻게 선택하는지 모두 배웠습니다. 다음 강에서는 드디어 직접 좌표를 지정해주어 마우스 커서를 움직여 볼 것입니다.

질문하러 가기