Rebind

Rebind vs AutoHotkey

Your scripting logic, on Windows, macOS, and Linux, with hardware output.

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

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. The runtime is full-featured: a full SDK, real coroutines, built-in HTTP and WebSocket, and shared-memory IPC, all in one engine.

The full engine is free. Hardware isolation and the 8,000 Hz report rate 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)Software output free; USB HID from dedicated hardware with Rebind Link
Input captureOS hooksWith Rebind Link, before the OS sees the event
Max output rateOS event timingUp to 8,000 Hz USB report rate with Rebind Link
Works across keyboard and mouse brandsYesYes, 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 (Windows-only) 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 (#HotIf WinActive)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: name=CapsLock to Escape
-- rebind: version=1.0.0
-- rebind: min_sdk=3.0.0

Bind.Remap("CapsLock", "Escape")

Per-app hotkey

AutoHotkey:

#HotIf WinActive("ahk_exe Photoshop.exe")
^j::Send("^+s")
#HotIf

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

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

Bind("LCtrl+J", function()
  HID.Combo("LCtrl+LShift+S")
  return false
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.

Use Rebind when you work across Windows, macOS, and Linux; want output from real hardware at up to 8,000 Hz; 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. Remaps, binds, macros, text expansion, and HID output run on Windows 10/11, macOS on Apple Silicon and Intel, and Linux x86_64. A few deeper OS integrations are Windows-first today. The platform support matrix lists what each platform supports.