Guides

Input

Read the controller's buttons, sticks and triggers with Enhanced Input, including the PS, Touchpad and Mic buttons.

Adaptive Pad registers the DualSense™ wireless controller as an Unreal input device. Its buttons arrive as the standard gamepad keys, so anything written for an Xbox controller works without changes: Input Mapping Contexts, Input Actions, InputKey events, UMG focus navigation.

Key mapping

Standard gamepad keys

ControllerUnreal key
✕ CrossGamepad Face Button Bottom
○ CircleGamepad Face Button Right
□ SquareGamepad Face Button Left
△ TriangleGamepad Face Button Top
D-padGamepad D-pad Up / Down / Left / Right
L1 / R1Gamepad Left Shoulder / Gamepad Right Shoulder
L2 / R2 (click)Gamepad Left Trigger / Gamepad Right Trigger
L2 / R2 (axis, 0–1)Gamepad Left Trigger Axis / Gamepad Right Trigger Axis
L3 / R3Gamepad Left Thumbstick Button / Gamepad Right Thumbstick Button
Left stick (−1–1)Gamepad Left Thumbstick X-Axis / Y-Axis
Right stick (−1–1)Gamepad Right Thumbstick X-Axis / Y-Axis
CreateGamepad Special Left
OptionsGamepad Special Right

Extra keys

Buttons that a generic gamepad does not have get their own keys, in the DualSense category of the key picker.

ControllerUnreal keyName in C++
PS buttonDualSense PS ButtonDualSense_PS
Touchpad clickDualSense Touchpad ClickDualSense_Touchpad
Mute buttonDualSense Mic ButtonDualSense_Mic
Touchpad, first finger (pressed while touching)DualSense Touchpad Finger 1DualSense_Touch1
Touchpad, first finger position (0–1 from the left / top)DualSense Touchpad Finger 1 X / YDualSense_Touch1_X / _Y
Touchpad, second fingerDualSense Touchpad Finger 2 (+ X / Y)DualSense_Touch2 (+ _X / _Y)

Using Enhanced Input

Nothing special is needed: add the keys to an Input Mapping Context as you would for any gamepad, and add the context to the player with Add Mapping Context.

Create an Input Action

For example IA_Pause, with value type Digital (bool).

Map it

In your Input Mapping Context, add a mapping for IA_Pause and pick Gamepad Special Right (Options). Add a second mapping with the P key for keyboard players.

Handle it

In the Player Controller, add the EnhancedInputAction IA_Pause event and do your thing on Started.

The same works for the extra keys: a mapping on DualSense Touchpad Click opens a map, DualSense PS Button opens a pause menu, and so on.

Touchpad

Each finger works as a button (pressed while it touches the pad) and two axes with its position, from 0 to 1 with the origin in the top-left corner. The axes are sent only while the finger is down, so they keep the last position after it lifts.

To read both fingers at once, with an id that changes at every new touch (to tell a new tap from a finger that slid), use DS Get Touchpad.

Motion sensors

The gyroscope and the accelerometer reach Unreal in two ways.

  • Unreal's motion keys: Tilt, Rotation Rate, Gravity and Acceleration, the same keys phones use. Map Rotation Rate in an Input Mapping Context for gyro aiming: it is the angular velocity in radians per second. Motion input must be enabled in Project Settings → Input → Enable Motion Controls (on by default).
  • DS Get Motion: the same data in friendlier units, for UI, debug or custom logic.
Field of FDSMotionUnitMeaning
Gyroscopedegrees per secondRotation around X (pitch), Y (yaw), Z (roll)
AccelerometergGravity included: about (0, 1, 0) with the controller flat and still
GravitygThe accelerometer smoothed over about 0.1 s
UserAccelerationgAccelerometer − Gravity: how the controller is being moved
TiltdegreesPitch (front edge up is positive) and Roll (right side up is positive), from Gravity. Yaw is always 0

To turn an object like the controller in the player's hands, use DS Get Orientation: the gyroscope integrated by the plugin, as a rotator in Unreal's axes, zero when the controller is held level with its front pointing forward. Add it to the object's base rotation with Compose Rotators. The integration drifts slowly, so give the player a way to recenter with DS Reset Orientation.

The axes are the controller's own: X to the right, Y up, Z towards the player. The sensors are calibrated with the data each controller stores in its memory.

To check the values while you work, type DualSense.ShowInput 1 in the console: see Troubleshooting.

Battery, headphones and trigger feedback

  • DS Get Battery: level from 0 to 1 (the controller reports it in steps of 10%) and state: Discharging, Charging, Full or Error.
  • DS Are Headphones Connected: true while headphones are plugged into the controller's jack.
  • DS Get Trigger Feedback: the status byte the controller sends back for each adaptive trigger. Sony does not document it, so it is given raw (plus its two halves) for experiments and debugging.

Notes

  • Stick dead zones are not applied by the plugin. Use Enhanced Input's Dead Zone modifier on the stick mappings, as you would for other gamepads.
  • Triggers report both a digital key (pressed or not) and an analog axis from 0 to 1. Adaptive trigger effects do not change these values: an effect that blocks the trigger halfway simply keeps the axis below 1.
  • With more than one controller, read Multiple controllers: in this version all controllers send input as the first player.

© 2026 Adaptive Pad by Altercode. Blueprint graphs rendered with ueblueprint (MIT). 3D controller based on a model by AHarmlessPotato, CC BY 4.0: rigged, split into moving parts, Sony marks removed.

Not affiliated with or endorsed by Sony Interactive Entertainment. "DualSense" is a registered trademark or trademark of Sony Interactive Entertainment Inc., used here only to describe compatibility. "Unreal" and "Unreal Engine" are trademarks or registered trademarks of Epic Games, Inc.