Rebind

Rebind vs AutoHotkey

Your AutoHotkey logic, on any OS, in hardware.

AutoHotkey is the Windows gold standard for input scripting. Rebind keeps the same scripting model and runs it on Windows, macOS, and Linux, with standard USB HID output from dedicated hardware at up to 8,000 Hz.

Same mental model. A bigger runtime.

If you write AutoHotkey, you already think the way Rebind works: bind a key, transform an input, fire a hook, run a macro. Rebind's scripting language is Luau — a fast, typed member of the Lua family. The model carries straight over.

AutoHotkey is Windows-only and sends input at the software level. Rebind runs the same script on Windows, macOS, and Linux. With Rebind Link, output leaves a dedicated USB device as standard HID — your OS sees only the Rebind keyboard and mouse. The runtime is full-featured: 26 namespaces, real coroutines, built-in HTTP and WebSocket, and shared-memory IPC, all in one engine.

The full engine is free. Hardware isolation and 8,000 Hz come with Rebind Link.

AutoHotkey vs Rebind

AutoHotkey is excellent and free. This table is about reach and runtime, not quality.

CapabilityAutoHotkeyRebind
Scripting languageAHK (v1 and v2), purpose-builtLuau — fast, typed, coroutines
PlatformsWindows onlyWindows, macOS, Linux — same scripts
Output methodSoftware-level (SendInput)Standard USB HID from dedicated hardware
Input captureOS hooksIsolated environment — before the OS sees the event
Max processing rateOS event timingUp to 8,000 Hz on hardware (125 µs budget)
Works with any USB deviceYesYes — no vendor lock-in
Built-in HTTP clientNo (external libraries)Yes — Net.Get, Net.Post
Built-in HTTP / WS serverNoYes — Net.Listen, Net.WSListen
Shared-memory IPCNoYes — Pipe for a Python or Node sidecar
Real coroutinesLimitedYes — Run, Sleep, After, Async
Declarative UI panelsNoYes — UI.Schema, Toggle, Slider, Keybind
Drive from other languagesCommunityOfficial TS, Python, and Rust clients
Per-app targetingYes (#IfWinActive)Yes (process= / window= modeline)
Pixel sampling, window controlSomeYes — Screen, Window, Macro
PriceFree, open sourceFree engine; optional Rebind Link

CapsLock to Escape

AutoHotkey:

CapsLock::Escape

Rebind — the same remap, and it runs on macOS and Linux too:

-- rebind: min_sdk=3.0.0
-- rebind: name=CapsLock to Escape
Bind("CapsLock", function()
  HID.Press("Escape")
end)

Per-app hotkey

AutoHotkey:

#IfWinActive ahk_exe Photoshop.exe
^j::Send ^+s
#IfWinActive

Rebind — the modeline scopes the whole script, so there are no per-binding guards:

-- rebind: min_sdk=3.0.0
-- rebind: name=Photoshop Save As
-- rebind: process=Photoshop.exe

Bind("LCtrl+J", function()
  HID.Press("LCtrl+LShift+S")
end)

When each one fits

Use AutoHotkey when you're on Windows only, want the deepest, most mature ecosystem of scripts and docs, and software-level output is all you need. It's excellent and free.

Use Rebind when you work across Windows, macOS, and Linux; want output from real hardware with deterministic 8,000 Hz timing; want a built-in HTTP/WebSocket runtime; or want to drive input from TypeScript, Python, or Rust.

Use both — keep your AutoHotkey setup on Windows and port the scripts you want portable or hardware-backed to Rebind.

Common questions

Can I run my exact AutoHotkey scripts in Rebind? No — scripts are Luau, not AHK syntax. But the model is the same, porting is straightforward, and RebindGPT can draft a port from a plain-English description.

Does Rebind work on macOS and Linux? Yes. The same scripts run on Windows 10/11, macOS on Apple Silicon and Intel, and Linux x86_64.

Does Rebind need a specific keyboard or mouse? No. Any USB keyboard and mouse — no vendor lock-in.

Port a script this afternoon.