dualsense-tools 0.2.0

Tools to interact with the Dualsense PS5 controller
Documentation
dualsense-tools-0.2.0 has been yanked.

Dualsense Tools

This crate contains a set of tools that interface with the Sony Dualsense PS5 controller:

  • A low-level interface to read and decode HID reports from the controller
  • An implementation of accelerometer-corrected-gyro tilt estimation (based on this document)
  • A bevy plugin that exposes tilt estimates as a resource, including an example to quickly visualize the estimates
  • A virtual device application that creates a custom controller tailored for 6-axis simulations (e.g. space games)

Dualsense tools library

The dualsense-tools crate implements an interface that facilitates reading the state of a Dualsense controller consisting of the functions:

pub fn read(&mut self) -> HidResult<DualsenseState>
pub fn read_into(&mut self, state: &mut DualsenseState) -> HidResult<()>

The DualsenseState struct contains information about axes, hat and buttons states.

It also provide a TiltEstimator component that implements basic handling of the gyro and accelerometer readings as well as a sensor-fusion approach similar to the one described in this document to determine the tilt (roll/pitch) of the gamepad. This is a stateful component and provides as output some quaternions representing different aspects of the gamepad tilt estimation process.

This library doesn't provide an event-loop or an event-based interface in general; it is being considered as a possibility for further development.

Bevy plugin

See dedicated README.

Tilt and throttle emulator

See dedicated README.