Rebind vs AutoHotkey

AutoHotkey, on Mac and Linux, with hardware output.

AutoHotkey alternative that runs on Mac and Linux with hardware output. Rebind Link adds real USB output at up to 8,000 Hz.

Same binds and hooks. Now on Mac and Linux.

Bind a key, transform an input, fire a hook, run a macro: if you write AutoHotkey, you already think in Rebind. Scripts are Luau, a fast, typed Lua.

AutoHotkey sends input from software, on Windows only. Rebind runs on Windows, macOS, and Linux, and with Rebind Link your output leaves a real USB device as standard HID.

Rebind is free. Rebind Link adds hardware output at up to 8,000 Hz.

AutoHotkey vs Rebind

Capability
AutoHotkey
Rebind

Scripting language

AHK (v1 and v2), purpose-built

Luau: fast, typed, coroutines

Platforms

Windows only

Windows, macOS, Linux

Output method

Software-level (SendInput)

Software output, or USB HID from Rebind Link hardware

Input capture

OS hooks

Rebind Link catches input before the OS does

USB report rate

Not applicable

Up to 8,000 Hz with Rebind Link

Works across keyboard and mouse brands

Yes

Yes, no vendor lock-in

Built-in HTTP client

No (external libraries)

Yes: Net.Get, Net.Post

Built-in HTTP / WS server

No

Yes: Net.Listen, Net.WSListen

Shared-memory IPC

No

Yes: Pipe (Windows-only) for a Python or Node sidecar

Real coroutines

Limited

Yes: Run, Sleep, After, Async

Declarative UI panels

No

Yes: UI.Schema, Toggle, Slider, Keybind

Drive from other languages

Community

Official TS, Python, and Rust clients

Per-app targeting

Yes (#HotIf WinActive)

Yes (process= / window= modeline)

Pixel sampling, window control

Some

Yes: Screen, Window, Macro

Price

Free, open source

Free. Rebind Link adds hardware output.

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.2.2
-- rebind: process=Photoshop.exe

Bind("LCtrl+J", function()
  HID.Combo("LCtrl+LShift+S")
  return false
end)

When each one fits

Use AutoHotkey when you only use Windows and software output is enough.

Use Rebind when you want portable core remaps across Windows, macOS, and Linux; standard USB HID output from dedicated hardware; a built-in HTTP/WebSocket runtime; or clients for TypeScript, Python, and Rust.

Use both: keep AutoHotkey on Windows, move what should travel or run on hardware to Rebind.

Common questions

Can I run my exact AutoHotkey scripts in Rebind? Not as-is: scripts are Luau. Same model, so porting is quick, and RebindGPT drafts the port from a plain-English description.

Rebind vs AutoHotkey

Run your AutoHotkey habits on a Mac.

Install v3.7.5RebindGPT

windows / macos / linux