Skip to content

Add DualSense touch feedback, mic sync and RGB control; fix Windows title bar - #9

Open
slkass wants to merge 2 commits into
Brunovncs:mainfrom
slkass:feat/dualsense-feedback-window
Open

slkass wants to merge 2 commits into
Brunovncs:mainfrom
slkass:feat/dualsense-feedback-window

Conversation

@slkass

@slkass slkass commented Nov 13, 2026

Copy link
Copy Markdown
Contributor

DualSense touch movement currently has no position feedback in the preview, and the mic indicator only reflects a button press. This adds live touch and Windows microphone mute feedback, full RGB entry with opt-in lighting in native mode, and a single Windows title bar with working drag, maximize and restore controls.

Changes

  • Carry both touch contacts through SDL input and snapshots, including motion without a touchpad click and independent release. Animate the focused detail preview with time-based smoothing and a short fading trail. Unfocused/reduced-motion previews use direct feedback; focus changes clear old trails. Touch dots and trails follow the configured LED colour, with an accent fallback for black/off.
  • Display the actual mute state of the Windows default capture endpoint. An opt-in DualSense/Edge Mic-button action toggles that endpoint once per press; an explicit button assignment takes priority. COM discovery and mute operations run on a separate worker, without capturing audio.
  • Expose the Light page in native mode behind a separate, default-off output switch. Add full #RRGGBB entry alongside swatches, and reflect the configured light in the controller drawing using the existing SDL LED output path.
  • Integrate Windows window controls into the application header, use native caption hit testing for dragging, and explicitly restore maximized windows through the HWND. Preserve the existing non-Windows title-bar layout.
  • Add English, Portuguese and Simplified Chinese strings, backward-compatible defaults, unit tests and touch-contact coverage in the Windows input loopback example.

Validation

  • cargo fmt --all --check
  • cargo clippy --workspace --all-targets --release --locked -- -D warnings
  • cargo test --workspace --release --locked: 255 passed, 5 ignored.
  • cargo build --workspace --release --locked
  • python scripts/third_party_notices.py: generated notices unchanged.
  • Windows SDL → ViGEm → XInput loopback, including touch motion without clicking, both contacts and independent releases.
  • Manual verification on Windows 11 with a Bluetooth DualSense: touch feedback, actual microphone mute/unmute, physical RGB light changes, title-bar dragging, maximize and restore.

Behaviour notes

The mic target is the Windows default recording device, which can be the PC microphone over Bluetooth; this does not program the physical controller's mic LED. Native-mode lighting is opt-in because a game may also write the light bar. Touch smoothing changes presentation only, never game input.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant