마우스·키보드 동작을 녹화해서 원하는 횟수만큼 다시 실행하는 윈도우 데스크톱 앱입니다. 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 |
즉시 중지 (재생 대기 중이면 취소) |
Esc로도 중지됩니다.변경 버튼으로 바꿀 수 있고, settings.json에 저장됩니다.단축키 지정을 누르면 그 매크로에만 쓰는 실행 단축키를 줄 수 있습니다 (예: Ctrl+Alt+1). 누르면 해당 매크로를 불러와 바로 재생합니다.Esc나 F12는 기본값으로 쓰지 않습니다. Esc를 전역으로 잡으면 다른 프로그램에서 Esc가 막히고, F12는 윈도우가 예약한 키라 등록 자체가 거부됩니다.settings.json에 저장돼 다음 실행에도 유지됨macros/ 폴더에 JSON으로 저장하고 목록에서 불러오거나 삭제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는 앞 이벤트로부터 흐른 시간(초)입니다.
Esc를 누르세요.