GameControllerForZwift
The goal of this project is to enable using standard Game Controllers to interact with Zwift, much like the capabilities of the Zwift Play Controllers or the Wahoo Kickr Bike Shift.
Install / Use
/learn @VoltageSolutions/GameControllerForZwiftREADME
Introduction
This project enables using standard video game controllers to interact with Zwift. The long-term goal is to replicate the flexibility and functionality of Zwift-compatible controllers like the Zwift Play Controllers or the Wahoo Kickr Bike Shift. You can use controllers like Nintendo Switch Joy-Cons, Xbox Controllers, and other popular game controllers you already own.
Game Controller for Zwift typically only lets you use one controller at a time, will interpret a pair of connected Joy-Cons as a single controller.
<p align="center"> <a href="https://www.youtube.com/watch?v=mYImJKFE6OI"> <img src="./docs/assets/images/thumbnail_preview.png" width="400"> </a> </p>Getting start with the app
- Download the latest release, available as a
.ziparchive. - Unpack the archive and run the application on the same Windows computer you will use to run Zwift.
- If you do not have the .NET 9 Runtime installed, the app will prompt you to download it.
- Run
GameControllerForZwift.exe. - This app is not currently digitally signed. Microsoft Defender SmartScreen might block it. If so, click More info and then Run anyway. The app will start.
- GameControllerForZwift will attempt to link up to a game controller connected to your PC. If you didn't already do so, connect a controller to Windows and Refresh to select it from the list of options.
- Configure your controller buttons to control Zwift as you'd like. Switch to Zwift and Ride On!
Building from source
- Setup the .NET 9 SDK and Desktop Development with WPF on your machine (such as with Visual Studio 2022).
- Clone the repo.
- Build the solution.
How to contribute
Ideas, Issues, or Bugs
Post to the Issues page.
Code
This project follows a modified version of Git Flow where main always represents the latest version. Submit a PR - if I approve it, I will merge to a version branch for testing prior to merging to main and creating a new release.
Donate
Support this project on ko-fi!
Roadmap
Coming soon
- Improved code readability and maintainability.
- Improved code coverage.
- User-configurable threshold/deadzone thumbsticks to reduce accidental inputs.
- App icons and graphics.
- Combine
CoreandLogicprojects together. - Save and reload custom button-mapping configuration profiles.
- Log to a text file for easy debugging support.
Long-term stretch goals
- Use Bluetooth or WiFi to integrate with Zwift on the Device Pairing screen.
- Steering and braking support.
- This would make it possible to do something useful with the analog inputs like thumbsticks and triggers.
- Enable switching mapping profiles on-the-fly.
- Navigate Windows with profiles to help bridge any usage gaps.
Ultra long-term goals
macOS and Linux support.
Known Bugs and Issues
- Navigation within GameControllerForZwift is flaky. I've disabled the backstack until I can work it out.
- The trigger gauges do not show up well in light mode when not in use - it may look like they aren't there at all.
- Windows 10 issues
- Clicking around the app can highlight the entire window.
- Dark-mode does not apply the intended color selections correctly.
Technical Details
Please visit our GitHub Pages site for more details.
