Remote Control Simulation

July 25, 2026 · View on GitHub

The brs-engine simulates the Roku remote control, offering customizable mapping and extendable capabilities. The browser libraries support Keyboard and Game Pad simulation, with the default mapping detailed in the section below. It is also possible to customize the control buttons mapping and enable multi-key support using a special manifest entry.

If you want to create your own control simulation, such as a touch screen control, you can use the Engine API methods sendKeyDown, sendKeyUp, and sendKeyPress.

When running under the CLI in a terminal (TTY), the keyboard acts as the remote control directly on the main thread while the app runs on a worker thread — see the keyboard table in the CLI guide. The NodeJS brs.ecp.js library additionally supports sending commands via the Roku ECP API from other devices on the network (--ecp option).

Keyboard and Game Pad Control Reference

The default mapping of the keyboard and game pads to Roku remote control is described below:

KeyboardGame PadRoku ControlDescription
Esc or Del1BackReturn to the previous screen, some apps will close at the main menu.
Home or Shift+Esc9HomeClose the currently loaded app.
Arrow KeysJoys & D-PadD-PadDirectional controls to navigate on menus and control games.
Backspace2 or 4ReplayInstant replay button.
Enter0OKSelect button.
Insert or Ctrl+85 or 16InfoInformation/Settings button
PageUp or Cmd+⬅️6RewindReverse scan button.
PageDown or Cmd+➡️7Fast ForwardForward scan button.
End3 or 8Play/PausePlay/Pause button.
Ctrl+A10AA game button.
Ctrl+Z11BB game button.
F1017Volume MuteButton to toggle the simulator audio mute on/off.
Letters & digitsn/aText inputAny other printable key is sent as a literal lit_<char> key, used by keyboard dialogs.

Note: There are mappings not listed above, specific for MacOS or Windows, please look at the file src/api/control.ts for details.