A powerful controller mapping tool that transforms your DualShock 4, DualSense, Switch Pro, and JoyCon controllers into Xbox 360 controllers for maximum game compatibility on Windows.
- Universal Controller Support: DualShock 4, DualSense, Switch Pro, and JoyCon controllers (first party hardware only)
- Xbox 360 Emulation: Broad game compatibility through Xbox 360 controller emulation
- Advanced Input Processing: Switch debouncing, stick drift compensation, and motion controls
- Customizable Profiles: Per-game settings with automatic profile switching
- Lightbar & Haptics: Full support for controller lighting and rumble effects
- Low Latency: Optimized for competitive gaming with minimal input delay
This fork addresses several issues and adds enhancements over the original DS4Windows:
- Button Debouncing: Fixes controller button bounce issues that cause unwanted double inputs
- Stick Drift Compensation: Advanced filtering to reduce the impact of analog stick drift
- DS3 Motion Support: Pitch and roll simulation based on accelerometer data
- Updated Version Detection: Uses this repository for version checks (no more outdated version popups)
- Enhanced Stability: Various bug fixes and performance improvements
- Modern .NET 8.0 WPF framework
- Improved memory management
- Better error handling and logging
- Streamlined build process
- Download the latest release from Releases
- Extract to your preferred location
- Run
DS4Windows.exe
scoop install ds4windows# Download and run the install script
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/madziaar/DS4WindowsBUT/master/ds4w.bat" -OutFile "ds4w.bat"
.\ds4w.bat- Windows 10 or newer
- Visual Studio 2022 or later (with .NET desktop development workload)
- .NET 8.0 SDK
- Git
-
Clone the repository
git clone https://github.com/madziaar/DS4WindowsBUT.git cd DS4WindowsBUT -
Restore dependencies
dotnet restore
-
Build the solution
# Debug build dotnet build --configuration Debug # Release build dotnet build --configuration Release
-
Build for specific platform
# x64 build dotnet build --configuration Release --arch x64 # x86 build dotnet build --configuration Release --arch x86
-
Run tests
dotnet test -
Create distribution package
# x64 package dotnet publish .\DS4Windows\DS4WinWPF.csproj -c Release -r win-x64 --self-contained false # x86 package dotnet publish .\DS4Windows\DS4WinWPF.csproj -c Release -r win-x86 --self-contained false
The project includes development automation scripts:
.mentat/setup.sh: Installs dependencies and prepares the development environment.mentat/format.sh: Formats code using .NET standard formatters
- OS: Windows 10 or newer (64-bit or 32-bit)
- Runtime: .NET 8.0 Desktop Runtime (x64 | x86)
- Redistributable: Visual C++ 2015-2022 (x64 | x86)
- Driver: ViGEmBus (auto-installed by DS4Windows)
- Sony DualShock 4 (all revisions)
- Sony DualSense (PS5 controller)
- Nintendo Switch Pro Controller
- Nintendo Joy-Con (L/R pair)
- USB: Direct connection via USB cable
- Bluetooth 4.0+: Built-in or USB adapter (Microsoft BT stack only)
- Sony Wireless Adapter: Official DualShock 4 USB adapter
- CSR Bluetooth stack is not supported
- Toshiba Bluetooth adapters may not work reliably
- Disable Steam's controller configuration support for best compatibility
- Install DS4Windows using one of the methods above
- Connect your controller via USB or Bluetooth
- Launch DS4Windows - it will auto-detect and configure your controller
- Install ViGEmBus when prompted (required for Xbox 360 emulation)
- Configure profiles for your games using the built-in editor
Disable these Steam settings for optimal compatibility:
- Steam โ Settings โ Controller โ PlayStation Configuration Support: OFF
- Steam โ Settings โ Controller โ Xbox Configuration Support: OFF
- Create custom profiles for different games
- Set up automatic profile switching
- Configure per-game input mappings and sensitivity
- Remap any button or stick
- Create macros and special actions
- Adjust dead zones and response curves
- Enable motion controls and gyro input
- Enable diagnostic logging for debugging
- Use the built-in controller test interface
- Check Windows Device Manager for driver issues
- Restart DS4Windows service if controllers stop responding
We welcome contributions! Here's how you can help:
- Use the issue tracker
- Include system info, DS4Windows version, and steps to reproduce
- Attach logs from the application when possible
- Check existing issues first to avoid duplicates
- Describe the use case and expected behavior
- Consider implementation complexity and user impact
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes with proper testing
- Follow the existing code style (use the provided format scripts)
- Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Test changes thoroughly before submitting
- Maintain backward compatibility when possible
- Document any new features or API changes
- Follow .NET coding conventions and best practices
DS4Windows is licensed under the GNU General Public License v3.0.
Copyright ยฉ Scarlet.Crush Productions 2012-2013
Copyright ยฉ InhexSTER, HecticSeptic, electrobrains 2013-2014
Copyright ยฉ Jays2Kings 2013-2016
Copyright ยฉ Ryochan7 2017-2023
Copyright ยฉ schmaldeo 2024
Copyright ยฉ madziaar 2024
- Releases: GitHub Releases
- Documentation: User Guide
- Issues: Bug Reports & Feature Requests
- Original Project: DS4Windows by Ryochan7
- Jays2Kings & Ryochan7 - Original DS4Windows developers
- schmaldeo - Continued development and maintenance
- sunnyqeen - DS3 accelerometer implementation
- ViGEm Project - Virtual gamepad framework
- All contributors who have helped improve DS4Windows over the years
Note: This project is not affiliated with Sony Interactive Entertainment or Nintendo. DualShock, DualSense, and PlayStation are trademarks of Sony Interactive Entertainment. Nintendo Switch and Joy-Con are trademarks of Nintendo.