Programmable input

Your gear. Your code.

Program the mouse and keyboard you already own. Rebind Engine runs your Luau scripts to remap keys, transform input, and build app-specific controls.

The Engine is free. Rebind Link adds physical USB output and the hardware path for mouse-movement transforms.

input · rule · output

From code to movement

Invert a mouse with one function.

OnMove receives each movement report from your mouse. This script blocks the original and sends the opposite through Rebind Link, while your hand is still moving.

-- rebind: min_sdk=3.0.0
-- rebind: name=Mouse Inverter
-- rebind: mouse_block=true

function OnMove(dx, dy)
  HID.Move(-dx, -dy)
  return false
end

mouse-inverter.luau

The whole script

illustration

Same hand, opposite cursor

An illustration, not a recording or a measurement.

up to 8,000 Hz is Rebind Link’s USB report rate in hardware mode. It is a report rate, not a latency measurement. Mouse-movement transforms require Rebind Link on Windows or macOS.

Choose your output

Start with software. Add a physical path.

The Engine runs your scripts on the computer. Choose how the result reaches your applications.

Rebind Engine · Free

Write your own behavior.

Remap keys, expand text, build per-app controls, and connect local tools. Capture and output use operating-system APIs.

Install free

Rebind Link · Hardware

Put the result on the wire.

Add physical USB keyboard and mouse output, with the isolated capture path used for Rebind’s mouse-movement transforms.

View Rebind Link

Capture and OS integrations vary by platform. Check platform support.

Start somewhere useful

A rule for the way you work.

Adapt an example, install a published package, or write your own behavior.

Build on the input layer.

Connect your own tools through Luau, HTTP, or the TypeScript, Python, and Rust clients.

For developers

Give an agent a way to act.

Use Rebind’s MCP server for screenshots, keyboard and mouse actions, and script execution.

For agents

Make the next input yours.

Install the free Engine, start from an example, and write the behavior you want.