A local macOS menu bar app that types prepared text with human flow and rhythm.
The app lets you paste a block of text, arm it, and have the app type it for you - letter by letter. Good for cheating, but only if you already have the text prepared.
PS:
- "Absorbs" the keyboard, so you can type random things and they won't appear on screen (except the hotkeys, obviously)
- Global hotkeys:
Cmd+Opt+Oopens the control panel.Cmd+Opt+Tstarts, pauses, and resumes typing.Escemergency-pauses typing.Esctwice hard-resets the run so the next start begins from the top.
- Human-like typing simulation:
- Configurable typing speed.
- Easy words type faster.
- Harder words type slower and can be more error-prone (but the bot autocorrects itself, just like we humans do).
- Higher speeds produce fewer typos.
- Optional corrected typos and transpositions.
- Native macOS permissions flow for Accessibility and Input Monitoring.
- Minimal menu bar UI with local settings persistence.
Run it from source code for now, in the process of getting apple dev license
Option A — Command Line Tools (no Xcode needed)
- Install Command Line Tools:
xcode-select --install git clone https://github.com/Euler2718e/typingbot.gitcd typingbot && bash build_mac.shopen dist/TypingBot.app
Option B — Xcode
- Clone the repo and open the folder in Xcode
- Product → Build (⌘B)
- Run
bash build_mac.shin Terminal to assemble and sign the.app open dist/TypingBot.app
On first launch, grant Accessibility and Input Monitoring to TypingBot in System Settings → Privacy & Security.
Download TypingBot-macOS.zip from the Releases page.
- Download
TypingBot-macOS.zip. - Unzip it.
- Open
TypingBot.app. - If macOS blocks the app on first launch, right-click
TypingBot.appand chooseOpen. - Grant Accessibility and Input Monitoring when prompted.
TypingBot needs those permissions because macOS protects global keyboard listeners and apps that type into other apps. Accessibility allows TypingBot to send keystrokes. Input Monitoring allows TypingBot to listen for global hotkeys like Cmd+Opt+T.
- Press
Cmd+Opt+Oto open the panel. - Paste or type the text you want TypingBot to write.
- Adjust speed and typo settings.
- Click
Arm. - Focus the app and text field where the text should go.
- Press
Cmd+Opt+Tto start.
While TypingBot is running, it suppresses physical key presses so accidental keyboard input does not interfere with the generated text. Press Esc once to pause. Once paused, everything you type will appear on screen. Press Esc again while paused to reset the run to the beginning.
Requirements:
- macOS 13 or newer
- Xcode Command Line Tools
- Swift Package Manager
Clone and build:
git clone https://github.com/Euler2718e/typingbot.git
cd typingbot
./build_mac.sh
open dist/TypingBot.appThe build script compiles the Swift package, assembles a .app bundle in dist/, and applies an ad-hoc code signature so macOS can track the app consistently in Privacy & Security settings.
TypingBot is a small native macOS app:
- AppKit owns the menu bar lifecycle and permission setup window.
- SwiftUI renders the popover control panel.
- CoreGraphics event taps handle global hotkeys and keyboard suppression.
- Synthetic
CGEvents type the prepared text into the focused app. HumanSimcontrols timing, speed variation, corrected mistakes, transpositions, and word difficulty behavior.
- No analytics.
- No network calls.
- No server.
- Your prepared text stays on your Mac.
- Accessibility and Input Monitoring are used only for global hotkeys, keyboard suppression, and typing into the focused app.
MIT

