프날 오토핫키 강좌  v2

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

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

34. 컴퓨터에서의 좌표


오토핫키는 자동화 프로그래밍에 특화되어 있습니다. 가장 간단한 수준의 자동화 프로그래밍은 마우스 커서를 자동으로 옮겨 클릭하거나, 키를 입력하는 것으로부터 시작합니다.

이제부터 앞으로 몇 강 동안, 여러분은 저와 함께 기초적인 자동화 프로그램을 개발해 볼 것입니다. 원하는 부분을 클릭하고 원하는 키를 입력할 수 있죠. 그리고 지난 강까지 배운 내용으로 원하는 만큼 반복할 수도, 조건에 맞을 때만 실행하게 할 수도 있습니다.

이제 여러분은 유의미한 프로그램을 만들 수 있는 능력을 갖게 됩니다. 18강에서 말씀드렸던 프로그래밍 윤리를 다시 짚어보고, 본격적으로 자동화 프로그래밍을 시작해봅시다.

좌표를 배우는 이유

이번 강은 컴퓨터에서 좌표를 어떻게 표현/인식하는지 알아볼 것입니다.

프로그램이 화면 상의 범위나 지점과 관련된 작업을 하기 위해서는 컴퓨터 위에서의 한 점이 어떻게 표현되는지 알아야 하는데, 그 방법이 좌표이기 때문에 컴퓨터에서의 좌표를 배우는 것입니다.

활성 창

먼저 활성 창(Active window)에 대해 아셔야 합니다.

우리가 주로 사용하는 Windows 운영체제(그리고 모든 현대적인 운영체제)는 아래와 같이 여러 창을 동시에 켠 후 작업을 할 수 있습니다.

컴퓨터 화면에 document, script, web이라는 창이 떠있는데, web 창이 맨 위에 올라와있는 모습 사진 1. Windows 운영체제에서 여러 창을 띄운 모습

이 여러 창 중, 현재 선택되어 있어서 사용자의 주 입력을 받을 수 있는 상태의 창을 '활성 창'이라고 합니다. 사진에선 'Web'이라고 적힌 창이죠.

즉 초점(Focus)을 가진 창이죠. 여러분이 현재 작업하고 있는 창을 의미합니다.

화면과 좌표

컴퓨터에서의 좌표는 아래와 같은 특징을 가지고 있습니다.

  • 컴퓨터 화면의 한 점은 (x, y) 형태의 좌표쌍로 나타낼 수 있습니다.
  • x값은 오른쪽으로 갈 수록 증가, y값은 아래쪽으로 갈 수록 증가합니다.

컴퓨터에서 화면의 어떤 지점을 가리키려면 x좌표와 y좌표를 적어주어야 합니다.

세 가지 좌표 유형

위와 같이 컴퓨터 화면은 좌표 체계로 나타낼 수 있는데, 실제 좌표 값은 원점(0, 0)을 어디에 두느냐에 따라 달라집니다.

원점을 지정하는 방식에 따라 좌표 유형이 나뉘는데, 활성 창의 영향을 받는지 여부에 따라 크게 두 가지가 있습니다. 하나는 활성 창과 관계 없이 항상 주 모니터 왼쪽 위를 원점으로 삼는 절대(Absolute) 좌표고, 다른 하나는 활성 창의 왼쪽 위를 원점으로 삼는 상대(Relative) 좌표입니다. 절대 좌표는 화면의 왼쪽 위를 원점으로 삼기 때문에 스크린(Screen) 좌표라고도 합니다.

상대 좌표는 또 두 가지 좌표로 나뉘는데, 창 그 자체의 왼쪽 위를 원점으로 삼는 창(Window) 좌표, 창의 제목 표시줄과 메뉴 바 등을 제외하고 실질적인 사용자 영역의 왼쪽 위를 원점으로 삼는 클라이언트(Client) 좌표가 있습니다.

최상위에 있는 web 창의 제목 표시줄 왼쪽 위를 원점으로 하여 좌표축이 x는 왼쪽, y는 아래로 갈수록 증가하는 모양의 화살표로 그려져 있는 모습 최상위에 있는 web 창의 제목 표시줄 왼쪽 아래를 원점으로 하여 좌표축이 x는 왼쪽, y는 아래로 갈수록 증가하는 모양의 화살표로 그려져 있는 모습
사진 2~3. 창 좌표(좌)와 클라이언트 좌표(우)

따라서 정리해보면 컴퓨터에서의 좌표 유형은 활성 창에 영향을 받는지, 그리고 활성 창의 어느 부분의 영향을 받는지에 따라 아래와 같이 세 유형으로 나뉜다고 할 수 있죠.

  • 절대 좌표: 활성 창과 관계 없이 항상 주 모니터 화면의 왼쪽 위가 원점인 좌표 유형. 스크린 좌표라고도 한다.
  • 창 좌표: 활성 창의 왼쪽 위가 원점인 좌표 유형. 상대 좌표의 한 종류이다.
  • 클라이언트 좌표: 활성 창에서 사용자 영역의 왼쪽 위가 원점인 좌표 유형. 상대 좌표의 한 종류이다.

좌표 유형에 따라 원점이 달라지기 때문에, 좌표 값도 달라집니다. 예를 들어서 어떤 좌표축의 원점이 (-1, -1)만큼 이동했다면, 기존에 (3, 2)라는 좌표는 (4, 3)으로 쓰일 것입니다.

따라서 해당 창 안에서 마우스나 키보드 자동화를 하시려면 상대 좌표를 쓰면 되고, 화면 전체를 대상으로 자동화를 하시려면 절대 좌표를 사용하면 됩니다.

Tip: 클라이언트 좌표의 사용

창 좌표와 클라이언트 좌표는 둘 다 상대 좌표를 사용합니다. 그러나 클라이언트 좌표는 창의 제목 표시줄과 메뉴 바 등을 제외하기 때문에, 사용자의 운영체제 버전과 테마의 영향을 적게 받습니다. 따라서 상대 좌표를 이용할 땐, 제목 표시줄과 메뉴 바를 이용하지 않는 이상 클라이언트 좌표를 사용하는 것이 바람직합니다.

좌표 알아오기

원하는 지점의 좌표가 무엇인지 알려면 어떻게 해야할까요?

오토핫키 설치시에 기본 제공되는 Window Spy라는 프로그램을 이용하면 됩니다. 간단하게 Window Spy를 열려면 SciTE4AutoHotkey의 도구 모음에 있는 아래 아이콘을 누르면 됩니다.

노란색 창에 빨간 돋보기가 그려져있는 아이콘의 모습 사진 4. Window Spy 아이콘

이 아이콘을 누르면 바로 Window Spy가 열립니다.

Mouse Position 이라고 적힌 박스 안에 Screen, Window, Client라고 적혀있고 각각의 글씨 옆에 각 좌표 유형에 따른 좌표가 적혀으며, 같은 박스 안에 Color라고 적힌 글씨 옆에는 현재 마우스 좌표의 색상값이 적혀있다. 사진 5. Window Spy의 모습

표시한 부분에 현재 마우스 커서의 위치가 표시됩니다. 스크린 좌표, 창 좌표, 클라이언트 좌표가 나오네요. 더불어 현재 마우스 커서가 가리키는 곳의 색상값도 나옵니다.

이제 컴퓨터에서 어느 한 지점의 좌표를 구할 수 있습니다.

질문하러 가기