Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Rebind is a scriptable input engine. It captures your physical keyboard and mouse through an isolated VM, runs every input event through Luau scripts at up to 8kHz, and outputs the result through a dedicated USB device (a Teensy 4.x running Rebind firmware). Your real peripherals disappear from the OS. The system sees only the Rebind device – a standard keyboard and mouse.

It works on Windows, macOS (ARM and Intel), and Linux with a unified protocol. Same scripts, same hardware, same behavior across all three platforms. Write once, run anywhere.

It works with any mouse and keyboard. One set of scripts across all your hardware. Switch peripherals or switch operating systems and nothing changes.

Scripting

Scripts are written in Luau, a fast typed variant of Lua. Real control flow, coroutines, timers, state management, and a complete standard library. Anything from a single key remap to a multi-step automation that reacts to window focus, reads pixel colors, communicates with external processes, or serves HTTP and WebSocket requests.

function OnDown(key)
    if key == "CapsLock" then
        HID.Press("Escape")
        return false -- block the original key
    end
    return true -- pass everything else through
end

Scripts define their own settings panels – toggles, sliders, keybinds, dropdowns – rendered automatically in the browser. Users configure without editing code.

SDK

HIDkeyboard and mouse output, modifier combo syntax
Inputreal-time physical key state
Macrorecord, play, stream, transform input sequences
Screenpixel color sampling
Windowfind, move, resize, pin, control windows
NetHTTP client/server, WebSocket server/client
AudioWAV/MP3/OGG/FLAC playback
Clipboardsystem clipboard read/write
Filesandboxed file I/O, JSON, TOML
RegexPCRE pattern matching
Pipeshared memory IPC with external processes
Dialognative OS file/message dialogs
Timerdelayed and repeating callbacks
Mathrandom, gaussian, spline, interpolation
UIdeclarative config schema
Systemcursor, screen, window info, shell commands
ConfigTOML config file I/O
Binddeclarative key bindings, remaps, toggles
Scriptself-control (exit, reload)
Logstructured logging to the UI

How Rebind compares

RebindAutoHotkeyG Hub / Synapse / iCUEKmboxTitan TwoXIMStream Deck
Cross-platformWindows, macOS, LinuxWindows onlyWindows onlyWindows onlyconsole + PCconsole onlyWindows, macOS
Scripting languageLuauAHKlimited Lua (G Hub only)noneGPC (compiled)nonenone
Hardware-isolated outputyesnoown brand onlyyesyesyesn/a
Any mouseyesyesnoyesyesyesn/a
Any keyboardyesyesnonoyesnon/a
HTTP client/serveryesnononononono
WebSocket server/clientyesnononononono
Coroutinesyeslimitednonononono
Pixel samplingyesyesnonononono
Window controlyesyesnonononono
Macro record/playyesyesbasicnobasicnono
Shared memory IPCyesnononononono
Declarative UI configyesnononononoyes
Single PCyesyesyestwo requiredyesyesyes
VM-level input captureyesnononononono
Per-app activationyesyesnonononoyes

AutoHotkey is the closest in scripting capability but has no hardware isolation. Peripheral software (G Hub, Synapse, iCUE) provides hardware output but locks you to one brand with a macro recorder instead of a language. Kmbox has hardware isolation but requires two PCs and zero scripting. Titan Two has a compiled language (GPC) but no network I/O, no coroutines, and no runtime UI. XIM and Stream Deck solve narrower problems with no general scripting surface.