Like those other DS4 tools, but sexier.
DS4Windows is an extract anywhere program that allows you to get the best DualShock 4 experience on your PC. By emulating an Xbox 360 controller, many more games are accessible. Other input controllers are also supported including the DualSense, Switch Pro, and JoyCon controllers (first party hardware only).
This project is a fork of the work of Jays2Kings. You can find the old project website at ds4windows.com. Note: The Website Is No Longer Working
- Windows 10 or newer (Thanks Microsoft)
- Microsoft .NET 6.0 Runtime Desktop. x64 or x86
- Visual C++ 2015-2022 Redistributable. x64 or x86
- ViGEmBus driver (DS4Windows will install it for you)
- Sony DualShock 4 or other supported controller
- Connection method:
- Micro USB cable
- Sony Wireless Adapter
- Bluetooth 4.0 (via an adapter like this 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 lightbar and rumble support.
- Disable PlayStation Configuration Support and Xbox Configuration Support options in Steam
The Installation and Setup Guide can be found here: https://docs.ds4windows.app/guides/install-setup/
After completing the initial setup of the required drivers and dependencies, you are greeted with the main DS4Windows tab, controllers.
Here all of the conected controllers are shown. Hovering your mouse over the Controller's ID will display the input delay of the specificed controller.
The Link Profile/ID checkbox allows you to link a specified profile to a certain Controller ID so that when you plug in the controller next time the Selected Profile will always be applied to it. This is helpful if you use more than one controller. The edit button will take you to the Profiles tab to edit the Selected Profile. You can also use the dropdown to create a new profile.
The Profiles tab displays all the profiles created. Profiles can be used to assign different settings for your controller for different circumstances. Along with creating new profiles, editing, renaming, deleting, and renaming, you can also import other profiles, and export your's for sharing with friends. When creating a new profile, it is recommended to use a preset option. For the output method, it must be chosen accordingly to what you want Windows to recognize the controller as.
For Example:
- You have a Pro Controller and want to use PS Remote Play with gyro? You need to choose DualShock 4 Output and adjust the profile for Gyro passthrough
- You have any of the supported controllers and want to play Celest, which only supports XInput devices? Set the Output to Xbox 360
- You have a fake DS4 controller that is not recognized as an official one, but want to play Witcher 3 with lightbar support and PS glyphs/icons? Then choose DualShock 4 Output and adjust for lightbar passthrough
On the resulting screen is where you can fully customize the new profile.
The Controls tab is for remapping the controller button outputs. To open the page below, click on the desired button to remap on the image of the controller. Then select the desired new output for that input.
The Special Actions tab allows you to create actions that are triggered when a button or combination of button presses occur.
The Controller Readings tab gives a live readout of the data from the joysticks being transmitted to DS4Windows
The Axis Config tab allows you to adjust the settings of the joysticks and adjust parameters such as deadzone and sensativity.
The Lightbar tab allows you to change the color of the lighbar on DualShock 4 controllers.
The Touchpad tab allows configuration of the touchpad on DualShock 4 controllers to be output as mouse or controller movement.
The Gyro tab contains the gyro settings and allows you to assign specfic commands to certain tiling actions.
The Other tab contains the settings for which controller is being emulated, rumble percentage, and the polling rate.
Auto Profiles allows you to assign certain profiles to a specified application. This allows you to use different settings, controls, and mappings for different applications.
Output Slots shows which controllers that are connected are designated to the 8 slots that DS4Windows allows to be plugged in at one time. Here you can also select a controller and virtually plug and unplug it in.
The Settings tab is where the settings for the DS4Windows application are. Options such as Run at Startup, Start Minimized, or Show Notifications live here.
Disconenct from BT when Stopping - Stops the bluetooth connection to the controllers when DS4Windows is quit
Flash Lightbar at High Latency - Flashes the DualShock 4's lightbar red when DS4Windows detects high input latency
Quick Change - Auto disables bluetooth when connecting a controller via USB
Icon Choice - Changes the Icon of the DS4Windows application
App Theme - Switch DS4Windows to Light or Dark mode
External OSC Control & Monitoring - Use Open Sound Control messages to remotely control and monitor buttons, sticks, triggers, and battery levels
UDP Server - Setting for connecting the motion controls of a compatible controller to another program
The Log tab is where you can look at all of the events that the DS4Windows application has encountered. There is also a button to export the log for debugging purposes.
If your DS4 is not detected by DS4Windows and the lightbar continues to flash yellow, there is a chance that Exclusive Mode has permanently disabled your DS4 in Windows. The easiest way to test if this has happened is for you to plug in the controller into a different USB port and see if it works then. Although this problem mainly affected older versions of DS4Windows (text written after version 1.5.15) for various reasons, other mapping programs can cause the same problem to occur.
If you suspect that your DS4 has been disabled, open the Device Manager (Control Panel\Hardware and Sound\Device Manager) and look for devices listed under the path "Human Interface Devices\HID-compliant game controller".
If the icon shown for a device has a down arrow icon then you should check the device's instance path and see if the device is a DualShock 4 device. Right click the device item and select "Enable device" from the menu. That will re-enable the device so it can be seen by applications again.
With recent updates to the Steam client at the time writing this (2018-12-13), Steam has enabled Xbox Configuration Support in the Steam client by default. What this means is that Steam will automatically map a detected Xbox 360 controller to KB+M bindings initially (Desktop Mode) before launching Steam Big Picture Mode or launching a game. This presents a problem for DS4Windows since the created virtual Xbox 360 controller will be mapped to KB+M actions for desktop mode and games launched outside of the Steam client. In order to use DS4Windows properly, you have to open Steam Big Picture Mode, navigate to Settings > Controller> Controller Settings and uncheck Xbox Configuration Support along with PlayStation Configuration Support.
My PC game library is not that expansive so there are likely games that will be tested by users that I will not have access to play. There are likely going to be times when I cannot directly test against a game since I will not have access to play it. Most free to play games or games that include a playable demo should be fine for testing. For other games, it might be better if people could test against any game that I have in my library and try to reproduce a problem. Here are links to my Steam and GOG profiles so that people can see what games I have.
https://steamcommunity.com/id/Ryochan7/games/?tab=all
https://www.gog.com/u/Ryochan7/games
Pull requests for DS4Windows are welcome. Before making a pull request, please test your changes to ensure that the changes made do not negatively affect the performance of other parts of the application. Some consideration will be made during code review to try to tweak the changes in order to improve application performance. However, there is a chance that a pull request will be rejected if no reasonable solution can be found to incorporate code changes.
If you would like to send some coin my way, here are some means by which to do so.
Buy Me A Coffee: https://buymeacoffee.com/ryochan7
PayPal: https://paypal.me/ryochan7
Cash App: https://cash.app/$ryochan7
Patreon: https://patreon.com/user?u=501036
SubscribeStar: https://subscribestar.com/ryochan7
Bitcoin: 1DnMJwjdd7JRfHJap2mmTmADYm38SzR2z9
Litecoin: La5mniW7SFMH2RhqDgUty3RwkBSYbjbnJ6
Monero: 49RvRMiMewaeez1Y2auxHmfMaAUYfhUpBem4ohzRJd9b5acPcxzh1icjnhZfjnYd1S7NQ57reQ7cP1swGre3rpfzUgJhEB7