Controller
JoyShockMapper configuration
FPS-perspective gyro turn heatmap
Each completed gyro camera movement is integrated into an in-game turn and counted here. Distance from the center is the in-game turn angle (degrees); direction shows FPS camera movement direction. JoyShockMapper REAL_WORLD_CALIBRATION and IN_GAME_SENS are applied through the mouse-to-camera conversion. The default radial scale is 0–100° and expands dynamically in 50° steps when a larger turn is recorded. The distribution uses 5° bins below 50° (0–5°, 5–10°, …, 45–50°), then progressively wider bins for larger angle ranges. GYRO_OFF movements are excluded.
Raw vs JoyShockMapper-processed angular velocity
Angular acceleration magnitude
Time spent at each effective sensitivity
This histogram is time-weighted: each IMU sample contributes its elapsed time to the effective sensitivity bucket, so it shows where the player actually spends time rather than simply counting samples.
Effective sensitivity over time
Aiming profile
Play a session to build an aiming profile. GYRO_OFF samples are excluded from the velocity/sensitivity statistics and completed-turn analysis.
Raw gyro
Processed gyro
Angular motion
Accelerometer
Orientation from gravity
Session
Debug: DualSense initialization & factory calibration
DualSense initialization & factory calibration
| Axis | Gyro bias | Gyro + | Gyro − | Gyro denominator | Accel + | Accel − | Accel bias | Accel range |
|---|---|---|---|---|---|---|---|---|
| Connect a controller to read its factory calibration. | ||||||||
Debug: HID report analyzer
HID report analyzer
Connect a controller to see raw reports.
| Offset | Mean | Min | Max | Δ RMS | Range | As °/s @1024 | Action |
|---|---|---|---|---|---|---|---|
| Move the controller after connecting. Candidate fields will appear here. | |||||||
A candidate is only a statistical hint: acceleration, buttons, timestamps and other HID fields can also move. Use the analyzer while physically rotating the controller and compare the three adjacent 16-bit fields. “Use as gyro” changes the live parser for testing and can be reset.
Processing settings
The controller's raw IMU values are decoded from the DualSense HID reports. Factory sensor calibration from feature report 0x05 is applied before user deadzone/filter/JoyShockMapper processing; “Calibrate gyro” adds a user bias offset while the controller is stationary. A JoyShockMapper config can be loaded locally; the parser understands GYRO_SENS, MIN/MAX_GYRO_SENS, MIN/MAX_GYRO_THRESHOLD, GYRO_CUTOFF_SPEED, GYRO_AXIS_X/Y, MOUSE_X/Y_FROM_GYRO_AXIS and common GYRO_* acceleration modifier keys. JoyShockMapper sensitivity is a multiplier, so processed camera velocity is raw angular velocity multiplied by the effective sensitivity.
Timestamped circular history buffer
| Time | GX | GY | GZ | |ω| | |α| | AX | AY | AZ | Pitch | Roll |
|---|
WebHID requirements
This controller mode requires a Chromium browser with WebHID support and a secure context such as HTTPS or localhost. USB is recommended for initial testing. Pair the controller with the operating system first when using Bluetooth, then press Connect DualSense. The app requests Sony DualSense (054C:0CE6) and DualSense Edge (054C:0DF2).