As featured in:

DS4Windows is a portable program that allows you to get the best experience while using a DualShock 4 on your PC. By emulating a Xbox 360 controller, many more games are accessible and you can play PC games using the PlayStation controller.

Features:

  • Use X360-like input to use the DS4 in more games and have rumble
  • Use the touchpad as a mouse or for more actions
  • Use sixaxis movement for just as many actions
  • Control the Lightbar: turn it off, dynamically change by battery level, and more
  • Map the buttons and sticks to other 360 controls or keyboard actions or macros
  • Use profiles to quickly switch between configurations for your controllers
  • Automatically switch profiles by when a certain program(s) is launched
  • Hold an action to access a new whole set of controls
  • Get a reading of how the sticks and sixaxis is working
  • Assign a deadzone to both analog sticks, the triggers, and the sixaxis
  • Automatically get new updates

What's New:

  • Fixed launching of HidGuardHelper for .NET 5 usage
  • Fixed URL string generation for updater version redirect on download failure
  • Fixed a few typos in the English strings. Contribution by instilledbee
  • Bundled HidGuardHelper 0.2.0
  • DS4Windows now targets .NET 5
  • Changed ViGEm libraries to target .NET Core 3.1
  • Now use MdXaml rather than Markdown.Xaml for Changelog text rendering
  • Removed Newtonsoft.Json library dependency
  • Removed use of .NET 5 Runtime check nag window
  • Fixed UDP Server locking device input in .NET 5. Caused by API change for SocketAsyncEventArgs
  • Moved app config loading to occur after logger is created
  • Change extras flag to take current DS4Control into account
  • Added additionalProbingPaths to runtimeconfig.json
  • Use UseShellExecute for ProcessStartInfo. Due to Process.Start change in .NET 5
  • Added newer bat self deletion routine. Make sure to return 0 status code in process when performing bat self-delete

2.2.15

  • Ignore duplicate device when in Shared mode
  • Added extra processing to Version string for .NET 5 and later. Expecting Microsoft to use their own standard was a mistake
  • Changed URL used for .NET 5 Runtime download

2.2.11

  • Implemented newer feedback handler routine for virtual DS4 devices. Added virtual DS4 rumble back in
  • Now sure to use continuous calibration routine for non-DS4 devices
  • Changed severity of ViGEmPluginFailure message. Now indicates that a user should probably reboot Windows if it happens
  • Fixed JoyCon R Gyro Roll. Old value was inverted
  • Copy modified JoyCon current state for use in UDP server
  • Only display device in UDP server if it is a primary device. Mainly needed due to JoyCon R in Joined JoyCon mode
  • Added exception catching when saving Actions xml file. File corruption will now cause the file to be written from scratch
  • Use Task error log helper for some background service tasks. Allows some extra possible error messages to show up in the Log
  • Simplify UDP motion event creation. Allow motion event to be created when enabling UDP server
  • Make Flash at High Latency default to 50 ms
  • Dark Theme color changes. Color contrast has been reduced. Contribution by AnessZurba
  • Skip writing device wheel calibraton nodes if empty
  • Now use estimated wheel center values if controller config has an empty entry. Problem caused some app instability and memory bloating due to excessive log messages in Log tab (over 1GB RAM usage)
  • Implemented axial dead zone and related settings
  • Fixed ColorByBattery panel visibility for first open. Contribution by MakiseKurisu
  • Changes for continuous calibration routine for Sony Wireless Adapter connections. Contribution by MakiseKurisu
  • Tweaked profile loading for some older fallback options

2.2.8

  • Fixed resetting of trigger values for Two Stage modes
  • Removed references to old Discord server
  • Pull gyro calibration sampling routine out to its own method
  • Fixed normal button binding to Touchpad Click output
  • Attempt to go to DS4Updater Release page if automatic download of updater failed
  • Added GitHub link to Social row in About window
  • Fixed x86 ViGEm installer URL

2.2.7

  • Added an extra precaution to unplug any permanent output devices upon service stop. ViGEmBus should handle this already but just want to make sure.
  • Updated Polish translation. Contribution by gregory678
  • Changed locking strategy for ControllerSlotManager collection
  • Fixed right click disconnect slot index for new sorted list
  • Implemented a variant of Two Stage Triggers
  • Added Trigger effects presets. Currently only useful for the DualSense controller
  • Added averaging gyro calibration upon device connection. Contribution by firodj
  • Skip unknown DS4Controls names while loading a profile
  • Fixed issue with missingSettings being set for fallback value lookup on Profile load. Constantly re-saved profiles
  • Only reset outDevTypeTemp on full profile save. Ensured proper controller image is used in Binding window after clicking Apply in Profile Editor
  • Change arrangement of lit LED lights for DualSense controller
  • Allow Touchpad Click button passthru with Mouse and Controls mode
  • Changed device type settings. Now use device specific (serial) settings. Now saved to ControllerConfigs.xml
  • Added check for valid output report types upon DS4 BT device connection. Can revert to using output report 0x11 if needed. Not sure if it will matter
  • Ignore output plugin routine and other calls if requested profile file does not exist

Instructions:

  • Extract the 2 programs from zip file (DS4Windows and DS4Updater)
  • Launch DS4Windows and choose where you want to save profiles
  • A windows will pop up showing how to install the driver, if not, go to settings and click "Controller/Driver Setup"
  • If you have used SCP's tool in the past, you may need to uninstall the drivers to use the DS4 with Bluetooth
  • Connect the DS4 via a micro usb or through bluetooth (DS4 Device name: "Wireless Controller") may need to enter pair code: 0000)
  • All should be good to go once you connect the controller, if not restart DS4Windows, or even your computer.

Note: Some games work with the DS4 without DS4Windows. Games like these can cause double input in menus (ie pressing down on the dpad moves 2 spaces) or the wrong button to do incorrect functions. To solve this, check Hide DS4 in the settings, if you see a warning in the log/text on the bottom, that means you must close said game or client that causes the conflict and reconnect the controller.

Requirements:

  • Windows 10 or newer (Thanks Microsoft)
  • Microsoft .NET 4.8 or higher (needed to unzip the driver and for macros to work properly)
  • Visual C++ 2015-2019 Redistributable. x64 or x86
  • ViGEmBus driver (DS4Windows will install it for you)
  • Microsoft 360 Driver (link inside DS4Windows, already installed by Windows if you've used a 360 controller before)
  • Sony DualShock 4

Connection method:

  • Micro USB cable
  • Sony Wireless Adapter
  • Bluetooth 4.0 (via an adapter or built in PC). Only use of Microsoft BT stack is supported. CSR BT stack is confirmed to not work with the DS4 even though some CSR adapters work fine using Microsoft BT stack. Toshiba's adapters currently do not work. Disabling 'Enable output data' in the controller profile settings might help with latency issues, but will disable light bar and rumble support.
  • Disable PlayStation Configuration Support and Xbox Configuration Support options in Steam