Repio Documentation

Macro Recorder, Editor & Player — v5.0.x (PRO Edition)
Single-file Python/tkinter application

Desktop application for recording, editing and playing back mouse and keyboard macros. Single Python file, GUI on tkinter, input capture via pynput.
This documentation covers PRO Edition (v5.0.x). For the free Community Edition see the Community Edition section below or download page.

#Community Edition FREE

Community Edition (v3.3) is a free, open-source single-file Python application available on GitHub. It provides core macro recording and playback functionality.

Features available in PRO only: Web Hooks (HTTP URL includes), Save As, Unsaved changes tracking, Settings dialog, Column management, Cumulative timeline, Post-script actions, Configurable hotkeys, Build versioning, Run external program, Window persistence, Launch on login.

⬇ Download Community Edition from GitHubCompare editions

#1.1 Recording

Records all user actions in real-time:

Hotkey: F5 (toggle — start/stop recording)

#1.2 Playback

Lazy playback engine with memory optimization:

Hotkeys: F8 Play • F6 Stop • Esc Stop

#1.3 Pause / Resume

#1.4 Breakpoints Community

#1.5 Bookmarks Community

#1.6 Loops

#1.7 Include Files

#1.8 Editing

TreeView table with 10 columns: #, Type, X, Y, Btn, Key, Delay, Loops, File, Comment

#1.8b Column Management PRO

#1.8c Settings PRO

#1.8d Run External Program PRO

#1.8e Post-Script Actions PRO

#1.9 Clipboard & History

#1.11 File Operations

CSV format with 13 header fields, UTF-8 encoding.

#1.12 Versioning PRO

#1.14 Web Hooks PRO

Include macro actions from a remote server via HTTP/HTTPS.

Example URL: https://server.com/hook?filename=main&ip=192.168.1.5&line=42

#Hotkeys Reference

KeyActionContext
F5Start/Stop RecordingGlobal
F6Stop AllGlobal
F7Pause / ResumeGlobal
F8PlayGlobal
EscStop AllGlobal
F9Toggle BreakpointGlobal
Ctrl+NNew FileGlobal
Ctrl+OOpen FileGlobal
Ctrl+SSaveGlobal
Ctrl+Shift+SSave AsGlobal
Ctrl+ZUndoGlobal
Ctrl+YRedoGlobal
Ctrl+C/X/VCopy / Cut / PasteGlobal
Ctrl+ASelect AllGlobal
Ctrl+BToggle BookmarkGlobal
Ctrl+FSearchGlobal
F3Find NextGlobal
DelDelete SelectedGlobal
InsAdd ActionGlobal
PgUp/PgDnMove Selection (±15 rows)TreeView
Double-click / EnterEdit ActionTreeView
Right-clickContext MenuTreeView

#CSV Format

UTF-8 encoding, comma delimiter, first row is headers. 13 fields:

FieldTypeDescription
typestringAction type
xint/floatMouse X coordinate
yint/floatMouse Y coordinate
buttonstringMouse button: left, right, middle
key_codestringKey code: Key.shift, a, B, 1, etc.
delay_msfloatDelay before action (ms), format "%.4f"
loop_countintRepeat count for loop_start
file_pathstringPath or URL for include
dxintHorizontal scroll delta
dyintVertical scroll delta
commentstringComment text
is_bookmarkstringTrue / False
is_breakpointstringTrue / False

#Action Types

TypeDescriptionFields Used
moveMove cursorx, y, delay_ms
mousedownPress mouse buttonx, y, button, delay_ms
mouseupRelease mouse buttonx, y, button, delay_ms
clickClick (press+release)x, y, button, delay_ms
scrollScroll wheelx, y, dx, dy, delay_ms
keydownPress keykey_code, delay_ms
keyupRelease keykey_code, delay_ms
pauseDelaydelay_ms
loop_startLoop beginloop_count, comment
loop_endLoop endcomment
includeInclude file/URLfile_path, comment
commentComment (not executed)comment

#Architecture

Threading Model

Main Thread (UI)          ← tkinter mainloop
  _process_queue()          root.after(10ms) polling
  refresh_table()
  all UI callbacks

pynput listeners          ← Background daemon threads
  mouse.Listener             Write events to queue.Queue
  keyboard.Listener

Playback Thread           ← threading.Thread (daemon)
  player.play()              Reads from generator
  virtual clock

Key Classes

ClassPurpose
UnifiedRecorderRecords mouse & keyboard events via pynput into Queue
IncludeCacheLRU cache (32 entries) for included files & URLs
lazy_action_iteratorGenerator: recursively expands loops & includes
MacroPlayerPlayback engine with virtual clock & state tracking
HistoryManagerUndo/Redo stack (50 states, deep copy)
CSVHandlerSave/Load CSV with 13-field format
EditDialogModal dialog for editing individual actions
MacroAppMain application class, coordinates all components

#Constants

ConstantValueDescription
WINDOW_SIZE1200x800Default window size
HISTORY_LIMIT50Max undo/redo states
MAX_INCLUDE_DEPTH20Max include nesting
IncludeCache.max_size32Max cached files
URL_CACHE_TTL60sURL response cache lifetime
WEB_HOOK_TIMEOUT3sHTTP request timeout
Queue poll interval10msEvent queue polling rate
Sleep granularity10msMin sleep step in playback loop
Page step15 rowsPgUp/PgDn step size

#Dependencies

python >= 3.7
tkinter, csv, time, threading, queue, copy,
os, json, io, webbrowser, urllib.request,
urllib.parse, urllib.error, socket          # all stdlib

pynput                                     # pip install pynput (only external dep)
Single external dependency: pynput. Everything else is Python standard library.