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
| HID | keyboard and mouse output, modifier combo syntax |
| Input | real-time physical key state |
| Macro | record, play, stream, transform input sequences |
| Screen | pixel color sampling |
| Window | find, move, resize, pin, control windows |
| Net | HTTP client/server, WebSocket server/client |
| Audio | WAV/MP3/OGG/FLAC playback |
| Clipboard | system clipboard read/write |
| File | sandboxed file I/O, JSON, TOML |
| Regex | PCRE pattern matching |
| Pipe | shared memory IPC with external processes |
| Dialog | native OS file/message dialogs |
| Timer | delayed and repeating callbacks |
| Math | random, gaussian, spline, interpolation |
| UI | declarative config schema |
| System | cursor, screen, window info, shell commands |
| Config | TOML config file I/O |
| Bind | declarative key bindings, remaps, toggles |
| Script | self-control (exit, reload) |
| Log | structured logging to the UI |
How Rebind compares
| Rebind | AutoHotkey | G Hub / Synapse / iCUE | Kmbox | Titan Two | XIM | Stream Deck | |
|---|---|---|---|---|---|---|---|
| Cross-platform | Windows, macOS, Linux | Windows only | Windows only | Windows only | console + PC | console only | Windows, macOS |
| Scripting language | Luau | AHK | limited Lua (G Hub only) | none | GPC (compiled) | none | none |
| Hardware-isolated output | yes | no | own brand only | yes | yes | yes | n/a |
| Any mouse | yes | yes | no | yes | yes | yes | n/a |
| Any keyboard | yes | yes | no | no | yes | no | n/a |
| HTTP client/server | yes | no | no | no | no | no | no |
| WebSocket server/client | yes | no | no | no | no | no | no |
| Coroutines | yes | limited | no | no | no | no | no |
| Pixel sampling | yes | yes | no | no | no | no | no |
| Window control | yes | yes | no | no | no | no | no |
| Macro record/play | yes | yes | basic | no | basic | no | no |
| Shared memory IPC | yes | no | no | no | no | no | no |
| Declarative UI config | yes | no | no | no | no | no | yes |
| Single PC | yes | yes | yes | two required | yes | yes | yes |
| VM-level input capture | yes | no | no | no | no | no | no |
| Per-app activation | yes | yes | no | no | no | no | yes |
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.