Skip to main content
Handlers receive keys by the names in the Name column, and binds and rb.input match those names. Names a script passes to rb ignore case: rb.bind("f1", fn) binds F1. The Also accepted names work for rb.hid output; a bind on an alias such as "Return" never fires.

Letters and digits

A to Z, 0 to 9.

Function keys

F1 to F24.

Mouse buttons

WheelUp and WheelDown name one step of the wheel as a bind trigger only; send the wheel with rb.hid.scroll.

Controllers

Needs: min_sdk=3.11.0. Rebind captures game controllers in hardware mode when the Link’s USB profile includes a joypad or the Xbox controller, and passes them through to that output, so a controller keeps working with no script running. Otherwise the controller stays with the computer and scripts do not see it. Scripts see its buttons as keys: down and up events, rb.bind, rb.bind.remap, rb.input.is_down and rb.hid.down all take these names. Buttons are named by position with Xbox letters, so PadA is the bottom face button on any controller, whatever is printed on it. Every script’s down and up handlers receive them, so a handler that blocks every key also blocks the controller’s buttons. Joy1 to Joy32 are accepted wherever the Pad names are. Sent with rb.hid, JoyN presses joypad button N, so Joy1 and PadA are the same output. An rb.ui.keybind field captures a controller button in hardware mode. Rebind knows the button positions of wired and dongle Xbox controllers, DualShock 3, DualShock 4, DualSense and Switch controllers, and of controllers that present as one of them. Any other controller’s buttons are named Joy1 to Joy32 in the order it reports them. A stick within 2% of center, or within the controller’s own dead zone when that is larger, reads 0. Several controllers share the one joypad the way two keyboards share keys: a button stays down while any controller holds it, and an axis follows whichever controller moved it last. A controller that leaves releases what it alone held and returns its axes to rest. Limits: Rebind Link’s joypad is a standard HID gamepad, so games that read only XInput do not see it. On Windows, put the Xbox controller in the Link’s USB profile instead (firmware 4.1.0 or later); XInput games see that one. The Xbox controller output works on Windows only, and the paddles PadP1 to PadP4 have no Xbox control. Rumble, motion sensors and touch position are not passed through (a DualShock 4 or DualSense touchpad click arrives as Mouse1), and the macro recorder does not record controllers. A macro action can press a controller button by code; such a macro plays on the host.

Modifiers

In bind chords, Ctrl, Shift, Alt and Win match either side and the side names such as LCtrl match one side. A bind refuses the other modifier aliases, such as Cmd+C.

Editing and navigation

System

Punctuation

The physical key, whatever the shift state.

Numpad

Media keys

Media keys cannot be sent as usage:N or played by rb.macro.stream.

Transport key support

Key names are USB HID usages, not characters; the active keyboard layout decides which character a usage produces.
  • In software mode, rb.hid.type hands text to the operating system’s output.
  • On Rebind Link, the Link types each ASCII character as the key and modifiers a US layout uses for it, and skips characters that map has no key for. A computer set to another layout turns those keys into its own characters.
For arbitrary Unicode use rb.system.type_text, or rb.clipboard.set and the paste chord. Test layout-sensitive scripts on each target layout and output.

Delivered keys

Software mode delivers letters, digits, F1 to F12, modifiers, editing, navigation, punctuation and numpad keys. F13 to F24, Menu, IntlBackslash, and media and volume keys arrive only in hardware mode. Every name on this page except IntlBackslash can be sent with rb.hid.