Skip to content
PS5PCEM
WorkingCPU, loader and tools

Controllers and keyboard

DualSense, DualSense Edge and DualShock 4 are read over HID, on USB and Bluetooth. Xbox-compatible pads use XInput. The keyboard maps to the sticks through a launcher profile.

Repository notes through October 10, 2026

HID reports

XInput enumerates Xbox-compatible devices. A DualSense plugged into the PC is invisible to it unless a translation layer invents a virtual Xbox pad. PS5PCEM opens the Sony pad over HID and decodes the report. The fields are the same on USB and Bluetooth. The offsets move, because Bluetooth prefixes the payload, and the DualSense places its triggers ahead of the button bytes.

The d-pad arrives as one of eight compass positions, not as four independent bits. Reads are overlapped and never block. A poll drains the driver's queue and keeps the newest report. Answering with the oldest report would lag the sticks by however far behind the frame had fallen.

Output, motors and the light bar

Output reports carry both motors and the light bar. On Bluetooth the report is shifted and ends with a checksum the pad checks before it acts, so a report built for the cable is ignored over the air. The launcher's input page names the pad it found and can run a one-second test that spins both motors and sweeps the light bar. The device is opened shared, and for writing where the host allows it.

The pad takes precedence over XInput. XInput remains the path for Xbox-compatible controllers and for anything that presents itself as one. The launcher stores the choice, the controller index and the keyboard bindings, and passes them to game-run as environment variables.

Keyboard and scripted input

WASD is the left stick. Alt plus the arrow keys is the right stick. Profiles can be controller, keyboard, or both. PS5_INPUT_MODE=scripted keeps the bring-up button pulses and ignores the physical devices, so a keypress in another window does not change a measured scene.

Inside HLE, the primary pad can be opened with scePadOpen or obtained with scePadGetHandle. The second path matters for titles that never open the logged-in user's controller before they poll it. This is the host side of that handle.

What is implemented

  • DualSense, DualSense Edge and DualShock 4 over USB and Bluetooth HID.
  • Newest-report polling, motors, light bar, and a Bluetooth checksum.
  • XInput for Xbox-compatible pads, and remappable keyboard profiles.
  • A scripted input mode that ignores physical devices during measurements.

What is still missing

  • Touchpad, adaptive triggers and motion sensors are not a full DualSense feature set.
  • Haptics from a movie track are not routed to the motors.
  • The HID path is the Windows host path used by the launcher and game-run.

Related mechanisms

What these pages are

The text follows the architecture notes and the October 2026 reports in the PS5PCEM repository. A focused test passing is not a new frame rate and not a new playthrough.

All technologies