생활정보

macOS에서 반복 키보드 매크로 만들기 (Hammerspoon)

까칠코더 2026. 7. 2. 22:27
반응형

macOS에서 단순 반복 작업을 자동화하고 싶을 때가 있습니다.

예를 들어 다음과 같은 작업입니다.

  • Chrome 활성화
  • ⌘ + Shift + 5 실행
  • Enter
  • →(오른쪽 방향키)
  • 2초 대기
  • 다시 반복

macOS 기본 기능인 단축어(Shortcuts)나 Automator로는 이러한 키보드 반복 제어가 제한적입니다. 무료이면서 강력한 자동화를 원한다면 Hammerspoon이 좋은 선택입니다.


Hammerspoon이란?

Hammerspoon은 Lua 스크립트를 이용해 macOS를 자동화할 수 있는 오픈소스 도구입니다.

대표적인 활용 예시는 다음과 같습니다.

  • 반복 키 입력
  • 단축키 등록
  • 특정 앱 자동 실행
  • 창 이동 및 크기 변경
  • 마우스 자동화
  • 개발 업무 자동화

설치

Homebrew를 사용하는 경우

brew install --cask hammerspoon

설치 후 Hammerspoon을 실행합니다.


접근 권한 설정

키 입력 자동화를 위해서는 macOS 권한이 필요합니다.

시스템 설정 → 개인정보 보호 및 보안

다음 항목을 허용합니다.

  • 손쉬운 사용(Accessibility)
  • 입력 모니터링(Input Monitoring)

권한을 변경했다면 Hammerspoon을 재시작합니다.

killall Hammerspoon
open -a Hammerspoon

설정 파일 생성

mkdir -p ~/.hammerspoon
touch ~/.hammerspoon/init.lua
open ~/.hammerspoon/init.lua

예제 매크로

아래 예제는

  1. Chrome 활성화
  2. ⌘ + Shift + 5
  3. Enter
  4. Chrome 다시 활성화
  5. 오른쪽 방향키
  6. 2초 대기
  7. 반복

을 수행합니다.

F8로 시작하고 F9로 종료합니다.

local running = false
local timer = nil

local chromeName = "Google Chrome"

local function focusChrome()
    local chrome = hs.application.find(chromeName)
    if chrome then
        chrome:activate()
    end
end

local function schedule(delay, fn)
    timer = hs.timer.doAfter(delay, fn)
end

local function loop()
    if not running then return end

    focusChrome()

    schedule(0.5, function()
        if not running then return end

        hs.eventtap.keyStroke({"cmd","shift"}, "5")

        schedule(0.5, function()
            if not running then return end

            hs.eventtap.keyStroke({}, "return")

            schedule(1.0, function()
                if not running then return end

                focusChrome()

                schedule(0.3, function()
                    if not running then return end

                    hs.eventtap.keyStroke({}, "right")

                    schedule(2.0, loop)
                end)
            end)
        end)
    end)
end

hs.hotkey.bind({}, "F8", function()
    if running then return end
    running = true
    hs.alert.show("Macro Start")
    loop()
end)

hs.hotkey.bind({}, "F9", function()
    running = false
    if timer then
        timer:stop()
        timer = nil
    end
    hs.alert.show("Macro Stop")
end)

설정 적용

코드를 저장한 뒤 메뉴 막대의 Hammerspoon 아이콘에서 Reload Config를 선택하거나 다음 단축키를 누릅니다.

Control + Option + Command + R

실행

  • F8 : 시작
  • F9 : 종료

활용 예

이 방식은 다음과 같은 작업에도 응용할 수 있습니다.

  • 웹페이지 반복 캡처
  • 전자책 페이지 캡처
  • 반복 테스트
  • QA 자동화
  • 키 입력 반복 작업
  • 개발용 단축키 자동화

마무리

Hammerspoon은 무료이면서도 매우 강력한 macOS 자동화 도구입니다.

단순한 키 입력 반복부터 복잡한 개발 업무 자동화까지 하나의 Lua 설정 파일로 관리할 수 있으며, 개발자뿐 아니라 반복 작업이 많은 사용자에게도 유용합니다.

반응형