5 min read

Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.

Controller Emulator

Controller Emulator is a widget in Roblox Studio that emulates the devices players use to control your experience: gamepads, VR headsets and controllers, handhelds, and TV remotes. It shows a picture of the device you pick, sends real input events when you click it or press a mapped key, and lights up its controls as input arrives, so you can test a gamepad-first control scheme, or a VR interaction, without owning either.

Emulating input is separate from simulating a device. Device Simulator changes the screen, platform, and hardware your experience believes it's running on. Controller Emulator changes what's plugged into it. The two are usually used together.

Open Controller Emulator

Either:

  1. Click Virtual controller in the Device Simulator toolbar, or
  2. Click Controller in the Emulation toolbar tab.

The widget requires an open place. While you're in a playtest, opening the widget connects the emulated device and closing it disconnects it, so you can plug and unplug the controller mid-session.

Emulate a device

The dropdown at the top of the widget selects the device to emulate.

Controller Emulator showing Quest 3 controllers, keyboard mappings, and controls for moving the headset and controllers.
Device Emulates
Generic Gamepad A gamepad with no vendor-specific button naming.
PS4 A PlayStation 4 controller.
PS5 A PlayStation 5 controller.
Xbox An Xbox controller.
Generic Handheld A handheld PC with built-in controls.
TV Remote An Android TV remote, including its directional pad and center and back buttons.
Quest2 / Quest3 Meta Quest headsets and controllers.

Your experience sees the corresponding gamepad type, so code that branches on GamepadType or reads a controller's button set behaves as it would with the real device attached.

Send input

Input can come from three places, and the widget shows what arrived from any of them: as input is received, including from a real controller you have plugged in, the matching control on the device picture highlights. That's the fastest way to confirm that the input your experience received is the input you meant to send.

Device controls

Buttons, triggers, and thumbsticks on the device picture are interactive. Click or drag them to send input. Triggers and thumbsticks report analog values, not just pressed and released, so you can test a partial pull or a slow stick movement.

Keyboard

While the widget has focus, keyboard input is forwarded to the emulated device using its current mappings. This is what lets you test a control scheme at speed, with both hands, the way a player would use it. See Edit mappings to change which key drives which control.

Headset and hand poses

VR has no single control to click. Its input is a head pose and two hand poses, so when a VR device is emulated the widget adds controls for moving them.

Headset, Left Controller, and Right Controller each have a toggle. Enabled parts respond to your keyboard and mouse, and disabled parts hold still. Moving the head and one hand independently is what lets you test whether an interaction depends on where the player is looking.

Action Input
Move Shift + W / A / S / D
Fly up/down Shift + E / Q
Rotate Mouse move
Tilt Right click + mouse move
Switch controllers Shift + Left / Right
Toggle cursor lock Alt + 1
Toggle mouse emulation Alt + Esc

Click the 3D viewport to interact with the VR scene.

Translation sensitivity scales how far the enabled parts travel per keypress, from 1 to 10. Lower it when you're positioning a hand against a small target, and raise it to cross the scene. Reset Positions returns the head and both hands to their default pose during a playtest, which is the quickest way out of a pose you can't recover from by hand.

Edit mappings

Each emulated device has its own keyboard mappings, so W can mean one thing on a gamepad and another on a TV remote. Click Edit mappings to open the mapping editor, which shows the device picture with every control labeled by the key currently bound to it.

Controller Emulator mapping editor showing the keyboard key assigned to each gamepad control.

To remap a control, click its label, then press the key or keys you want bound to it. Hovering a label highlights the control it drives on the picture, so you can tell which physical control you're about to rebind.

Mappings are stored per device and persist across sessions.

Pair with the Device Simulator

Controller Emulator follows the device you're simulating. Selecting a console, headset, handheld, or Android TV device in Device Simulator switches Controller Emulator to the matching controller, so the simulated hardware and the emulated input stay consistent without you setting both.

Example workflows