Skip to content

Windows: Switch Pro gyro is exposed but reports static values #111

Description

@ReenigneArcher

Summary

The Switch Pro profile advertises motion support through the Windows Virtual
HID Driver, and Steam exposes a gyro control, but incoming gyro values remain
static.

Tested path

  • Client: Moonlight Qt
  • Host application: Sunshine
  • Host OS: Windows
  • Backend: Virtual HID Driver
  • Virtual profile: Nintendo Switch Pro Controller
  • Test application: Steam controller tester

Standard controller input works. Steam shows gyro input for the virtual Switch
Pro Controller, but moving the physical controller does not change the reported
values.

Current implementation

The Switch Pro profile declares supports_motion = true, but
pack_switch_pro_input_report() currently writes controller buttons, sticks,
battery/connection state, and digital triggers without packing accelerometer or
gyroscope samples into the 0x30 input report.

Relevant code:

  • src/core/profiles.cpp: make_switch_pro_profile()
  • src/core/report.cpp: pack_switch_pro_input_report()

Expected behavior

Calls to GamepadStateAdapter::set_motion() for a Switch Pro profile should
produce valid changing accelerometer and gyroscope samples in the virtual
controller's native input report.

Acceptance criteria

  • Switch Pro accelerometer and gyroscope samples are packed with the correct
    units, axis orientation, offsets, and sample layout.
  • Steam exposes the gyro and reports changing values on Windows.
  • Neutral/default sensor values remain valid when no motion sample is present.
  • Unit tests cover native Switch Pro motion report packing.
  • Installed-driver integration coverage validates that motion reaches a HID
    consumer.

Metadata

Metadata

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions