The three-stage pipeline
Input flows through Rebind in three stages: capture → script → output. Your keyboard and mouse connect to your PC as normal. In software mode, Rebind captures input via OS event hooks. In hardware mode, your devices are USB-forwarded into a sealed QEMU virtual machine running an isolated Alpine Linux kernel — so their raw evdev frames are captured with deterministic, host-independent timing. Each event fires your hooks — key handlers, mouse-move handlers, your tick loop, yourBinds — in the Luau engine at up to 8,000 Hz, where you remap keys, transform movement, and automate. The result is encoded out as standard USB HID, and your operating system sees an ordinary peripheral.
Software vs hardware
The same script runs two ways; only the transport changes. Software mode emits output through your operating system’s input APIs —SendInput on Windows, CGEvent on macOS, uinput on Linux — free and with no device required, so you can write and test a script end to end before deciding where its output should come from.
Hardware output routes the result through the Rebind Link device as real USB HID for deterministic, host-isolated timing at up to 8,000 Hz — each event is handled in under a millisecond, and your PC just sees an ordinary USB peripheral. A script declares its tick rate with a modeline, and on Windows, Rebind raises the system timer resolution so the loop runs at its declared rate.
Hardware also unlocks one capability software mode cannot offer on any OS: suppressing and transforming mouse movement (mouse_block scripts — inverters, acceleration curves, tremor filters). The operating system draws the cursor below anything a host process can intercept, so only a device that owns the input stream can rewrite motion. Keys, buttons, and scroll can be blocked in both modes.