[PR #271] [MERGED] Improvements to native Triton input handling #267

Closed
opened 2026-10-22 05:08:30 +00:00 by roman · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/safijari/openpuck/pull/271
Author: @ixelyth
Created: 9/3/2026
Status: ✅ Merged
Merged: 9/4/2026
Merged by: @safijari

Base: main ← Head: triton-sdl-input


📝 Commits (1)

  • c7160a7 Triton and SDL input protocol synchronization

📊 Changes

8 files changed (+242 additions, -58 deletions)

View changed files

📝 OpenPuck/gamepad_util.cpp (+57 -0)
📝 OpenPuck/gamepad_util.h (+3 -0)
📝 OpenPuck/mode_hidgyro.cpp (+4 -3)
📝 OpenPuck/mode_ps5.cpp (+8 -1)
📝 OpenPuck/puck_hid.cpp (+41 -38)
📝 OpenPuck/rf_link.cpp (+88 -16)
📝 OpenPuck/triton.cpp (+32 -0)
📝 OpenPuck/triton.h (+9 -0)

📄 Description

Improves native Triton input handling, bringing it more in line with SDL's protocol definitions and timing behavior, with particular attention to source timestamps, motion data, touch state, and native timestamped reports.

The goal is to preserve more of the controller's native timing and contact state so downstream USB reports expose consistent IMU and touch behavior.

Changes:

  • Adds support for the native Triton report 0x47 alongside the existing input report paths.
  • Carries source IMU timing into the decoded controller input state.
  • Propagates sensor timing into host-facing motion reports where the target protocol supports it.
  • Adds stateful touch-contact packing so touch IDs and release transitions remain stable across reports.
  • Preserves distinct left/right touch sources when a single contact moves between pads.
  • Updates the Steam HID descriptor to advertise the additional native input report.
  • Keeps the common decoded-input path synchronized across the Steam, SDL/SInput, HID-gyro, and DualSense-facing consumers.
  • Retains the existing fixed-rate USB streaming behavior for personalities that consume the latest decoded state.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/safijari/openpuck/pull/271 **Author:** [@ixelyth](https://github.com/ixelyth) **Created:** 9/3/2026 **Status:** ✅ Merged **Merged:** 9/4/2026 **Merged by:** [@safijari](https://github.com/safijari) **Base:** `main` ← **Head:** `triton-sdl-input` --- ### 📝 Commits (1) - [`c7160a7`](https://github.com/safijari/openpuck/commit/c7160a79e222e3899ffc0fa81648e9aeaad418d1) Triton and SDL input protocol synchronization ### 📊 Changes **8 files changed** (+242 additions, -58 deletions) <details> <summary>View changed files</summary> 📝 `OpenPuck/gamepad_util.cpp` (+57 -0) 📝 `OpenPuck/gamepad_util.h` (+3 -0) 📝 `OpenPuck/mode_hidgyro.cpp` (+4 -3) 📝 `OpenPuck/mode_ps5.cpp` (+8 -1) 📝 `OpenPuck/puck_hid.cpp` (+41 -38) 📝 `OpenPuck/rf_link.cpp` (+88 -16) 📝 `OpenPuck/triton.cpp` (+32 -0) 📝 `OpenPuck/triton.h` (+9 -0) </details> ### 📄 Description Improves native Triton input handling, bringing it more in line with SDL's protocol definitions and timing behavior, with particular attention to source timestamps, motion data, touch state, and native timestamped reports. The goal is to preserve more of the controller's native timing and contact state so downstream USB reports expose consistent IMU and touch behavior. **Changes:** - Adds support for the native Triton report `0x47` alongside the existing input report paths. - Carries source IMU timing into the decoded controller input state. - Propagates sensor timing into host-facing motion reports where the target protocol supports it. - Adds stateful touch-contact packing so touch IDs and release transitions remain stable across reports. - Preserves distinct left/right touch sources when a single contact moves between pads. - Updates the Steam HID descriptor to advertise the additional native input report. - Keeps the common decoded-input path synchronized across the Steam, SDL/SInput, HID-gyro, and DualSense-facing consumers. - Retains the existing fixed-rate USB streaming behavior for personalities that consume the latest decoded state. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
roman 2026-10-22 05:08:30 +00:00
Sign in to join this conversation.
No labels
pull-request
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
safijari/openpuck#267
No description provided.