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.
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
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, butpack_switch_pro_input_report()currently writes controller buttons, sticks,battery/connection state, and digital triggers without packing accelerometer or
gyroscope samples into the
0x30input 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 shouldproduce valid changing accelerometer and gyroscope samples in the virtual
controller's native input report.
Acceptance criteria
units, axis orientation, offsets, and sample layout.
consumer.