1day_1project

Day 002 · 매크로 녹화기

마우스·키보드 동작을 녹화해서 원하는 횟수만큼 다시 실행하는 윈도우 데스크톱 앱입니다. Python + tkinter + pynput으로 만들었습니다.

실행

run.bat을 더블클릭하면 됩니다. 처음 실행할 때 가상환경을 만들고 pynput을 설치합니다.

직접 실행하려면:

python -m venv .venv && .venv/Scripts/python.exe -m pip install -r requirements.txt
.venv/Scripts/python.exe main.py

단축키

Windows 전역 단축키(RegisterHotKey)로 등록하므로, 다른 프로그램을 쓰는 중에도 눌립니다.

키 동작
F9 녹화 시작 / 중지
F10 재생 시작 / 중지
F8 즉시 중지 (재생 대기 중이면 취소)

기능

파일 구성

main.py          tkinter 화면과 전체 흐름
hotkeys.py       Windows 전역 단축키 등록 (ctypes + RegisterHotKey)
recorder.py      pynput 리스너로 입력 녹화
player.py        별도 스레드에서 이벤트 재생
events.py        이벤트 직렬화 규칙과 설명 문구
storage.py       macros/*.json, settings.json 저장·불러오기

저장 형식

{
  "name": "매크로1",
  "created_at": "2026-10-01T15:04:21",
  "duration": 3.42,
  "hotkey": { "mods": ["ctrl", "alt"], "vk": 49, "label": "Ctrl+Alt+1" },
  "events": [
    { "dt": 0.0, "type": "move", "x": 820, "y": 410 },
    { "dt": 0.12, "type": "click", "x": 820, "y": 410, "button": "left", "pressed": true }
  ]
}

dt는 앞 이벤트로부터 흐른 시간(초)입니다.

한계