Skip to content

Controller Input

Denchi edited this page Mar 27, 2026 · 3 revisions

Controller Input

VTube Studio supports game controller input on the desktop (Steam) version. You can use a controller to drive tracking parameters on your Live2D model (for example to animate a Live2D controller your model is holding) and to trigger hotkeys (for example, toggling an expression when you press a button on the controller).

⚠️ Important: If your controller doesn't show up in VTube Studio or doesn't receive input, try turning off Steam Input for VTube Studio.

Supported Controllers

VTube Studio uses Rewired for controller input, which means a wide range of controllers are supported, including:

  • PlayStation – DualShock 4, DualSense (PS5), DualSense Edge (PS5)
  • Xbox – Xbox One, Xbox Series X/S controllers
  • Nintendo – Switch Pro Controller
  • Generic – Most DirectInput and XInput compatible gamepads

Extended support (touchpad, orientation/gyroscope data) is currently available for DualShock 4, DualSense and DualSense Edge controllers only. Most controllers should just work natively, but for some controllers, you may have to run manual controller setup in VTube Studio.


The Controller Widget

The Controller Widget shows a live visualization of your controller. As you press buttons, move sticks, or pull triggers, the corresponding elements on the on-screen controller model will animate in real time.

From the Controller Widget, you can also select which controller to use and view a detailed list of all supported controller parameters with their current values.

Selecting a Controller

Use the dropdown at the top of the Controller Widget to choose which controller to use. The dropdown includes the following options:

Option Description
No Controller Controller input is disabled.
All Controllers Input from all connected controllers is combined.
Specific controller Only input from this specific controller is used.

If a selected controller is disconnected, a warning indicator will appear on the widget. If it is reconnected later, it will be picked up again automatically.

When "All Controllers" is selected, extended DualSense/DualShock data will be read from the first detected DualShock/DualSense controller, if available.

Running Controller Setup

Most controllers should just work correctly in VTube Studio without any special setup. However, some lesser known controllers may not work out of the box.

For these controllers, you can run the controller button setup ("Button Config"), which will let you manually set up button mappings in VTube Studio. This makes it possible to use almost all controllers in the app.

To run the setup:

  1. Make sure a specific controller is selected in the dropdown.
  2. Click "Button Config".
  3. VTube Studio will walk you through each input one at a time. The on-screen controller model will highlight which button or axis to press.
  4. Press the corresponding button/axis on your physical controller, or click "Skip" to skip that input.
  5. Once all inputs have been mapped, the setup is complete and your mapping is saved automatically.

You can cancel the setup at any time. If you cancel, your previous mapping will be restored.

Your controller mappings are stored in the file vts_controller_settings.json in the VTube Studio config folder. Deleting that file will reset all manual controller setups.

Tip: If your buttons feel mixed up after connecting a new controller, simply run the setup once. You can also click "Reset Setup" to clear your custom mapping and go back to the defaults.


Controller Hotkeys

Controller buttons can be used as hotkey triggers, just like keyboard keys. You can assign controller inputs to any hotkey in the hotkey settings, or even combine them with keyboard keys.

When setting up a hotkey, controller inputs will appear in the key binding list alongside keyboard keys. All controller button inputs directional stick inputs can be used as hotkey triggers.

On DualShock 4 and DualSense controllers, touchpad swipe gestures can also trigger hotkeys:

Hotkey Input Description
Swipe Left Swipe left on the touchpad
Swipe Right Swipe right on the touchpad
Swipe Up Swipe up on the touchpad
Swipe Down Swipe down on the touchpad

Swipe detection uses a directional threshold. The swipe must be clearly horizontal or vertical (not diagonal) to register. Once a swipe direction is locked in for a given finger touch, it stays active until the finger is lifted.


Controller Parameters

When a controller is active, VTube Studio provides a set of tracking parameters that you can map to your Live2D model parameters, just like face tracking parameters. These update every frame based on the current controller state.

You can view all parameter values live by clicking the "Show Parameter List" button in the Controller Widget. This opens a floating text panel showing every parameter and its current value in real time.

Sticks

Parameter Range Description
ControllerStickLeftX -1 to 1 Left stick horizontal (left = -1, right = 1)
ControllerStickLeftY -1 to 1 Left stick vertical (down = -1, up = 1)
ControllerStickRightX -1 to 1 Right stick horizontal
ControllerStickRightY -1 to 1 Right stick vertical
ControllerStickPressLeft 0 or 1 Left stick click (L3)
ControllerStickPressRight 0 or 1 Right stick click (R3)

D-Pad

Parameter Range Description
ControllerDPadX -1, 0, or 1 D-Pad horizontal (left = -1, right = 1)
ControllerDPadY -1, 0, or 1 D-Pad vertical (down = -1, up = 1)

Face Buttons

Parameter Range Description
ControllerTriangle 0 or 1 Triangle / Y button
ControllerCross 0 or 1 Cross / A button
ControllerSquare 0 or 1 Square / X button
ControllerCircle 0 or 1 Circle / B button

Shoulder Buttons

Parameter Range Description
ControllerShoulderLeft 0 or 1 Left shoulder / L1 / LB
ControllerShoulderRight 0 or 1 Right shoulder / R1 / RB

Triggers

Parameter Range Description
ControllerTriggerLeft 0.0 to 1.0 Left trigger (analog)
ControllerTriggerRight 0.0 to 1.0 Right trigger (analog)

Option Buttons

Parameter Range Description
ControllerOptionLeft 0 or 1 Select / Share button
ControllerOptionRight 0 or 1 Start / Options button
ControllerHome 0 or 1 Home / PS button
ControllerTouchPadPress 0 or 1 Touchpad click

Special / Aggregated Values

Parameter Range Description
ControllerButtonsAnyLeft 0 or 1 1 if any left-side button is pressed
ControllerButtonsAnyRight 0 or 1 1 if any right-side button is pressed
ControllerButtonCountLeft 0+ Number of left-side buttons currently pressed
ControllerButtonCountRight 0+ Number of right-side buttons currently pressed
ControllerLean -1 to 1 A calculated "lean/nudge" value. Tilts based on which side's buttons are being pressed and stick positions.

Finger Position (estimated)

These parameters estimate where the user's thumbs and index fingers are based on which buttons are currently active:

Parameter Values Description
ControllerThumbPosLeft 0–3 Left thumb: 0 = On Buttons, 1 = On Stick, 2 = On Option, 3 = On Touchpad
ControllerThumbPosRight 0–3 Right thumb position (same mapping)
ControllerFingerPosLeft 0–2 Left index finger: 0 = On Shoulder, 1 = On Trigger, 2 = On Both
ControllerFingerPosRight 0–2 Right index finger position (same mapping)

DualShock 4 / DualSense Extended Parameters

These parameters are only available when a DualShock 4 or DualSense controller is connected:

Parameter Range Description
ControllerTouchPadTouchCount 0–2 Number of fingers currently touching the touchpad
ControllerTouchPadFingerLeftActive 0 or 1 Whether the left/first finger is on the touchpad
ControllerTouchPadFingerRightActive 0 or 1 Whether the right/second finger is on the touchpad
ControllerTouchPadFingerLeftX 0.0 to 1.0 Left finger X position on touchpad
ControllerTouchPadFingerLeftY 0.0 to 1.0 Left finger Y position on touchpad
ControllerTouchPadFingerRightX 0.0 to 1.0 Right finger X position on touchpad
ControllerTouchPadFingerRightY 0.0 to 1.0 Right finger Y position on touchpad
ControllerOrientationX -60.0 to 60.0 Controller orientation X (Euler angle, yaw)
ControllerOrientationY -60.0 to 60.0 Controller orientation Y (Euler angle, pitch)
ControllerOrientationZ -60.0 to 60.0 Controller orientation Z (Euler angle, roll)

Extended DualShock 4 / DualSense Support

When a DualShock 4 (PS4) or DualSense/DualSense Edge (PS5) controller is connected, VTube Studio can read additional data that is not available on other controllers.

Touchpad

The DualShock 4 and DualSense controllers have a touchpad that supports up to two simultaneous touch points. VTube Studio tracks:

  • Whether each finger (left/right) is currently touching the touchpad.
  • The X and Y position of each finger, normalized to a 0–1 range.
  • The total number of fingers on the touchpad.
  • Swipe gestures (left, right, up, down) that can be used as hotkey triggers.

Orientation / Gyroscope

The DualSense and DualShock 4 controllers have a built-in gyroscope. VTube Studio reads the orientation of the controller and exposes it as three Euler angle parameters (ControllerOrientationX, ControllerOrientationY, ControllerOrientationZ).

This can be used to tilt or move your model by physically tilting the controller.

Resetting Orientation

Because the gyroscope can drift over time, you may need to reset the orientation so that the controller's current physical position is treated as "neutral."

There are two ways to reset the orientation:

  1. Click the "Reset Orientation" button in the Controller Widget.
  2. Hold a button combination on the controller: Press and hold L1 + R1 + L2 + R2 + Triangle for about 2 seconds. The controller will vibrate briefly to confirm the reset.

After resetting, the controller's current position becomes the new "zero" orientation.


Steam Controller Input

VTube Studio is launched through Steam, and Steam has its own controller input system (Steam Input) that can intercept and remap controller signals before they reach the application. In some cases, this can interfere with VTube Studio's controller detection or cause buttons to be mapped incorrectly.

If you are having issues with controller input or your controller does not show up in VTube Studio, you can try disabling Steam Input for VTube Studio specifically: Right-click VTube Studio in your Steam Library → Properties → Controller → Set the override to "Disable Steam Input".

Clone this wiki locally