ch06. 시스템 유틸리티 -- 모니터 배치, 마우스, Cancel All

모니터 배치, 마우스 제어, 매크로 비상 정지까지. 여섯 개의 유틸리티 매크로로 macOS 작업 환경을 단축키 하나로 통제한다.

이런 불편함, 겪어보셨나요?

외부 모니터를 연결했다. 노트북 화면, 모니터 하나, 모니터 둘. 세 개 화면이 생겼다. 앱 창을 모니터 사이에서 옮기려면 마우스로 드래그해야 한다. 창을 정확히 전체 화면으로 맞추려면 또 한 번 조작이 필요하다.

듀얼 모니터에서 마우스 커서가 어디 있는지 모를 때도 있다. 매크로를 만들다 실수로 무한 루프에 빠지는 경우도 생긴다.

이런 작은 불편들을 해결하는 유틸리티 매크로 여섯 개를 살펴본다.

매크로 그룹 분석: 모니터 배치 (3개)

무엇을 하는 매크로인가

세 개의 매크로가 한 세트다. 현재 활성 창을 지정한 모니터로 이동시키고, 전체 화면으로 확장한다.

매크로명 트리거 대상 모니터
Utility - Main Monitor ⌘⇧1 메인 모니터 (노트북 또는 주 모니터)
Utility - Second Montor ⌘⇧2 두 번째 모니터
Utility - Third Monitor ⌘⇧` 세 번째 모니터

세 매크로 모두 동일한 구조를 가진다. 단축키만 다르고, 이동 대상 모니터만 다르다.

트리거

트리거 타입 설명
HotKey ⌘⇧1 / ⌘⇧2 / ⌘⇧` 어떤 앱이든 활성 상태에서 동작

액션 흐름

flowchart TD A(["HotKey: Command+Shift+1/2/`"]):::trigger --> B["ManipulateWindow\nMoveAndResize\n대상 모니터로 창 이동 및 크기 조절"]:::ui B --> C["SimulateKeystroke\nShift+Option+Control+Enter\n창 관리 앱의 전체 화면 단축키 전송"]:::ui classDef trigger fill:#E3F2FD,stroke:#1976D2,stroke-width:2px,color:#0D47A1 classDef ui fill:#F3E5F5,stroke:#7B1FA2,stroke-width:2px,color:#4A148C

그림 6-1. 모니터 배치 매크로 액션 흐름 -- 창 이동 후 전체 화면 확장

  1. ManipulateWindow (MoveAndResize) -- 현재 활성 창을 대상 모니터의 전체 영역으로 이동 및 크기 조절한다.
  2. SimulateKeystroke (⇧⌥⌃↩) -- 창 관리 앱(Magnet, Rectangle 등)의 전체 화면 단축키를 보내 화면을 꽉 채운다.

창이 먼저 대상 모니터로 이동하고, 곧이어 전체 화면으로 확장된다.

핵심 기술 해설

ManipulateWindow -- MoveAndResize

창의 위치와 크기를 픽셀 단위로 지정하는 액션이다. Position(좌상단 좌표), Size(너비/높이), Screen(대상 모니터 번호)을 설정한다. Screen을 Main Screen, Second Screen 등으로 지정하면 멀티 모니터 환경에서 원하는 모니터로 창을 보낼 수 있다.

SimulateKeystroke

지정한 키 조합을 시스템에 보내는 액션이다. 이 매크로에서는 ⇧⌥⌃↩를 보내서 창 관리 앱의 전체 화면 기능을 호출한다.

활용 팁

  • 모니터 배치가 바뀌면 ManipulateWindow의 좌표와 크기를 수정해야 한다.
  • 세 번째 모니터의 트리거가 ⌘⇧인 것은, 키보드에서 1, 2 옆의 키를 활용한 것이다. 직관적인 단축키 설계의 좋은 예다.

매크로 분석: 마우스 커서 화면 중앙으로 가져오기

무엇을 하는 매크로인가

⌃D를 누르면 마우스 커서가 현재 화면의 정중앙으로 이동한다. 멀티 모니터 환경에서 커서를 잃어버렸을 때 유용하다.

트리거

트리거 타입 설명
HotKey ⌃D 어떤 앱이든 활성 상태에서 동작

액션 흐름

flowchart TD A(["HotKey: Control+D"]):::trigger --> B{"IfThenElse\n현재 화면 조건 확인\nConditionList 평가"}:::condition B -- "조건 충족" --> C["MouseMoveAndClick\n지정 화면 중앙 좌표로\n마우스 커서 이동"]:::ui classDef trigger fill:#E3F2FD,stroke:#1976D2,stroke-width:2px,color:#0D47A1 classDef condition fill:#FFF8E1,stroke:#FFA000,stroke-width:2px,color:#E65100 classDef ui fill:#F3E5F5,stroke:#7B1FA2,stroke-width:2px,color:#4A148C

그림 6-2. 마우스 커서 화면 중앙 이동 매크로 액션 흐름 -- 조건 분기 후 커서 이동

  1. IfThenElse (조건 확인) -- 현재 상태를 확인하는 조건 분기다. 조건 목록(ConditionList)을 평가하여 어떤 화면의 중앙으로 커서를 보낼지 결정한다.
  2. Then: MouseMoveAndClick -- 조건이 참이면, 지정된 화면 좌표의 중앙으로 마우스 커서를 이동한다.

핵심 기술 해설

MouseMoveAndClick

마우스 커서를 특정 좌표로 이동하거나, 이동 후 클릭하는 액션이다. 절대 좌표, 상대 좌표, 창 기준, 화면 기준 등 여러 방식으로 좌표를 지정할 수 있다. 이 매크로에서는 화면 중앙 좌표를 지정하여 커서를 이동시킨다. 클릭 없이 이동만 하도록 설정할 수 있다.

조건 분기(IfThenElse)로 여러 모니터 중 어느 화면의 중앙으로 보낼지 판단한다.

활용 팁

  • 프레젠테이션 중에 커서를 빠르게 화면 중앙으로 모으는 데 쓸 수 있다.
  • 트리거를 마우스 버튼이나 코너 트리거로 바꾸면 더 직관적으로 사용할 수 있다.

매크로 분석: Cancel All Macros

무엇을 하는 매크로인가

⌃Delete를 누르면 현재 실행 중인 모든 매크로가 즉시 중단된다. 매크로 개발 중 무한 루프나 오동작이 발생했을 때 사용하는 비상 정지 버튼이다.

트리거

트리거 타입 설명
HotKey ⌃Delete 어떤 상황에서든 동작

액션 흐름

이 매크로는 단 하나의 액션으로 구성된다.

  1. Cancel (All Macros) -- KM 엔진에 "모든 매크로 중단" 명령을 보낸다.

별도의 흐름도가 필요 없을 만큼 단순하다. 하지만 이 단순한 매크로가 가장 중요한 안전장치다.

핵심 기술 해설

Cancel 액션

KM의 Cancel 액션에는 여러 옵션이 있다.

옵션 동작
Cancel This Macro 현재 매크로만 중단
Cancel All Macros 실행 중인 모든 매크로를 중단
Cancel Other Macros 이 매크로를 제외한 나머지를 중단

이 매크로에서는 "Cancel All Macros"를 사용한다. 실행 중인 매크로가 여러 개일 수 있으므로, 모두 한꺼번에 중단하는 것이 안전하다.

매크로 개발 중 무한 루프에 빠지면 KM 에디터에서 수동 중단하기 어렵다. ⌃Delete 하나로 모든 것을 멈출 수 있으면 피해를 최소화할 수 있다. KM을 본격적으로 사용하기 전에 이 매크로부터 만들어두는 것을 권장한다.

활용 팁

  • 트리거는 다른 앱의 단축키와 겹치지 않는 조합으로 설정한다. ⌃Delete는 일반적으로 다른 용도로 쓰이지 않아 적합하다.
  • Cancel 외에 Pause 옵션도 있다. 일시 정지 후 재개가 가능하여 디버깅에 유용하다.

매크로 분석: 시스템 설정 앱 실행

무엇을 하는 매크로인가

⇧⌃⎋를 누르면 macOS 시스템 설정이 열린다.

트리거

트리거 타입 설명
HotKey ⇧⌃⎋ 어떤 앱이든 활성 상태에서 동작

액션 흐름

  1. ActivateApplication -- System Preferences 앱을 활성화한다. 실행 중이면 앞으로 가져오고, 아니면 새로 실행한다.

핵심 기술 해설

ActivateApplication 은 지정한 앱을 최전면으로 가져오는 액션이다. Dock 클릭과 같은 동작을 단축키 하나로 수행한다. 같은 패턴으로 자주 쓰는 앱마다 단축키를 배정할 수 있다.

macOS Ventura 이후 앱 이름이 "시스템 설정"으로 바뀌었으므로, 매크로의 앱 이름도 함께 수정해야 한다.

유틸리티 매크로 요약표

매크로명 트리거 핵심 액션 용도
Main Monitor ⌘⇧1 ManipulateWindow + SimulateKeystroke 메인 모니터로 창 이동
Second Monitor ⌘⇧2 ManipulateWindow + SimulateKeystroke 두 번째 모니터로 창 이동
Third Monitor ⌘⇧` ManipulateWindow + SimulateKeystroke 세 번째 모니터로 창 이동
마우스 커서 중앙 ⌃D MouseMoveAndClick 커서를 화면 중앙으로
Cancel All ⌃Delete Cancel 모든 매크로 비상 정지
시스템 설정 ⇧⌃⎋ ActivateApplication 시스템 설정 앱 실행

여섯 개 모두 액션 1~2개의 단순한 매크로지만, 매일 수십 번 사용하는 동작을 자동화한다. "작은 매크로의 축적"이 Keyboard Maestro 활용의 핵심이다.

직접 만들어보기

"모니터 배치" 매크로를 직접 만들어보자.

  1. KM 에디터에서 새 매크로를 만들고 이름을 "Utility - Main Monitor"로 설정한다.
  2. 트리거를 추가한다: Hot Key Trigger -- ⌘⇧1
  3. Manipulate a Window 액션을 추가한다. Action을 "Move and Resize"로 설정하고, 위치 (0, 0), 크기를 모니터 해상도에 맞게 지정한다. Screen은 "Main Screen"으로 선택한다.
  4. Simulate Keystroke 액션을 추가한다. 전체 화면 전환 단축키(⇧⌥⌃↩)를 입력한다.
  5. 같은 방식으로 Second Monitor(⌘⇧2), Third Monitor(⌘⇧`) 매크로를 만든다. Screen 설정만 바꾸면 된다.
  1. 테스트: 아무 앱 창을 열고 ⌘⇧1을 누른다. 창이 메인 모니터로 이동하고 전체 화면이 되는지 확인한다.

이 챕터에서 배운 것

  • ManipulateWindow 액션으로 창을 특정 모니터로 이동하고 크기를 조절하는 방법
  • MouseMoveAndClick 액션으로 마우스 커서를 원하는 위치로 이동하는 방법
  • Cancel 액션의 종류와 비상 정지 매크로의 필요성
  • ActivateApplication 액션으로 앱을 단축키 하나로 여는 방법

다음 챕터 예고

ch07에서는 셸 스크립트를 활용한 매크로를 다룬다. 바탕화면 파일 숨기기, 전원 제어 등 macOS 시스템 명령을 KM에서 실행하는 방법을 배운다. Part 2의 시작으로, 스크립팅의 세계에 첫발을 내딛는다.