Changelog

Version 3.0.18

  • Added output Stick and Axis options for Gyro Mouse Joystick
  • Use TabControl to contain gyro output panels. Simplifies XAML
  • Re-enabled DS4 emulation support

 

Version 3.0.17

  • Added fake DS4 FrameCounter field for DualSense, Switch Pro and JoyCon devices
  • Increased default Idle Disconnect time to 15 min
  • Disabled DS4 controller emulation support. Can’t have nice things
  • Only perform output slot lookup in virtual device plugin routine when emulating a controller
  • Check for device removal status before adding device to main view list. Fixes initial Switch Pro disconnect on hotplug when controller battery is dead

 

Version 3.0.16

  • Changed mapper to copy timestamp data from original input state object. Used for DS4 Gyro Passthru

 

Version 3.0.15

  • Changed ControllerListViewModel locking strategy for non-Sony DS4s that might fail the initial handshake
  • Removed OnlyInputData0x01 hack for fake DS4 controllers (fake DS4 using Sony VID+PID combo)
  • No longer provide support for knockoff fake DS4 controllers
  • Changed Lightbar TabItem in Profile Editor to use embedded TabControl
  • Added warning text for Lightbar Passthru mode stating the old feature is currently disabled
  • Fixed combo box cutoff in Dark theme. Contribution by Sajidur78
  • Updated Brazilian Portuguese translation pack. Contribution by nelitow

 

Version 3.0.14

  • Updated FakerInputWrapper libraries for F13 – F24 key support
  • Added F13 to F24 keys for FakerInput mapping
  • Decreased button wheel delta. Increased button wheel sensitivity. Now uses 150 ms for time delta
  • Updated FakerInputWrapper libraries. Fixes array bounds check for KeyboardReport
  • Fixes for Stick Outer Btn bindings
  • Added ManagementException catch for initial connection. Apparently it can be thrown in that call.
  • Expanded max output limits for LS and RS
  • Re-design dark theme and use theme colors in AutoProfiles. Contribution by Sajidur78
  • Changed DualSense trigger Full Click resistance depending on profile settings
  • Changes to better handle connection failure for Switch Pro and JoyCon devices

 

Version 3.0.13

  • Another fix for EnhancedKey usage for FakerInput mapping
  • Bundled PurgeOldXInput 0.1.2

 

Version 3.0.12

  • Removed old Input Curve options
  • Corrected coordinate system for Stick to Mouse Wheel
  • Fixed saving of Max Output Force options
  • Expand output for Gyro Mouse Joystick Max Output routine. Make sure maximum output can be achieved. Likely would not achieve a completely straight line when using Gyro.
  • Expanded macrodone array. Fixes some macro bindings for later virtual buttons
  • Added ‘Hide DS4 Controller’ option back in again
  • Increased button mouse wheel delta. Decreases wheel sensitivity
  • Unified late profile options checks
  • Increased resistance range for DualSense trigger Full Click

 

Version 3.0.11

  • Group and move Virtual Controller options in Other tab. Contribution by Kanuan
  • Fixed MODIFIER_ENHANCED value for FakerInput mapping
  • Fixed Alt, Windows, and other modifier keys mapping for FakerInput
  • Fixed Stick to Mouse Wheel routine for SendInput output
  • Fixed tray menu profile selection for names with underscores
  • Added many tooltip strings in Profile Editor
  • Fixed RenameProfileWindow closing early due to early DialogResult assignment. Property calls Close on the Window
  • Removed BitChute social link
  • Fixed display of CheckEveryUnit combobox in Settings tab. Not sure when VS changed that portion of the XAML
  • Removed obsolete ‘Hide DS4 Controller’ option again. Can’t have options
  • Added ScrollViewer to Other tab in Profile Editor. Enough controls in tab to justify it
  • Added force option for LS and RS MaxOutput. Allow 100% forced circular max output for sticks
  • Made Capture, SL, and SR buttons mappable
  • Created Outer Button bindings for LS and RS. Allows extra distance action for the sticks like Walk or Sprint
  • Display Touchpad X and Y in Controller Readings tab
  • Increased HID report input buffer to 3 rather than 2. Not sure it will really matter
  • Disabled broken DS4 feedback support again. Can’t have semi-nice things. Don’t bring it up again until at least the next ViGEmBus driver update
  • Added change to not send Profile loaded message for secondary JoyCon in Joined mode

 

Version 3.0.10

  • Removed virtual device plug/unplug delay
  • Removed Dispatcher and thread from OutputSlotManager
  • Another fix to hopefully sort out Special Action items properly
  • Allow profiles to be renamed from within app using Profiles tab
  • ‘Hold for X secs’ special actions now support decimal values. Contribution by mika-n
  • DeviceOptions has a new ‘Verbose log messages’ option. Contribution by mika-n
  • Fixed coordinate system for Stick to Mouse Wheel calculations
  • Reset mouse position for FakerInput on Sync method. Fixes some mouse related actions conflicting with FakerInput output handler
  • Updated Touchpad scroll support to use new coordinate system
  • Updated Strings.ru.resx. Contribution by shikulja

 

Version 3.0.9

  • Fixed obtaining source index item for Special Action list
  • Allow Touchpad Click as an output for Macros
  • Delay log message for virtual device association
  • Updated ViGEmPluginFailure message to make reference to PurgeOldXInput utility
  • Added PurgeOldXInput utility to Tools folder. Might be useful for deleting invalid virtual Xbox 360 controllers
  • Updated Japanese translation. Contribution by toshixm
  • Updated Czech translation. Contribution by MikeCZ23
  • Bundled DS4Updater 1.5.5

 

Version 3.0.8

  • Fixed Special Action sorting to sort by user defined Action name
  • Removed support for HidGuardian completely. HidHide is the only supported HID device blocking driver now

 

Version 3.0.7

  • Added slot# log messages to a gamepad connect/disconnect handler and ‘permanent’ slot debug msg. Contribution by mika-n
  • Small special action fix when action trigger is somehow flagged as None
  • Added support for virtual KB+M driver FakerInput v. 0.1. Needed to play Valorant and other apps that block SendInput events.
  • Sort Special Action list by action name
  • Fixed event order issue that caused output slots to not get disconnected
  • Reduced mouse remainder cutoff to the hundredths place
  • Fixed OutSlotDevice check to make sure Permanent slots are detached on service stop

 

Version 3.0.6

  • Re-compiled program and tools. Signed binaries
  • Almost identical to version 3.0.5

 

Version 3.0.5

  • Fixed copying of app config file for fake named exe
  • Now copy deps file for fake named exe
  • Fixed initial Config folder selection dialog when multiple configs (Program Folder and AppData) are found. Make sure to display option to delete one of the configs
  • Updated DotNetProjects.Extended.Wpf.Toolkit to version 4.6.97
  • Updated MdXaml to version 1.10.0
  • Updated NLog to version 4.7.9
  • Check if DS4Windows program folder is actually AppData subfolder when locating program config. Treat case as Program Folder option
  • Added All Files option for Launch Program special action File Dialog. Use Explorer to launch associated program for an arbitrary file
  • Bundled HidNinja 0.3.2
  • Bundled XInputChecker 0.1.2

 

Version 3.0.4

  • Support for DS3 gamepad as vendor defined device over DsHidMini driver. Contribution by mika-n
  • Now issue immediate virtual device unplug upon Windows suspend
  • Changed ViGEmBus lookup routine to perform a list based lookup for potential drivers. Attempt to discover newest version from version info
  • Changed ViGEmClient library to attempt to connect to newest available version of ViGEmBus on a system rather than the first version found
  • Set all controller slots to use the Default profile initially when making a new config
  • Immediately issue unplug of all virtual controllers when pressing main Stop button
  • Initial implementation of HidHide integration. Display key icon for HidHide hidden device. Insert DS4Windows.exe into whitelist at startup if necessary
  • Changed method of obtaining current executable file location. Needed due to assembly changes in .NET 5 breaking support for custom exe filenames
  • Added HidHide installer link to Welcome dialog window
  • Added HidHide Configuration Client app link in Settings tab
  • Hide HidNinja link in Settings tab if HidGuardian is not installed
  • Show the text value of ‘Max Saturation’ lightbar setting. Contribution by sabihoshi
  • Changed Launch Program special action to use UseShellExecute

 

Version 3.0.3

  • Fixed Open Program Folder link in tray menu
  • Lessen ViGEmBus restriction for now. Allow connecting to ViGEmBus 1.16.112.0. PLEASE DON’T MAKE ME REGRET THIS.

 

Version 3.0.2

  • Use UseShellExecute for ProcessStartInfo in more places for .NET 5 changes
  • DS4Windows updater message update. Contribution RedDevilus
  • German translation update. Contribution by jmg2k
  • Added Portuguese (Portugal) translation. Contribution by joaopedrogome
  • Add cmd line command for ‘Change led color’. Contribution by bernspedras
  • Muted blues used in Dark theme. Contribution by AnessZurba
  • Added some exception handling for XML in ProfileMigration
  • Added output controller option to Preset Window for certain Presets. Change profile values based on output controller type.
  • Added some precautions for possible empty devicePath string
  • Changed GroupBox template for Dark theme
  • Now enforcing ViGEmBus minimum supported version. Targetting ViGEmBus 1.17.333.0
  • Fixed ProcessStartInfo for ViGEmBus installer launching with .NET 5
  • Refresh internal data about ViGEmBus on service startup

 

Version 3.0.1

  • 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

 

Version 3.0.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

 

Version 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

 

Version 2.2.14

  • Implemented stick vertical scale
  • Reduce attribute checks for stick interpretation
  • Check for minimum .NET version on startup. Temporary measure warning about future upgrade
  • Last version of DS4Windows to target .NET Framework. Next version will target .NET 5

 

Version 2.2.13

  • Have device hotplug routine enforce profile settings when using a temp auto profile
  • Bundled DS4Updater 1.4.7

 

Version 2.2.12

  • Fixed CRC32 error counter for DualSense device class
  • Fixed bad copy pasta regarding device setting wheel calibration saving
  • Added error checking with device wheel calibration loading

 

Version 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

 

Version 2.2.10

  • Change Disconnect command syntax to allow all wireless controllers to get disconnected
  • Increased GUI enforced max Trackball Friction value to 20.0
  • Slightly edited colors used in Dark theme
  • Disabled virtual DS4 feedback routine again
  • Allow Joined JoyCon support. Joined link mode is now the default
  • Changed L1 binding for KB+M and Gyro preset profile. Make Unbound
  • Fixed macroRecorder bug where MUTE control threw an exception because it is not in macroDS4Values array. Contribution by mika-n
  • Fixed wrong on-screen button indexes while remapping using ‘readout’ feature. Contribution by mika-n
  • Added artificial VID/PID for DualShock 3 running under DsHidMini drivers. Contribution by nefarius

 

Version 2.2.9

  • Profile settings fuzz option hang fix. Contribution by RokasKil
  • Anti-snapback stick settings added. Contribution by RokasKil
  • .NET 5 progress complete. Will keep net5 branch updated regularly until used in public build. Contribution by sitiom
  • Fixed index out of bounds error when loading profiles in virtual output device check
  • Fixed current item selection for right click Disconnect BT
  • Removed references to Frog site. No longer posting updates there
  • Changed initial trackball velocity calculations to attempt to make numbers more uniform across devices
  • Added Disconnect command line option
  • Disable macro mode combobox when opening Macro used in a Multi-Action Button special action
  • Take out nag disclaimer window regarding Hide DS4 Controller option

 

Version 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

 

Version 2.2.7

  • Added delay time to Gyro Directional Swipe action
  • Fixed populate of Gyro Directional Swipe and Gyro Controls triggers buttons
  • Lowered touchpad slide distance for Controls mode
  • Fixed Steering Wheel calibration Special Action saving
  • Allow resetting of extras for Trigger soft pull and full pull
  • Allow resetting Extras bound to Gyro Swipe actions
  • Now officially only support Windows 10 and later. THANKS MICROSOFT
  • Added BatteryPercentage mode for DualSense Player LED Bar
  • Fixed Switch Pro and JoyCon AccelY coordinate used by UDP Server
  • Fixed profile cancelling for the test index
  • Tweaked disable device time for Exclusive mode routine
  • Removed DynamicResource lookups for Special Action Editor
  • .NET 5 port in progress
  • Added App instance check to work around Design mode in .NET 5.0
  • Changed Browse Programs fallback value in Profile Editor for .NET 5.0
  • Changed method to strip null terminated strings
  • Added Gyro Calibration button to Gyro Mouse StackPanel
  • Updated ViGEmClient library to use notification queue
  • Fixed critical notification callback bug in ViGEm.NET library
  • Bundled DS4Updater 1.4.6

 

Version 2.2.6

  • Fixed Gyro Mouse Joystick trigger selection
  • Corrected Gyro Mouse and Gyro Mouse Joystick toggle flags
  • Put Gyro Calibration button in other Gyro mode panels
  • Added Mute LED mode for DualSense device options
  • Fixed default virtual Touchpad button bindings
  • Corrected Special Action regression
  • Including updated ScpVBus build

 

Version 2.2.5

  • Fixed sync between button mouse sens and active mouse sens in Profile Editor
  • Changed DualSense blanking flags used for initial connection and detach
  • Now use defined ControlActionData for mapped actions rather than unboxing object references. Speeds up the mapping routine a good amount.
  • Hebrew translation added to project file. Translation was never added in
  • Allow Gyro triggers for Gyro Controls mode
  • Reset Gyro Controls output accel values to 0 for each poll
  • Driver installer window now takes arch into account when downloading the latest ViGEm installer. It uses a different setup file for each arch
  • Disable Xbox 360 installer button in Welcome Dialog if running on Win8 or greater
  • Added toggle mode to Gyro Controls
  • Added ScrollViewer for Gyro tab
  • Increased Full Click trigger effect resistance a bit
  • Use fake HW serial to index SonyWA connections. Should allow multiple Sony dongles to work
  • Allow audio volume searching for Nacon Rev Pro v.2 controller.
  • Added DS4 setting to attempt to change output report features for copycat controllers

 

Version 2.2.4

  • Fixed SelectedValue display in Dark theme for some dynamic ComboBox controls
  • Added Gyro Directional Swipe output mode
  • Updated ScpVBus build with version 2.2.4 changes

 

Version 2.2.3

  • 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

 

Version 2.2.2

  • Have app ignore embedded color profile for rainbowCCrop image. Fixes Profile Editor crashing app on some systems
  • Supports .BAT/.CMD batch scripts in specAction LaunchProgram. Contribution by mika-n
  • Added Hebrew translation. Contribution by avsha114
  • Corrected Touchpad Resolution Y Max for DS4 and DualSense
  • Fixed crash when right click disconnect is done twice and GUI has not changed yet. More of a pre-caution than anything
  • Gioteck VX4 gamepad support. Contribution by mika-n
  • Fixed passthru panels showing up properly for Touchpad and Gyro
  • Pushing half-baked controller options window
  • Change DupBox placeholder text behavior
  • Removed Parler link from About window for now. RIP Parler
  • Now use device specific Gyro Mouse sensitivity values
  • Decreased sensitivity of DualSense Gyro Mouse slightly
  • Added placeholder help text for window title auto profile field
  • Fixed window style for Updater window
  • Allow Home LED to be disabled for Switch Pro and JoyCon
  • Fixed app config loading. Stopped extra config saves on program launch from missingSetting being set unintentionally
  • Added more white variation of images for use in Dark theme
  • Make custom Bezier curve perform circular interpolation rather than per axis
  • Use ControlService event dispatcher for synchronization on device unplug
  • Fixed Gyro Mouse and Mouse Joystick Smoothing panels visibility in Profile Editor under certain scenarios
  • Fixed a bug in autoProfile set Path handler. Contribution by mika-n
  • Lowered default rumble emulation strength of DualSense controller
  • Allow configurable rumble strength setting for DualSense controllers. Will likely change later
  • Now use player LEDs on Switch Pro, JoyCon, and DualSense controllers. Used to display input device slot number
  • Display input slot number in controller list
  • Now sort main controller list by device index
  • Changed output device pluging routine. Stop DS4Windows service if ViGEm device connect call fails
  • Changed default dead zone for KBM profile templates
  • Only output DS4 touchpad button click when in Passthru mode
  • Make sure to refresh gyro mouse smoothing combobox indexes after loading from a preset
  • Bundled DS4Updater 1.4.5

 

Version 2.2.1

  • Put lock block in for DS4 USB output routine

 

Version 2.2.0

  • Import newer ViGEm.NET libraries for ViGEmBus 1.17.333.0 extended support
  • Allow passthru of Touchpad and Gyro to output virtual DS4. Requires ViGEmBus 1.17.333.0 and Windows 10
  • Put note about DS4Windows assembly architecture in Log. Needed to diagnose Exclusive mode problems.
  • No longer reset X360 report data each gamepad poll
  • Fixed Touchpad Swipe and Gyro Tilt controls index values for Profile Editor controls
  • Fixed some 8 controller bugs. Make sure to save set profile and load setting
  • Don’t reset auto profile flags on device removal
  • Sort auto profile list by app file name
  • Allow binding to Mute button in Special Action editor
  • Added DualSense Mute button to Gyro and Touchpad triggers
  • Allow Mute button as a Shift Trigger
  • Use a WrapPanel for Utils section
  • Fixed crash on Windows 7 when attempting to download ViGEm installer. Side effect of targeting .NET Framework 4.8
  • Remove Aero2 assembly reference
  • Changed output method used for Windows 7 BT DS4 devices. Forced to use Control endpoint on Windows 7
  • Have driver installer window choose different ViGEmBus installer depending on detected Windows OS install

 

Version 2.1.23

  • Updated App.config file with proper .NET Framework version
  • Added support for mapping DualSense Mute button
  • Fixed Dark theme crashing app in Windows 7. Removed Aero2 elements from Dark theme.
  • Disable apply button when creating a new profile. Further enforce current flow
  • Added feature set check before generating CRC-32 output data
  • Fixed theme style for SaveWhere window
  • Corrected KeyDown and KeyUp images in Macro editor
  • Split DS4HapticState to two structs. Separate force feedback data from lightbar color
  • Added -command cycle cmd flag. Allows for an easy on/off shortcut without having to set any conditions. Contribution by wingfixer
  • Changed AutoProfile EXE file extension check to be case-sensitive. Contribution by mika-n
  • Added MinWidth back in Dark theme for combobox. Was removed with Aero2 tags.
  • Updated Russian translation file. Contribution by shikulja
  • Don’t display data write failure if device is known to be disconnecting. Hopefully eliminates excessive gamepad write failure log messages when Idle Disconnect is executed.
  • Tweaked axis scaling to output Xbox 360 axis. Low end now can scale to 0 properly.

 

Version 2.1.22

  • Make sure profile name textbox is enabled by default again

 

Version 2.1.21

  • Grab proper image for Exclusive access display

 

Version 2.1.20

  • Changed project file to allow building app with msbuild
  • Use custom window for displaying Log messages. Can highlight text and click URLs
  • Send empty output report before closing a DualSense device. Resets rumble emulation flag to allow haptics to work again
  • Fixed -command Shutdown cmdline option. Contribution by mika-n
  • Updated Russian translation. Contribution by shikulja
  • Allow longer periods of rumble with DualSense
  • Changed battery max value for DualSense
  • Increased delay before hotplug device check
  • Added button mouse vertical scale
  • Changed Subcommand routine for Switch Pro and JoyCon classes
  • Updated Polish translation. Contribution by gregory678
  • Added Brook Mars controller support. Contribution by Кладовая
  • Implemented a Dark theme for the GUI
  • Fixed Change Light extras setting loading in Binding window. Keep setting in tact
  • Changed buffer size for DS4 FileStream instance
  • Now use Interrupt endpoint for DS4 BT output reports
  • Fixed out-of-bounds access when enabling square stick. Contribution by hpesoj
  • Added Arabic translation. Contribution by xLive
  • Added 7-Zip archive for updated ScpVBus build for regression testing

 

Version 2.1.19

  • Fixed translation loading

 

Version 2.1.18

  • Lowered intensity of rumble effect for DualSense
  • Rumble and lightbar support for DualSense now work over BT
  • Added Rotate options to the Preset Menu in the Profile Editor. Useful for mapping a single JoyCon
  • Disable DualSense Mic LED for now
  • Edit language used for Run At Startup options to make intent more clear. Contribution by olokos
  • Updated Ukrainian localization. Contribution by dondrakon1
  • Added Hungarian translation. Contribution by rocketbucket10
  • Experimental rumble for DS4 emulation. Make support a profile option. Contribution by mika-n
  • Added New Battery and Charging command line query options to return the battery value and the charging status. Contribution by mika-n
  • Updated target .NET Framework to version 4.8. Contribution by dante38
  • Disable Output Slots section when service is not running
  • New outputSlot related command line interfaces. Contribution by mika-n

 

Version 2.1.17

  • Implemented JoyCon support
  • Implemented DualSense support. Lightbar and rumble support only work with USB for now
  • Added workaround for DS4 reader when a duplicate timestamp is in a report. Fixes smoothing for UDP server output
  • Populate totalMicroSec in JoyConDevice and SwitchProDevice. Used in the UDP server output
  • Enabled Idle Disconnect for SwitchPro and JoyCon

 

Version 2.1.16

  • Allow inserting wait periods in macro sequence
  • Disable IdleDisconnect by default
  • Updated URL for Gamepad Tester
  • Added initial Flick Stick support
  • Various refactors to somewhat abstract controller type from mapper code
  • Added initial mapping support for the Switch Pro controller
  • Increased default flash warning interval in Settings. Now defaults to 40 ms
  • Changed connection type check depending on the input device
  • Added an extra Reset call for ManualResetEventSlim for DS4Device
  • Allow task startup if running on battery power
  • Added fuzz setting for 360 Steering Wheel mode
  • Hide DS4 Controller option re-enabled. Contribution by Yohoki
  • Chinese (Traditional, Taiwan) Translations Updated. Contribution by SyaoranChang
  • Ukrainian translation added. Contribution by atimonder1
  • Put null check when checking for new input devices. Necessary for new input device check refactor.
  • Bundled HidNinja 0.2.2

 

Version 2.1.15

  • Found a way to pass URL to Explorer and have the shell not interpret it. Removes cmd window appearing
  • Disable Program Folder panel on initial config window when location cannot be written to
  • Moved main touchpad options to a tab in the Profile Editor
  • Moved items in DS4 Canvas around. Top Touch hover image now appears above Lightbar button
  • Only reset rumble on extras deactivatoin if extras has rumble enabled
  • Allow Touchpad Click to be used as a Gyro trigger
  • Added an initial Touchpad Absolute Mouse implementation
  • Make sure to isolate Touchpad double tap check to Mouse mode
  • Added rotation setting to Touchpad Mouse
  • Make No Controller Connected message dynamic. Show updated controller limit depending on build
  • Increased interval for flashing latency warning
  • Added minimum threshold to Touchpad Relative Mouse
  • Added Min Threshold setting for Gyro Mouse
  • Updated Dutch Translation. Contribution by RedDevilus
  • Updated French Translation. Contribution by RedDevilus
  • Added translation contributors to About window finally
  • Disable ViGEm install button while installation process is active

 

Version 2.1.14

  • More max controller 4 value changes to use Global.MAX_DS4_CONTROLLER_COUNT parameter. Contribution by mika-n
  • Corrected bindings for AutoProfiles controls
  • Fixed trigger bindings in KB+M presets
  • No longer skip profile migration for version 1 profiles (Jays2Kings)

 

Version 2.1.13

  • Added FORCE_4_INPUT compilation symbol
  • Another place for bumping up test profile index

 

Version 2.1.12

  • Fixed test profile index use for Windows 7
  • Found more places where controller limit check was needed

 

Version 2.1.11

  • Added clamping on LS and RS dead zones in profile reader
  • Corrected test profile index when launching Profile Editor from Profiles tab

 

Version 2.1.10

  • Allow Black icon image for tray icon
  • Changes to allow a maximum of 8 input controllers. The old limit was 4.
  • Leave custom lightbar color active after macro if ‘Keep key state’ is set. Contribution by mika-n
  • Added One Euro Filter to UDP Server mapping
  • Added simple Presets window for Profile Editor
  • Changed some Gyro Controls checks in mapping routine. Old routine could have activated any set Gyro Controls buttons even while Gyro Mouse Joystick is used
  • Added a Changelog viewer window to project
  • Remove temp profile association on device removal
  • Fixed profile save name check for Save method in Profile Editor
  • Changed Quick Charge check to delay disconnecting BT controller until USB controller is detected. Allows USB wall chargers to be used to charge a DS4 and not interfere.
  • Fixed profile save on profile migration

 

Version 2.1.9

  • Added XInputChecker link
  • Fixed null pointer issues in Macro Editor when using Preset options

 

Version 2.1.8

  • Added WIN64 compilation symbol back in
  • Added Touchpad Click as an output binding
  • Added support for SnakeByte Game:Pad 4S gamepad. Contribution by mika-n
  • Implemented fuzz routine for LS and RS. Delta value before stick coordinates are updated
  • Changed assembly references. Found a way to safely use AggressiveInlining
  • Increased initial service start delay
  • Do not change window size if it is currently larger than default Profile Editor size
  • Added note about Edge to Exclusive mode error message
  • Fixed app crash when TaskService COM objects don’t work. Contribution by mika-n

 

Version 2.1.7

  • Fixed ‘index out of bounds’ error for localization string when default profile is not found. Contribution by mika-n
  • Updated build script to bundle newer translation packs
  • Updated Spanish translation. Contribution by peter9811

 

Version 2.1.6

  • Removed LBRY social link and resources
  • Allow setting a custom executable file for DS4Windows.exe
  • Changed CONFIG_VERSION to 4. Start of profile migration support
  • Added 1 Euro Filter smoothing for Gyro Mouse and Gyro Mouse Joystick output modes
  • Bump up Gyro Mouse offsets
  • Apply 1 Euro filter to calculated rotation angle from 360 Steering Wheel mode rather than each accel axis value
  • Fixed locatiztion bug in the input custom bezier curve string value. Contribution by mika-n
  • Added support for three specialist PS4 controllers. Contribution by tpneill
  • Increased scale multiplier used for Gyro Mouse
  • Changed translation string for ‘save’ in German translation. Contribution by Haamar
  • Dutch translation added. Contribution by RedDevilus
  • French translation added. Contribution by RedDevilus
  • Only call RefreshVolume when the DS4Audio device is detected
  • App can now find a unified USB device tied to the DS4 HID and audio devices. DS4Windows no longer relies on string name to match audio devices
  • Increased minimum headphone volume
  • Added new Chinese (Traditional, Taiwan) translation. Contribution by SyaoranChang
  • Fixed issue with wrong window position data being saved while window is minimized
  • Now show battery level for controller plugin tray message
  • Added current battery level from DS4State object to Controller Readings. Used to diagnose if BatteryChanged events are not firing in main window
  • Change profile save routine to allow dots in profile name
  • Escape underscores in profile names for some GUI controls. Needed to disable access key usage in some GUI controls
  • Fixed sides for Test Rumble in Profile Editor
  • Allow both rumble motors to be usable simultaneously for Test Rumble
  • Dynamically create task.bat file as requested. Allows a custom exe filename to be written to the file
  • Reset button mappings when a special action is triggered
  • Updated app manifest file to specify confirmed compatible versions of Windows
  • Now log current exe filename to Log file. Just the base filename not the whole path
  • Updated DS4Updater.exe to version 1.4.3

 

Version 2.1.5

  • New ‘Query’ cmdline options to return profile and DS4Windows app properties to a 3rd party app or batch scripts. Contribution by mika-n
  • Fixed Gyro Mouse Joystick invert options
  • Added OneEuroFilter class to project
  • Added 1 Euro Filter options to 360 Steering Wheel mode
  • Disable profile name textbox when editing an existing profile
  • Abstract portion of resource URI strings
  • Added max output throttling option to Gyro Mouse Joystick
  • Quick change to not persist auto profile messages to the log file
  • Added small wrapper for ReaderWriteerLockSlim objects
  • Display Gyro Mouse Joystick anti-dead zones as percentages
  • Take special action for certain keys in RecordBox when WPF does not transmit a KeyDown event
  • Added RWin button handling in mapping window
  • Added Parler Social link in About window
  • Added GitHub Issue template to Git repository
  • Added minimum threshold for Gyro Mouse Joystick
  • Set neutral resource language for assembly
  • Disabled force feedback support for virtual DS4 controllers

 

Version 2.1.4

  • Fixed app crash when No is selected in UAC confirm window
  • Make sure to cache profile flags after changing Steering Wheel axis in Profile Editor
  • Force permanent output device removal on service stop
  • Added support for Astro C40 gamepad. Contribution by mika-n
  • Fixed Gyro Mouse Turn Behavior setting
  • Fixed input bound flag updating for output slots
  • Changed Exclusive Mode check to take HidGuardian support into account. Key icon will appear for devices affected by HG
  • Added preset menu for face buttons. Finally wanted that option back
  • Re-enabled lightbar color change for output DS4 force feedback routine
  • Fixed output slot active flag when switching device types
  • Made changes to allow LastVersionChecked to be an optional element in config file
  • Raised default stick mouse offset
  • Fixed spelling mistake in DE translation file. Contribution by Flo082002
  • Changed gamepad latency log message to show current latency measurement. Contribution by dondrakon
  • Raised Square Stick Roundness max value to 1000.0
  • Use BeginInvoke for changing properties for permanent device manipulation. Keeps EventDispatcher actions in order
  • Reset state of permanent device when unbinding an input device
  • Fixed NumPadEnter binding in Binding Window
  • Bundled HidNinja v.0.2.1 HidGuardian management program

 

Version 2.1.3

  • Updated to use newer version of ViGEm.NET client libraries
  • Correct feature configuration for Hori PS4 Mini controller. Contribution by sergejkiller
  • Finally removed AnyCPU targets from solution
  • Added extra null check safeguard for output slots
  • Finally re-enabled Controller Readings tab from Profiles list
  • Finally removed support for old Flush HID option
  • Improved UI markup in Profile Editor window. Contribution by dondrakon
  • Add some extra Japanese translation string. Contribution by stryblt
  • Added config version number to profiles
  • Change to bundle DE lang assembly pack
  • Added app_version attr to profiles
  • Added extra exception catch to safeguard against corrupt XML files
  • Changed Profile Editor to not change virtual devices during loading
  • Changed Check Updates default interval to 1 Day rather than 1 Hour
  • Added Apply button on profile settings window. Contribution by dondrakon
  • Added Chinese Simplified translation. Contribution by mayawei
  • Allow skipping a version update from Updater Window
  • Added link for HidNinja program in Settings tab
  • Bundled HidNinja v.0.2 HidGuardian management program
  • Added app_version attr to main config file

 

Version 2.1.2

  • Added architecture info to log
  • Added option to specify permanently connected output devices
  • Added extra check before sending output reports to virtual device

 

Version 2.1.1

  • Changed type of output report transmitted to DS4 in BT. Now use report type 0x15 (previously 0x11)
  • Added extra data transmission flag to output report
  • Changed thread affinity of hidDevice object. Link with initial high priority thread
  • Use a Dispatcher instance for managing the OutputSlotManager rather than Tasks
  • Changed how a running output slot queue is specified
  • Initial mouse offset refactors. Base mouse offset on percentage of full speed. Defaults to 0.500
  • Make button mouse offset a profile setting
  • Set MinWidth and MinHeight values for the main window. Contribution by dondrakon
  • Group some button mouse fields into a class. Reduces getter calls
  • Show minimum effective mouse speed in GUI
  • Put OS Info in log. Will be useful for debugging
  • Removed chance for a dead lock when stopping input controllers. Luckily I have never encountered it
  • Fixed a bug where a shiftKey macro accidentally saved HoldMacro and Macro status values. Contribution by mika-n
  • Fixed debug x86 project target by enabling the Allow Unsafe Code project setting. Contribution by mika-n

 

Version 2.1

  • Fixed possible sign flip issue with radial output curves
  • Fixed NaN problem when radial cap is 0. Fixes output curve coordinate issues on the extreme low end
  • Support for various non-standard DS4 gamepads which behave in BT just like USB connected DS4. Contribution made by mika-n
  • Made a dedicated updater dialog window
  • Added Changelog text to updater window
  • Now actively using Newtonsoft Json.NET library
  • Added Markdown.XAML library
  • Fixed a few networking issues when pulling new version info
  • Minor optimization of Controller Readings tab. Moved state copying outside of UI thread
  • Updated UDP server to call the semaphore release on socket complete event
  • Added German translation files. Changes made by **Flo082002**
  • Added small log message stating whether running as Admin or User. Useful info when dealing with SendInput problems
  • Fixed bug with 360 Steering Wheel output. Now two DS4 gamepads can be properly mapped to different VJoy output device axes

 

Version 2.0.16

  • Made stick output curves radial
  • Doubled SocketAsyncEventArgs buffer length in UDP server (now 80)
  • Added semaphore to UDP server class to control SocketAsyncEventArgs instances used
  • Changed access flags used while enumerating controllers
  • Increased HID disable time when attempting to get exclusive access (now 100 ms)
  • Added updated DS4Updater downloading and version check
  • Removed DS4Updater copy routine at start of DS4Windows. Changed responsibility to end of DS4Updater script
  • Added rounding back to LS and RS Deadzone Profile Editor controls
  • Now download latest updater version number from online repository
  • Reduce confusion with minimize to taskbar/sys tray. Contributed by SteelShot
  • Bundled DS4Updater version 1.4.2

 

Version 2.0.15

  • Made a wrapper script for launching process in Explorer. Needed for opening URLs with query strings in un-elevated mode
  • Loosened enhanced precision curves
  • Changed check for remapping execution. Take some Gyro mode settings into account
  • Increased virtual device hotplug delay time to 500 ms (previously 200 ms)
  • Changed to store force feedback delegate and unsubscribe before virtual controller is disconnected
  • Force initial lightbar color change on profile load
  • Added extra profile flag caching when loading a profile
  • Temporarily establish main lightbar color after turning off lag flashing
  • Changed how state data is read for Controller Readings tab in Profile Editor
  • Added Newtonsoft.Json library to dependencies
  • Fixed setting arguments string for Launch Program special action
  • Added reference check while unplugging virtual device
  • Added tooltip showing program path for Launch Program special action

 

Version 2.0.14

  • Added wait event to use for refreshing controller readings
  • Added extra launch parameter for DS4Updater
  • Disable Controller Readings tab when not associated with a controller and profile
  • Make sure UDP server edit controls are enabled when UDP server is active
  • More actively refresh cached profile properties
  • Log exceptions from failed Tasks
  • Added Unbound preset menu option for preset context menu in Profile Editor
  • Increased stick mouse offset
  • Changed volume scale used for both headphone and microphone
  • Display input delay as a double in interface
  • Added more proper logging of background thread exceptions
  • Make profile list in Controller listing expand
  • Changed Controller Readings section to display numeric data for input and mapped output values
  • Changed some logging calls to use warning flag when exceptions are caught
  • Temporary: Commented out lightbar color changing routine from virtual DS4. Reverted to use old force feedback routine. The previous change seemed to contribute to infinite rumble for some people but I can’t verify anything on my end
  • Bundled DS4Updater version 1.4.1

 

Version 2.0.13

  • Added clamping to Gyro Mouse Joystick vertical scale
  • Start some process calls through explorer. Launch process un-elevated
  • Added social icons and links to About window
  • Added device display name to ID column
  • Added minor tooltip for exclusive column
  • Another attempt to fix Touchpad panel display
  • Related change to Gyro panel display

 

Version 2.0.12

  • Log actual exception that occurs when interpreting the Touchpad fails
  • Make sure to use newer custom settings for the first created (Default) profile. Was unintentionally using older Jays2Kings values
  • Make sure to display proper max mouse speed when creating a new profile
  • Fixed some profile defaults (Idle Disconnect, Enable Touchpad Toggle)
  • Added preset context menu back to Profile Editor
  • Lowered default LS and RS Anti-dead zones for new profiles (now using 20% rather than 25%)

 

Version 2.0.11

  • Increased stick mouse offset more
  • Fixed numpad divide virtual key code in BindingWindow
  • Group fields used for lightbar routine
  • Allow flashAt minimum to go to -10. Negative number disables flash and pulse lightbar functionality
  • Added DS4 feedback event workaround for lightbar color
  • Added Passthru lightbar mode. Used for games with native DS4 support that can change the lightbar color to display contextual states (The Witcher 3)
  • Removed unneeded references in resource files. Removed old audio file

 

Version 2.0.10

  • Loosened Enhanced Precision curve
  • Change to check for presence of PS button in idle check
  • Have Disconnect BT Special Action wait for Idle controller status with SONYWA
  • Make sure control binding is written for Shift bindings even when bound to default
  • Fixed double tap dragging by refreshing mouse buttons during a touchpad touch event
  • Allow square stick roundness to be set to 0.0. Linear interpolation
  • Change in gamepad input routine to manually interpret high resolution counter
  • Change application to use software rendering by default. Should resolve G-Sync issues
  • Moved elevation code to ControlService class
  • Commented out delay after re-enabling a device for Exclusive mode
  • Added some more tooltips to Profile Editor

 

Version 2.0.9

  • Fixed saving of “Repeat While Held” macro setting
  • Updated midpoint for gyro to axis calculations
  • Change default app text options in main XAML
  • Increased stick mouse offset

 

Version 2.0.8

  • Fixed type cast problems with Gyro output curves. Fixed Easeout Cubic curve for Gyro controls
  • Added output mouse speed text next to mouse sensitivity
  • Actually added mouse sensitivity binding in Profile Editor. Major Oopsie
  • Fixed switching of DInput only profiles
  • Changed display of rumble edit controls
  • Change main window init to launch background tasks later
  • Change to allow HidGuardian message to appear in Log tab

 

Version 2.0.7

  • Fixed profile duplication
  • Add log message if HidGuardian is detected
  • Change to launch HidGuardHelper later at startup
  • Fixed midpoint for Swipe to Axis controls
  • Added comment in profiles stating which version of DS4Windows made the file
  • Added link to HTML5 Gamepad Tester under Utils
  • Change to apply trigger max zone when dead zone is 0.0
  • Updated Russian translation. Change provided by DragonZX
  • Fixed exclusive mode issues for non-admin users. Fixed second instance shutdown failure.
  • Added extra hooks in Binding window for Numpad keys

 

Version 2.0.6

  • Created Max Output setting for some axes. Replacement for negative deadzone functionality from Jays2Kings build
  • Increased stick mouse offset
  • Increased virtual controller change delay time
  • Fixed saving of Custom Steam Folder setting

 

Version 2.0.5

  • Added Italian translation file to VS project
  • Fixed Y buffer clearing in trackball routine
  • Make new Special Actions enabled in the current profile by default
  • Make sure to actually load Linked Profiles at program start. Oopsie
  • Save settings on log off or Windows shutdown
  • Save settings on controller unplug. Needed to save Linked Profile setting
  • Link to ViGEm installer version 1.16.116
  • Allow moving auto profile entries. Change contributed by mika-n
  • Added tooltip to auto-profile path and title editbox fields. Change contributed by mika-n
  • Czech translation added. Provided by Maikeru007
  • Fixed binding for Flash at High Latency setting. Change contributed by mika-n

 

Version 2.0.4

  • Changed macro recorder to handle special case of capturing Alt keys
  • Fixed values used for controller button presses in macro recorder
  • Changed to now force some tabs to not be accessible while Profile Editor is open
  • Improved Japanese translation. Change provided by jeek-midford
  • Added “Revert to default profile on unknown process” option to auto-profile screen. Change provided by mika-n
  • Added user configurable (profile) max time for rumble watchdog timer. Defaults to a disabled timer (0 value). Should help with games that hold a rumble effect for a long period of time with no update (GTA 5?). Change provided by mika-n
  • Added Italian translation. Provided by RaydenX93
  • Fixed invalid cast bug for Shift Action key binding in Binding window. Crash happened when updating window with current binding
  • Added SuppressUnmanagedCodeSecurity to some classes that deal with COM interopt calls
  • Fixed default button mapping display for TouchUpper and TouchMulti touchpad buttons
  • Corrected trigger slider labels in Controller Readings tab
  • Fixed auto-profile “Turn DS4Win temporarily off” functionality. Changed provided by mika-n

 

Version 2.0.3

  • Added hooks for Swipe Control buttons
  • Added fix for Load Profile Special Action save crash
  • Bundled HidGuardHelper version 0.1.2. Added process check for stale whitelist key removal

 

Version 2.0.2

  • Fixed Gyro Mouse Trigger display string
  • Added locking on a collection to clear up potential thread safety issues
  • Added workaround to inverted YAW gyro axis issue in some DS4 v1 gamepads. Made by mika-n
  • Updated ViGEmBus installer URL
  • Show minor message if ViGEm installer download fails
  • Added minor check if timer needs to be run in Welcome Dialog
  • Updated tray menu
  • Make sure RecordBox can have focus. Allow extra keys to be usable while recording a macro
  • Added Portuguese translation. Made by Leomelati
  • Added Spanish translation. Made by RY0M43CH1Z3N
  • Moved some overlay buttons in Profile editor

 

Version 2.0.1

  • Changed scroll property of ScrollViewer controlling Axis Config tab. Changes scrollbar speed
  • Added extra locking in TrayIconViewModel
  • Make sure “Hide DS4 Controller” checkbox is temporarily disabled after click
  • Fixed sensitivity ranges in Profile Editor
  • Fixed restoring of chosen tray icon image
  • Added catch block for ManagementException when connecting to WMI
  • Force prevent multiple profile editors from being created
  • Fixed ViGEm installer download in Welcome Dialog
  • Changed ViGEm installer download routine to download to a temp file before moving to the final destination
  • Russian translation files added
  • Added more tray menu actions back (Start, Stop, Open Program Folder)

 

Version 2.0.0

  • WPF Version
  • Re-wrote GUI classes to use Windows Presentation Foundation (WPF) instead of Windows Forms
  • More utilization of data binding in application. More use of custom events for ControlService
  • Added application file logger
  • Refactored macro editor
  • Changed Run as Task routine. Old routine will be replaced, if it exists, upon the first run of version 2.0.0
  • New translation system is in place. Currently, only English and Japanese language packs are available. Looking for volunteers to provided updated translations for other language packs
  • Re-written auto profile routine
  • Snappier program and mapper routine
  • Many other changes

 

Version 1.7.28

  • Fixed copying of new updater version from Updates Files directory

 

Version 1.7.27

  • Bundled DS4Updater.exe version 1.4.0

 

Version 1.7.26

  • Nacon Revolution Infinite support. Change made by mika-n
  • Tweaked “runCalib=false” check for Nacon gamepads. Change made by mika-n

 

Version 1.7.25

  • Don’t show disconnect confirm window when launching updater
  • Fixed app crash when WMI connection fails

 

Version 1.7.24

  • Nacon Revolution Pro v3 gamepad support. Change provided by mika-n
  • Fixed non-visible gyro panel problem when creating a new profile
  • Added extra log message when ViGEmBus device is not detected
  • Updated Task Scheduler to version 2.8.17
  • Unify output device plugging and unplugging
  • Added plug and unplug delay of 100 ms for output devices

 

Version 1.7.23

  • Fixed a major fail. Launching updater routine has been fixed. NOTE: Please run DS4Updater.exe to update DS4Windows to version 1.7.23. That is needed due to the previous bug.
  • Added SuppressUnmanagedCodeSecurity attr to Program class
  • Updated HidGuardHelper.exe built with Visual Studio 2019

 

Version 1.7.22

  • Added runtime MAC generation routine for third party controllers when serial reading fails. Change provided by mika-n
  • Added read only check for Startup lnk entry. Change provided by almod90

 

Version 1.7.21

  • Corrected default for linkedProfileCheck
  • Fixed LS Maxzone and Anti-Deadzone controls in Profile editor
  • Increased hotkeys timer interval to 20 ms (was 100 ms)
  • Fixed old bug when checking for DS4Updater that could have caused a thread lock
  • Now use periodic garbage collection

 

Version 1.7.20

  • Fixed output controller selection saving in Profile editor
  • Added Hori Fighting Commander and Nacon Revolution Unlimited Pro gamepad support. Change provided by mika-n

 

Version 1.7.19

  • Fixed start minimized options

 

Version 1.7.18

  • Added precaution against rapid NullReferenceException throws in Special Actions routine
  • Fixed crash problem regarding lightbar color tooltips
  • Only run Save method at startup on first launch
  • Fixed initial window state when Minimize to Taskbar is enabled
  • Tweaked layout of Mouse Joystick panel
  • Fixed touchpad disable invert setting for None
  • Corrected default gyro triggers
  • Fixed shift action scan code check
  • Fixed checking for temporary controller type in Profile editor
  • No longer make UseDS4ForMapping a persistent setting. That setting has caused more trouble than it is worth for several users.
  • Updated Task Scheduler package to version 2.8.15
  • Set Specific Version check to false for Task Scheduler assembly
  • Now use exenoupdates command line flag for ViGEm installer

 

Version 1.7.17

  • Steel Play Metaltech P4 gamepad (wired) support. Added by mika-n
  • Changed Options form to use a tab layout rather than a flow control layout. Controls are more spaced out and better organized. Axes config layout contributed by mika-n
  • Moved CRC table creation to ControlService
  • Added max saturation setting for rainbow lightbar mode
  • Added exclusive icon to main controller listing
  • Added identifier name to meta info. Name will appear in Log tab messages
  • Use max displacement from center for Mouse Joystick and RS conflict
  • Use colored icon provided by Geroyuni
  • Made separate roundness setting for RS now since there is space in the UI for it

 

Version 1.7.16

  • Fixed some tool tip typos
  • Run on key release, Run synchronized, Repeat while held and Keep key state support added to macro special action. Changes provided by mika-n
  • Added MIT license file
  • Added Mouse Joystick support for the gyro. Used to simulate relative camera movement while emulating the right analog stick. Useful for games that don’t support simultaneous XInput + Mouse support
  • Replaced app icons with images provided by Geroyuni
  • Now force dead zone and anti-dead zone for LS and RS in new profiles
  • Added updated ViGEmClient library that fixes the zombie force feedback thread problem. Change provided by mika-n

 

Version 1.7.15

  • Changed to allow gyro steering wheel mode to work when outputting to VJoy output axis while Use DInput Only is enabled. Contributed by mika-n
  • Fixed packaging problem. Bezier Curve editor is now bundled like it should have been in recent releases

 

Version 1.7.14

  • No longer use quiet flag for ViGEm installer. Use normal user installation process
  • Increased delay used in resume from suspend routine

 

Version 1.7.13

  • Custom Bezier curve implementation added by mika-n
  • Fixed updater not getting launched via auto update checker if updater version has not changed
  • Slowed down mouse wheel scrolling for analog stick
  • Added cmdline options to send start/stop/shutdown/LoadProfile/LoadTempProfile commands. Contributed by mika-n
  • Added support for matching using both program path and application window title values in auto-profile system. Contributed by mika-n
  • Added support for wildcard string match in auto-profile path and window title values. Contributed by mika-n
  • Fixed the image size issue in “run program with profile” app icon. Contributed by mika-n
  • Fixed some strings in pt-BR resx files
  • Tweaks to fix USB connections causing high CPU usage after waking PC from sleep

 

Version 1.7.12

  • Added wait period while suspending
  • Fixed profile selection for times when profiles have similar names. Use exact name match
  • Change to using pre-allocated buffer in UDP server
  • Group some profile mapping properties together in conversion routines. Reduced getter calls
  • Took Color Dialog out of KB360 form. Form can now be designed in x64 mode. All forms can now be edited in Design mode in Visual Studio while targeting x64 platform
  • Updated Norwegian translation provided by DandelionSprout
  • Lowered breakpoints used for enhanced precision curves. Tightened curve compared to version 1.7.11
  • Allow Square Stick mode to use a custom roundness setting. Change provided by @Kamilczak020

 

Version 1.7.11

  • Norwegian Bokmål translation provided by @DandelionSprout
  • Loosened enhanced precision curves
  • AdvancedColorDialog change improved responsiveness of application for some reason
  • Removed color dialog dependency from design for some forms. Allows DS4Form and Options forms to open in Design mode while targetting x64
  • Added easeout cubic curve option

 

Version 1.7.10

  • Added support for Warrior Joypad JS083 gamepad. Changed provided by mika-n
  • Changed Welcome dialog window to monitor ViGEm process rather than search for its process name. Should fix false Install Failed messages
  • Added remote connection support to the UDP server. Changed provided by mika-n

 

Version 1.7.9

  • Updated images provided by carloshbcabral and FuriaESP
  • Added support for Razer Raiju Ultimate and CronusMax PS4OutputMode. Changes provided by mika-n
  • Updated Welcome Dialog to use ViGEm Installer 1.6.115
  • Fixed 360 steering wheel emulation mode for dualshock4 controller output. Change provided by mika-n

 

Version 1.7.8

  • Fixed an issue with new installs not initializing a virtual controller
  • Moved Form classes to separate namespace
  • Added Razer Raiju Tournament Edition support
  • Fixed migration of DS4 Touch Button status. Touchpad Button can now be used with a virtual DS4

 

Version 1.7.7

  • Fixed Up-Left DPad direction for DS4 output device

 

Version 1.7.6

  • DualShock 4 controller emulation type has been added. ViGEmBus will emulate a DS4 v.1 when the option is enabled
  • Updated ViGEmClient library to use notification queue for DS4 target
  • Linked touchpad related delegates to class instance rather than linking to interface. Speed boost
  • Added “Unload on trigger release” option for Load Profile special action. Change made by mika-n
  • Fixed issue with Gyro Toggle being used when not enabled in a profile
  • Changed Welcome Dialog to use the new official ViGEm Bus Driver installer. The installer will install ViGEm Bus Driver version 1.16.112.0
  • Fixed ViGEmBus driver check to work with ViGEmBus version 1.16.112.0 as well as 1.14.3.0
  • Allow setting a custom Steam folder location. Change contributed by Sander0542
  • Raised sixaxis dead zones

 

Version 1.7.5

  • Fixed force feedback notification queue for ViGEmClient library

 

Version 1.7.4

  • Re-enabled force feedback support
  • Updated ViGEmClient library to include a queue for force feedback notifications. This should fix the stuck force feedback issue
  • Use ref locals to curb array access for KB+M routines
  • Added support for the PS4 Fun Controller
  • Use wrapper method for MapVirtualKey when using older scan code option. Fixes issues with arrow keys not being interpreted correctly in some situations
  • Tweaked sensitivity axis scaling to reach max values
  • Allow Load Profile action key to be used without unload trigger. Allows multiple Load Profile special actions to work together. Change made by mika-n
  • Added brute force feedback timer fix implemented by mika-n. Should help with worst case scenario of the rumble getting stuck

 

Version 1.7.3

  • Disabled force feedback support for now
  • Updated code to use newer stable ViGEm.NET client library
  • Added runtime option for toggling touchpad movement. No longer edit profile setting and store old setting temporarily
  • Now skip updater execution if new updater version could not be downloaded
  • Added null check for Enable_Controls method
  • Resolved crashing and stability issues with x86 build caused by ViGEm.NET client library

 

Version 1.7.2

  • Updated some color picker options to update lightbar with preview
  • Removed set rumble to zero call for touchpad button up event
  • Corrected force feedback motor values used in event handler added from SONYWA connection sync change. Only affects Sony Wireless Adapter connections

 

Version 1.7.1

  • Reverted hotplug delay change
  • Changed force feedback handler to use SetDevRumble to avoid array checks
  • Added feedback received event handler before connecting virtual controller
  • Corrected force feedback motor values. The motor values were flipped before

 

Version 1.7.0

  • ViGEmBus support has been added. ScpVBus support has been removed.
  • Changed hotplug delay location

 

Version 1.6.14

  • Changed confusing driver message in Welcome dialog. It used to imply that ScpVBus was needed to use the DS4 in Windows rather than just for DS4Windows
  • Deprecated old mouse acceleration profile option. Now defaults to false
  • Fixed Sony Wireless Adapter disconnect on Windows 7
  • Utilize calls that force Normal IO and Memory Priority for the process. Especially useful when DS4Windows is run as a Task but it also helps with normal execution on my system
  • Changed when delay takes place for hotplug routine
  • Raised SocketAsyncEventArgs buffer for UDP server. Raised from 20 to 40 objects
  • Make default use controller for mapping option to false
  • Fixed x86 build to target C# 7.3

 

Version 1.6.13

  • Changed Flash At lightbar function to work at 0% battery
  • Removed unwanted boxing for AdvancedColorDialog OnUpdateColor event
  • Fixed color dialog error for Check Battery Life special action menu
  • Altered Controller Readings tab to better represent mapped state
  • Changed exclusive mode failure message to mention UWP apps causing exclusive mode problems
  • Fixed auto profile loading for hotplugged controllers
  • Implemented square stick functionality. The analog stick can now be mapped so a push to a diagonal will reach a square corner of (1.0, 1.0)
  • Make sure to stop USB controller while suspending. Fixes out of bounds errors appearing
  • Changed haptic changing routine to skip always searching for existing device
  • Do not reset custom led setting while switching profiles. Fixes custom color option for controller slot
  • 360 steering wheel mode changes provided by @mika-n. Improved deadzone handling. Fixed a bug in >360 turn range calculations. Small performance improvements.
  • Use implicit extra dead zones for special actions

 

Version 1.6.12

  • Some minor tweaks to remove instances of boxing being done by the .NET Runtime when firing events
  • Replace old lock with ReaderWriterLockSlim instance when committing KB+M actions
  • Added 360 steering wheel mode provided by @mika-n. This mode maps the controller’s orientation angle to a joystick axis rather than mapping from gyro data directly. This way, the controller can be rotated 360 degrees or greater and be able to map the range to a joystick axis. The mode can map orientation changes from 90 degrees up to 1440 degrees and it works great in American Truck Simulator. Extra documentation can currently be found in issue #491.
  • Now target .NET Framework 4.6.2

 

Version 1.6.11

  • Utilize enumerators for many for loops. Gets rid of many ElementAt calls. Using an enumerator in a for loop seems to be faster than foreach use despite the similarities
  • Re-added extra default axis mapping pass. Should fix some stick direction actions
  • Removed some struct copying from lightbar routine by using ref returns
  • Now target C# 7.3
  • Now use C# 7 features
  • Added unchecked blocks for populating field mapping arrays

 

Version 1.6.10

  • Fixed remapping multiple controls to one XInput output control
  • Fixed remapping of XInput controls

 

Version 1.6.9

  • Fixed double tap interval issue with Multi-Action Button special action
  • Fixed issue with xinput unplug routine on device removal
  • Minor fix for update check when offline. Fix provided by xrossb
  • Added toggle option for Gyro Mouse activation
  • Purged old state mapping code that required dictionary object
  • Implemented user defined gyro mouse dead zone
  • Fixed issue with wrong values being returned for shift modifier actions
  • Added easeout quad curves for various axes

 

Version 1.6.8

  • Implemented FILE_ATTRIBUTE_TEMPORARY use when opening DS4 device
  • Changed some missed routines to use 128 as stick axis midpoint
  • HidGuardian v.1 support added back in. A new executable is bundled with DS4Windows to manage whitelist entry

 

Version 1.6.7

  • Removed old call for low latency garbage collection. Not needed with server mode GC. Improves application performance
  • Changed DS4Color to use IEquatable interface. Allows for a faster Equals method
  • Fixed issue with old headphone volume values being used when sending timeout output reports. Make sure to pull current value with each timeout
  • Increased mouse stick offset value slightly. Changes to the base seem to have allowed for it
  • Start using 128 as proper axis midpoint for sticks. Changed some mapping routines

 

Version 1.6.6

  • Changed how haptic state changes happen. No longer rely on array iteration and struct field merging. Only consider test rumble state and current pushed haptic state.

 

Version 1.6.5

  • Minimize influence of stopwatch for output report routine

 

Version 1.6.4

  • Changed output routine to send at least one output packet every 4 seconds. Works around DS4 hardware shutting down rumble motors
  • Changed thread priorities of some threads
  • Changed thread affinity of some timer objects
  • Added log notifications when using Load Profile special action
  • Changed x64 download of updater to use base name again

 

Version 1.6.3

  • Removed use of Microsoft.Win32 namespace
  • Changed suspend detection routine to use WMI

 

Version 1.6.2

  • Bundled new version of DS4Updater (1.3.0) that uses GitHub as a download resource
  • Many changes to make auto updating routines use GitHub as a download resource
  • Changes to tray icon population provided by @JarnoVgr
  • Added support for Scuf Vantage controller

 

Version 1.6.1

  • Bundled new version of DS4Updater.exe (1.2.9) with version check fix
  • Use SuppressUnmanagedCodeSecurity attribute for InputMethods class
  • Changed build to use C# 7.2
  • Lowered priority of bus thread

 

Version 1.6.0

  • Version update

 

Version 1.5.20

  • Corrected archive posted to update server
  • Workaround to fix version checking problem

 

Version 1.5.19

  • Raised enhanced precision curve values
  • Fixed Start Minimized functionality

 

Version 1.5.18

  • Removed component use for ScpVBus related classes
  • Loosened enhanced precision curves
  • Made slightly better window size saving routine
  • Now use local thread data for InputMethods method calls rather than a shared struct array
  • Changed UDP port opening routine
  • Updated ToolsVersion project attribute
  • Fixed UDP start routine to actually use wait time rather than busy loop

 

Version 1.5.17

  • Changed UDP server buffer usage
  • Changed UDP server toggle in GUI to make sure UDP server is initialized outside of the main GUI thread
  • Added usage HID Device Capability flag check during device detection. Related to Issue #498 regarding Hori PS4 Mini controller

 

Version 1.5.16

  • Disabled AllowDrop setting for DS4Form
  • Removed formatting from profiles listbox
  • Increased timeout for tracking second instance exclusive mode workaround
  • Fixed Run At Startup option. Window security issues caused problems with the last release
  • Reverted to using asInvoker in manifest file
  • Fixed start minimized option
  • Removed unnecessary SetVisibleCore override
  • Changed options form check after clicking window close button. Ensures app does not crash if profile editor is still open while on Controllers tab
  • Changed ErrorReport option for project build settings. It does seem to matter even outside the IDE
  • Fixed issue with app not being restored from launching a second session

 

Version 1.5.15

  • Now force launch as administrator in the application
  • Removed HidGuardian usage and purged extra routines
  • Added simple gyro calibration check to ensure calibration is not performed if proper data is not found
  • Added ReaderWriterLockSlim use to UDP server for locking pool array index
  • Corrected an UnregisterNotify call used when quitting app
  • Corrected KB+M action resetting when a device is disconnected

 

Version 1.5.14

  • Moved output data copying to dedicated thread for USB and Sony Wireless Adapter connections. Lead to a good speed boost
  • Added flag to allow skipping a lock when applicable. Skip thread event queue check if no events are in the queue.
  • Corrected unregister notify call
  • Changed index increment placement for UDP server routines. Hopefully it resolves issue #454 for other people. It does on my machine.
  • Fixed extra utilities control display in flow control of Settings tab

 

Version 1.5.13

  • Tweaked main form class
  • Raised mouse stick offset
  • Added SuppressUnmanagedCodeSecurity to Color Dialog for some unmanaged calls

 

Version 1.5.12

  • Added SuppressUnmanagedCodeSecurity to main DS4Form class. Useful for auto profile routine calls
  • Changed WndProc call to register for more specific device change events
  • Loosened enhanced precision curves further

 

Version 1.5.11

  • Fixed device event queueing

 

Version 1.5.10

  • Removed old Any CPU build targets
  • Replace stack with simple array in UdpServer
  • Enforce static usage for SystemEvents.PowerModeChanged
  • Loosened enhanced precision curves

 

Version 1.5.9

  • Fixed issue with useDInputOnly variable not being in correct state
  • Added change to reset active KB+M controls after unplugging controller
  • Added different gyro trigger conditional. Trigger condition can now be treated as an OR condition rather than just an AND condition
  • Resolved name collision with Log class and Diagnostics namespace
  • Fixed out of range error while checking the selected macro index. Change provided by @justalemon
  • Increased timeout for exclusive attempt process. Fixes another issue with exclusive mode permanently disabling devices.
  • Use stack of objects with UdpServer

 

Version 1.5.8

  • Fixed problem with unplugging controllers causing cross thread issues

 

Version 1.5.7

  • Changed timer usage in main form
  • Fixed issue with SONYWA connections having invalid calibration data
  • Removed UI thread usage from unplug routine
  • Fixed variable scope for swap profile routine

 

Version 1.5.6

  • Various tweaks to speed up main form
  • Removed some older unnecessary variables

 

Version 1.5.5

  • Only refresh last message text once after closing Options form
  • Fixed UDP server memory leak

 

Version 1.5.4

  • Delay UDP port change for when UDP checkbox gets unchecked
  • Changed behavior of auto profile and hotkeys timers
  • Fixed minimize to taskbar behavior

 

Version 1.5.3

  • Integrated UDP server that can be used with Cemuhook. UDP server is disabled by default and can be enabled in the Settings tab.

 

Version 1.5.2

  • Reduced overhead of message tips for Settings check boxes
  • Added unchecked blocks to help speed up state conversion

 

Version 1.5.1

  • Removed Form_Resize from Options form
  • Loosened Enhanced Precision Curves
  • Enable server garbage collection mode. Application will use more memory in exchange for better performance
  • Small tweaks to program entry

 

Version 1.5.0

  • Added SuppressUnmanagedCodeSecurity attribute to ScpDevice class. Lead to a good speed boost
  • Use unsafe array pointers when accessing gyro and accel byte arrays
  • Fixed minimize to tray option

 

Version 1.4.123

  • Removed some unused classes and tweaked some build settings
  • Trimmed hotplug routine
  • Program now scans for possible stale HidGuardian whitelist entries on startup
  • Loosened enhanced precision curves
  • Updated target framework version to .NET Framework 4.6.1
  • Skip gyro calibration routine for Nacon Revolution Pro Controller 2
  • Updated ViGEm build to use newer ViGEmClient library
  • Minor tweaks to ViGEm build
  • Fixed problem with null reference errors occurring with the UdpServer builds due to sleep mode

 

Version 1.4.122

  • Flawed build. Check version 1.4.123

 

Version 1.4.121

  • Removed drag drop importing of profiles from main window. Good app speed boost.
  • Do not remove auto profiles entries for currently uninstalled apps
  • Removed unused AlreadyRunning form
  • Make comboboxes not accept keyboard input for profile switching
  • Make sure controller reading can be started again when switching auto profiles
  • Changed enhanced precision curves
  • Added device info for a generic DS4 gamepad
  • Changed logic for implicit stick mouse dead zone
  • Corrected stick angles and stick dir unit values. Used for KB+M actions

 

Version 1.4.120

  • Fixed issue with profiles listview being partially hidden after closing Options form
  • Removed Application.SetCompatibleTextRenderingDefault call. Text rendering is slightly different but application performance is greatly improved
  • Added minimize to taskbar as a setting
  • Raised max for sensitivity options
  • Changed lookup device name for DS4 v2 audio device
  • Fixed issue with USB sending constant output reports. Only copy relevant output bytes for BT.
  • Removed custom theme for debug list view
  • Added disconnect options to tray menu

 

Version 1.4.119

  • Loosened touchpad jitter compensation parameters
  • Fixed failed to unplug message from appearing when switching profiles using SONYWA
  • Take stick rotation into account for axis to button mapping routine
  • Hori PS4 Mini controller support added by jdfeng
  • Fixed timeout disconnect issue caused by changes in previous version
  • Removed sending output report when charging status changes for SONYWA
  • Changed headphone support to only grab audio volume when output report changes. Let native device handle volume changes otherwise

 

Version 1.4.118

  • Use synchronous write operations for USB and SONYWA connections again
  • Send output report to SONYWA controller when charging status changes

 

Version 1.4.117

  • Fixed hover button color in Options form
  • Removed controller array scan from each report process
  • Updated TaskScheduler to version 2.8.0
  • Hold max and min lightbar color for pulse charging animation so both extremes are exposed for a longer period of time
  • Changes to hopefully work around hotplug issues with Bluetooth controller connections on Windows 7
  • Corrected order of key releases when using Win + Print Screen
  • Do not restart service when changing dinput option in profile

 

Version 1.4.116

  • Ensure that touchpad packet data is copied only when an updated packet is detected
  • Changed to have extras string removed from profile when reverted back to defaults
  • Changed to make sure to use profile lightbar color when syncing controller to Sony adapter
  • Loosened Enhanced Precision curves for sticks

 

Version 1.4.115

  • Updated version number of DS4Updater

 

Version 1.4.114

  • Bundled version 1.2.8 of DS4Updater.exe
  • Changed USB and SONYWA connections to use a dedicated output thread
  • Use unsafe memory pointer usage for output report methods and gyro data copying
  • Removed use of rectangular array for CRC32 calculations. Now use one dimensional array

 

Version 1.4.113

  • Changed some array copying to use unsafe memory pointers
  • Use declared unsafe blocks in project
  • Added CRC32 data validation for Bluetooth connections
  • Added delay for device enable routine
  • Now force disconnect for wireless controllers when suspending

 

Version 1.4.112

  • Changed stop routine to call StopUpdate for normal device removal and close HID device earlier
  • Make sure to populate oldprofilepath when refreshing profiles
  • Corrected appdata path display for SaveWhere dialog
  • Changed timer usage for RecordBox
  • Changed DS4Updater to automatically launch DS4Windows after update is complete
  • Updated DS4Updater to version 1.2.7
  • Changed how language list is loaded for LanguagePackComboBox

 

Version 1.4.111

  • Use tasks for some WebClient events. Reduces input lag
  • Fixed config loading so Welcome Dialog window uses the language setting

 

Version 1.4.110

  • Updated DS4Updater.exe to version 1.2.6.0
  • Changed timer usage in Welcome Dialog to run routine in a different thread
  • Changed locale initialization to allow set language to be used in Welcome Dialog
  • Changed Auto Profiles form to use environment info for finding start menu programs path
  • Changed to reset rumble state when switching profiles
  • Removed Management assembly dependency from project
  • Changed how ScpVBus device is checked. No longer using WMI which had resulted in caching issues
  • Added Open Program Folder link in taskbar
  • Removed IWshRuntimeLibrary assembly dependency from project
  • Updated layout of some Chinese versions of forms
  • Added some minor HidGuardian utilities (template AffectedDevices, clean old whitelist entries, regedit shortcut). DS4Windows has to be run as admin in order to have access to those utilities
  • Added language switcher which was implemented by czukowski

 

Version 1.4.109

  • Fixed problem with localization files not being found. An extra config file is now included which is needed for language packs to be found
  • Changed audio device search routine to no longer use a portion of an audio device name that is susceptible to localization
  • Changed headphone volume curve to more closely resemble control outside of program
  • Fixed output curve options for sixaxis controls
  • Changed sixaxis dead zone defaults to reflect recent changes
  • Corrected color used for swipe control labels
  • Fixed swipe controls and 2 finger swiping to change profiles. First touchpad touch data is populated properly again.
  • Changed exclusive mode routine to no longer quit when disabling a device fails. This change has been shown to keep a DS4 from getting permanently disabled after disconnecting the device. The change was needed by Broforce on my system when using the old exclusive mode trick.
  • Fixed problem with rapid mouse action clicks when using touchpad controls

 

Version 1.4.108

  • Fixed device plugin changes while switching profiles
  • Added trackball mode for touchpad
  • Fixed index bug in hotplug routine
  • Updated Task Scheduler to version 2.7.2
  • Changed six axis dead zone calculation to be a proper dead zone

 

Version 1.4.107

  • Trimmed code run for touchpad untouched path
  • Removed extra gyro controls dead zone. Necessary to use DS4 as a steering wheel

 

Version 1.4.106

  • Update DS4Updater version number in DS4Windows to latest version

 

Version 1.4.105

  • Updated DS4Updater.exe. The updater now uses the user’s Downloads folder to download the latest DS4Windows archive. The file will not be deleted by the updater.
  • Use delegate method for iterating over the DS4HapticState array. Grabs struct instances by reference rather than making new copies
  • Added main lock again for USB and SONYWA when creating output reports

 

Version 1.4.104

  • Use only one output array for USB and SONYWA
  • Changes to how output reports are sent
  • Use event callback to get audio endpoint volume

 

Version 1.4.103

  • Minor tweaks
  • Only load Options form when needed. Option forms now takes a couple of seconds to load

 

Version 1.4.102

  • Using Visual Studio 2017 as main build environment
  • Updated DS4Updater.exe
  • Removed new DS4State object creation per poll. Decreases input lag
  • Changed some background and colors to better accommodate High Contrast mode
  • Loosened Enhanced Precision curve for stick mouse
  • Fixed macro binding for multiple touchpad swipe controls

 

Version 1.4.101

  • Changed stick mouse speed. Removed old initial speed offset
  • Changed to skip macro array check if a macro is not in use
  • Fixed custom color preview when color dialog is opened from Controllers tab
  • Tweaked layout of some Russian forms
  • Fixed issue with saving window location when form state is not normal
  • Added routine to manage HidGuardian whitelist key. DS4Windows will write the whitelist key when started and delete it upon quitting. Currently only works if DS4Windows is run as admin (will fail silently as a normal user)
  • Changed portions of output report routine
  • Various tweaks to decrease input lag

 

Version 1.4.100

  • Updated DS4Updater to version 1.2.3
  • Added delay before executing program linked to a profile
  • Added initial support for the Nacon Revolution Pro thanks to Yuki-nyan
  • Fixed issue with service changing when changing the XInput port range
  • Added option to export log text to a text file
  • Added version information to log tab messages
  • Fixed problem with some scan codes used for multimedia key events
  • Added saving of form position upon exit and restoring form position on startup
  • Corrected some form control alignment issues

 

Version 1.4.99

  • Updated DS4Updater.exe
  • Added minor tweaks
  • Added Razer Raiju VID and PID information. Other reports seem to suggest that support for the Razer Raiju should work fine in DS4Windows with the new information but I have no way to test that

 

Version 1.4.98

  • Send extra output reports as needed to prevent the lightbar color from getting stuck on the wrong color
  • Changed to have extras parsed before actions are executed
  • Lowered times used for taps and holds in macros
  • Added x86 as a platform target
  • Added linked profiles support. Profiles can be linked to a specific controller ID rather than by controller slot number
  • Only load profiles as needed rather than at program startup

 

Version 1.4.97

  • Reduced gyro mouse deadzone
  • Updated Hide DS4 Controller checkbox routine so it waits for service changes to finish
  • Corrected messages used for touchpad toggle
  • Changed device detection to make sure a charging controller paired via Bluetooth is not seen twice by DS4Windows
  • Added experimental gyro calibration support
  • Tweaked updating of output report

 

Version 1.4.96

  • Fixed mouse wheel delta value used for events
  • Fixed issue with multiple unpaired Sony dongles not being detected
  • Updated Spanish translation provided by jose350
  • Worked on translation file support
  • Fixed multiple controller scans occurring while changing Dinput only mode in Options form
  • Added headphone volume support for DS4 v2 controllers connected via USB

 

Version 1.4.95

  • Reset gyro trigger and touchpad disable invert menu items when loading profile settings
  • Fixed smoothing buffer routine for Gyro Mouse
  • Made touchpad jitter compensation a default option again
  • Changed values used for touchpad jitter compensation mode
  • Trimmed SixAxis data interpretation
  • Split pulse flash duration and pulse charging duration into segments to reduce CPU usage
  • Various minor tweaks to improve performance

 

Version 1.4.94

  • Moved ControlService instance to a separate thread. Further reduction in input lag

 

Version 1.4.93

  • Replaced BackgroundWorker instance with a regular Thread. Reduced CPU load and reduced input lag

 

Version 1.4.92

  • Changed thread affinity of BackgroundWorker responsible for bringing DS4Windows to the foreground while attempting to open a second instance. Improves performance of entire application. Reduces input lag
  • Changed the priority of some threads

 

Version 1.4.91

  • Added sleep time before hotplug routine is launched. Needed sometimes for lightbar to work properly when using BT
  • Changed thread affinity of DS4Device objects. Drastically reduces input delay
  • Changed various parts of DS4Form to improve GUI performance
  • Changed some usages of timers to use System.Timers.Timer
  • Reduced size of latency calculation buffer
  • Raised timeout thread interval to ensure controller is seen as inactive by Windows before disconnecting

 

Version 1.4.89

  • Changed idle disconnect lightbar color routine to use an EaseOutQuad curve rather than a Linear curve
  • Corrected bounds used for touchpad disable invert setting. PS button is now selectable
  • Changed touchpad jitter compensation routine

 

Version 1.4.88

  • Updated .NET target framework version to version 4.5.2
  • Updated TaskScheduler to version 2.5.28
  • Added option to disable touchpad mouse inversion while holding a selected button or combination
  • Added offset for touchpad mouse
  • Changed mouse offset used for stick mouse
  • Lowered speed factor used for stick mouse routine
  • Minor changes to exclusive mode routine

 

Version 1.4.87

  • Corrected calculation of touchpad X coordinate
  • Removed many unnecessary state object copy calls. Good bump in XInput performance due to this change.
  • Grab and use timestamp data from DS4 for use with gyro mouse
  • Adjust internal gyro mouse values
  • Add Finger on Touchpad back as a shift modifier

 

Version 1.4.86

  • Corrected bounds issue with rotated coordinates for LS and RS
  • Added various settings for sixaxis controls (anti-dead zone, max zone, curve)
  • Fixed sixaxis dead zone calculations
  • Enforce new default BT poll rate in Options form
  • Take poll rate into account for gyro mouse

 

Version 1.4.85

  • Added option to use gyro roll to control horizontal gyro mouse movement
  • Added axis inverting functionality for touchpad mouse
  • Change to attempt to exit the application cleanly in more situations. Should fix odd crashes at shutdown
  • Make default Bluetooth poll rate 4 ms

 

Version 1.4.84

  • Changed shutdown routine to only pop up confirmation dialog if the user explicitly closes the program. The previous version would not allow Windows to shut down while DS4Windows was running because it was waiting for a response from the dialog window
  • Changes to program startup and output report bytes to help improve performance and further decrease input lag
  • Allow Disconnect BT special action to work with Sony dongle connection

 

Version 1.4.83

  • Fixed device battery status display for tray icon
  • Added prompt when closing the application if any controllers are connected. Change provided by Aziz Rafsanjani
  • Added rotation angle adjustment settings for LS and RS
  • Change for Sony dongle connection to only have a virtual XInput controller available if a controller is synced to the dongle
  • Fixed version comparison in DS4Windows.exe updater routine

 

Version 1.4.82

  • Fixed issue with latency messages being displayed multiple times unnecessarily in log
  • Added smoothing routine for gyro mouse
  • Tweaked mouse offsets used for gyro mouse and base gyro sensitivity multiplier
  • Fixed some invalid URLs regarding the updater in DS4Windows.exe

 

Version 1.4.81

  • Added a vertical scale setting for gyro mouse
  • Fixed idle disconnect lightbar dimming when using a USB connection
  • Fixed interpretation of number of fingers on the touchpad. This is primarily useful when using a touchpad touch as a gyro trigger
  • Allow gyro trigger to also be able to disable gyro rather than enable gyro. This enables proper ratcheting support
  • Changed gyro mouse routine significantly
  • Fixed data reading from gyro
  • Fixed a problem with actions not working after recording a macro
  • Changed analog stick mouse routine to take fractions of a millisecond into account

 

Version 1.4.80

  • Changed thread affinity of x360Bus object. Decreases input lag and improves responsiveness of the entire application

 

Version 1.4.79

  • Fixed microphone device volume detection when using official Sony dongle
  • Changed one clause regarding Quick Charge check. JIT apparently favors one form over another

 

Version 1.4.78

  • Fixed mouse distance offset for negative stick axes

 

Version 1.4.77

  • Fixed updater program to strip out final newline from version file in all circumstances
  • Fixed event handler related bug with the advanced color dialog
  • Removed delay from hotplug routine due to Quick Charge change. Simplified routine
  • Changed mouse distance offset for analog sticks to take stick direction into account for each axis
  • Changed location of Quick Charge routine

 

Version 1.4.76

  • Fixed Quick Charge regression

 

Version 1.4.75

  • Added output curve options. The old curve option affects input coordinates which alters other functionality like the dead zone. The output curve options will mainly help for KB+M emulation.
  • Now USB device is grabbed by the application when using BT and charging. This should ensure that no second controller will be seen by other applications while charging a controller.
  • Changed to allow multi-action button functionality to work with touchpad regions
  • Changed to ensure that tray icon text is updated more often. Only update underlying strings as necessary
  • Changed to use Queue while calculating latency instead of List. Much more efficient and reduces input lag considerably
  • Changed when Sleep is performed for device removal routine
  • Changed exclusive mode routine to use SpinWait instead of Sleep

 

Version 1.4.74

  • Fixed problem with Launch Program with Profile option launching a process twice when a new Auto Profile is activated
  • Fixed problem with some control identifiers that are used for controller readout in Options form
  • Added a timeout routine for BT connections to overcome disconnecting a controller by holding the PS button
  • Changed mouse event output to trim mouse distance remainders
  • Added an initial mouse offset for LS and RS mouse actions. Smooths out the low end
  • Changed mouse actions for LS and RS. The output mouse speed now takes poll time into account. The set mouse speed will be consistent across all supported controller connections
  • Moved lightbar updating routine after firing emulation events
  • Edited lightbar dimming on idle disconnect

 

Version 1.4.73

  • Change so the serial number associated with the Sony dongle changes when a controller is synced or disconnected
  • Fixed multi-action button so multiple multi-action button bindings work

 

Version 1.4.72

  • Fixed index out of bounds error when resetting profile values

 

Version 1.4.71

  • Fixed issue with improper XInput index values being used when a controller hotplug event is performed
  • Make sure to reset old profile values before attempting to parse a profile. Needed to ensure that old values are not being used
  • Changed “Launch Program with Profile” functionality
  • Added Bluetooth poll rate changing
  • Changed to use synchronous versions of FileStream methods instead of async Task versions. Reduced CPU load
  • Lots of minor optimizations that have reduced input lag

 

Version 1.4.70

  • Fixed issue with XInput binding getting executed for an inactive control when bound to a keyboard key action
  • Added more debug messages around XInput device plugin and removal
  • Changed to not launch program with profile when DS4Windows first starts

 

Version 1.4.69

  • Fixed Share and Options button mappings
  • Changed timer usage in main form. GUI is more responsive as a result
  • Changed device removal code to add safeguards around device list
  • Changed how “Launch Program with Profile” works. First checks whether the program is already running before launching process. Process now launches with the executable directory as the working directory. Uses task to launch a process async during profile loading
  • Fixed multi-action button
  • Changed output report generation so microphone volume does not get muted. Microphone support now works when DS4 is connected to DS4 Wireless Adaptor

 

Version 1.4.68

  • Added max zone settings for LS, RS, L2 and R2. This can be a useful option for people with worn out controllers
  • Minor optimizations to speed up hover text and button image display on Options form
  • Change to not interface with Scp Virtual Bus after reading input reports when DInput Only mode is enabled for a profile
  • Fixed issue with USB unplugging on some configurations
  • Only read one touchpad packet when reading the current coordinates. Other touchpad packets aren’t needed and seem to contain irrelevant data
  • Changed Run At Startup panel to better reflect required permissions needed to enable Task mode
  • Fixed exclusive mode routine getting executed multiple times simultaneously. Should clear up problem with controllers becoming unresponsive sometimes
  • Output more log messages when starting program
  • Fixed Updater program

 

Version 1.4.67

  • Changed Quick Charge routine to hopefully work in more situations
  • Changed how hotplugging is performed
  • Fixed problem with rumble activating when opening the Options window
  • Fixed problem with ‘specified argument out of range’ error occurring when scanning for controllers
  • Changed event usage to update less GUI controls
  • Fixed problem parsing old profiles containing duplicate profile actions

 

Version 1.4.66

  • Fixed gyro mappings

 

Version 1.4.65

  • Patch updater application to work with new packaging structure
  • Revert back to old behavior for disconnecting Bluetooth controllers
  • Allow option for touchpad toggling to be disabled
  • Fixed axis to axis mapping issues
  • Perform fewer controller searches
  • Defer logging events to GUI thread

 

Version 1.4.64

  • Run some log methods async to allow input thread to continue to perform work rather than wait
  • Disable task option for Run at Startup when DS4Windows is running as a non-admin
  • Tweaked a couple of mapping methods to speed up executing axis mappings
  • Fixed issue with action extras, such as lightbar color change, not getting activated
  • Fixed some issues with button mapping such as touchpad to Xbox 360 button mapping
  • Fixed a couple of issues with null reference errors

 

Version 1.4.63

  • Fixed startup shortcut generation when using the Task startup option
  • Fixed issue when stop thread methods are called for a DS4Device object when the thread objects are still null
  • Fixed Quick Charge mode so that it works as intended
  • Alter interpretation of battery status
  • Make pulse at lightbar mode and pulse charging lightbar mode use set time intervals. No longer rely on a set gamepad poll count which would result in different intervals depending on the connection used

 

Version 1.4.62

  • Improve speed of DS4 control lookup used for special actions and KB+M emulation
  • Allow application to launch at startup using a task. This method allows DS4Windows to launch at startup as the administrator with no user intervention.
  • Use stick bearing when a stick is mapped to keyboard keys to determine which keys should be pressed. A 45 degree range is used to make an 8 direction stick
  • Have sticks mapped to keyboard keys or mouse actions honor dead zone settings assigned in a profile

 

Version 1.4.61

  • Many small optimizations to speed up action execution and button mapping translation
  • Have keyboard events use both virtual keys and scan codes by default. For now, the scan code option is still available to only send out keyboard key events using a scan code
  • Fix mouse mapping routine to include distance remainders. Removes artificial high dead zone for sticks bound to mouse actions
  • Change button mapping window to not assign an explicit action when assigning a DS4 button to the default X360 control except when flags are specified. This has the same effect as clicking the default button

 

Version 1.4.60

  • Tweaks to speed up mapping translation

 

Version 1.4.59

  • Fixed idle disconnect functionality for Sony dongle
  • Tweaks to speed up mapping translation

 

Version 1.4.58

  • Added initial support for Sony DS4 Wireless Adaptor
  • Allow disconnect from Controllers tab to work with DS4 Wireless Adaptor. Change was made thanks to aspalmer
  • Fixed issue with multiple special actions causing program crashes
  • Fixed various special action types
  • Small changes to improve performance for mapping translation

 

Version 1.4.57

  • Fix issue with actions not being executed
  • Minor action detection speed up

 

Version 1.4.56

  • Fixed deadzone interpretation after leaving the assigned deadzone
  • Added anti-deadzone settings for LS, RS, L2, and R2
  • Various changes to reduce lag
  • Added fix for disappearing audio problems when using DS4 wireless dongle. Changed added by Ondrej
  • Fixed an issue where the wrong action was being parsed. Change added by Yoni
  • Fixed issue with application hanging after unplugging a Bluetooth dongle
  • Updated image resources. Change provided by Carlos
  • Various changes to speed up action detection

 

Version 1.4.55

  • Fixed issue with disconnecting a USB controller causing the application to crash

 

Version 1.4.54

  • Change routines in order to further reduce input lag
  • Change controller reader and output routines to use async overlapped IO operations in most cases
  • Build using explicit platform targets instead of AnyCPU. For now, only an x64 build is being provided. That should cover a majority of users but releasing an x86 build can be done if requested.
  • Main GUI window has become more responsive

 

Version 1.4.53

  • Fix exclusive mode after Windows 10 update from around 2017-03-15
  • Introduce various changes to reduce input lag
  • Correct XInput axis scaling to output full stick range

 

Version 1.4.52

 

  • Added support for New DS4 Controller (thanks andersfischernielsen)
  • Fixed sensitivity for sticks, causing crashes when trying to edit a profile
  • Typo fixes (thanks josevill)
  • Updates to German, Polish, Nederlands and more translations

 

Version 1.4.5

  • Added support for the New DS4 USB Adapater (Thanks to boganhobo and Chamilsaan)
  • Implemented teokp’s amazing fix for hide ds4 not working on the anniversary update of Windows 10: when a controller fails to enter exclusive mode, DS4Windows will ask for admin privilages to fix the issue.
  • Now (near)unlimited Special Actions can be made from the previous limit of 50
  • Special Action Xbox Game DVR is now no longer limited to Windows 10, renamed multi action button: Assign a macro to single tap, double tap, and holding down a button
  • Added option for White DS4Windows Icon in the notification tray (While not merged from, thanks to tehmantra)
  • Added option to temporarily turn off DS4Windows when using a certain program (togglable in the Auto Profiles Tab) (Same case as above but thanks to dedChar to bring to light)
  • Fixed Options crashes in certain locales where decimal points are repesented with commas, such as German (Thanks to kiliansch)
  • Added/Updated translations for many languauges, now including Japanese, Slovenian, Hungarian, Greek, Finnish, Czech, Indonesian, and Ukrainian

 

Version 1.4.401

  • Fixes for inverting the sticks
  • Updated French, German, Russian, and Vietnamese translations, and added more credits

 

DS4Updater 1.1.401

  • Added backup method of updating should anything happen with github

 

Version 1.4.4

  • Revised shift modifier: each button/control has their own independent shift trigger instead of one universal one
  • Select an action window: this window now highlights what said control is currently set to.
  • Removed unused images, making the exe a meg smaller
  • Completely revised how the code for custom mapping works
  • Updated all translations, added partial Dutch/Nederlands Support

 

Version 1.4.321

  • Changed the Rainbow button to an actual button
  • For using the sixaxis as a mouse, changed none to Always on, also better movement for the gyro when the sensitivity is lowered
  • Updated Hebrew, Chinese (Traditional), Itilian, Chinese (Simplified)

 

Version 1.4.32

  • Added Sensitivity settings for both sticks, triggers, and the gyro
  • Fixed the select an action window popping up after closing the profile settings or in another tab
  • Fixed the lightbar button on the main tab being so long, along with some other random ui fixes
  • Fixed many issues with making a new profile
  • When using a custom color the light now fades out based on the current profile settings (ie. when the battery is low)
  • Added Hebrew and Vietnamese translations
  • Updated Chinese (T), Russian, German, Polish

 

DS4Updater 1.1.32

  • Fixes for when users want to skip downloading their native langauge

 

Version 1.4.31

  • Revised the Profile settings UI to fit all the settings on the screen.
  • Fixed not being able to have a negative scroll value for the touchpad
  • Less lag when opening/reopening profile settings
  • Added Arabic Translation (Thanks K.F), updated French, Polish, and Portuguese translations

 

Version 1.4.3

  • Complete rehaul of the profile settings, bigger workspace to edit controls, and all the settings are on the side now
  • Added option to change the lightbar color, regardless of the profile’s lightbar setting (useful for using one profile on the same controller). to change click the colored button beside edit in the main tab
  • Can now set the Gyro as an 1:1 absolute mouse, in this mode the mouse now moves as the controller is moved
  • Removed the experimental exclusive connection button if on the newest Windows 10 build (1511/TH2)
  • Finally updated all the translations and added some new ones (such as Chinese and Polish, the translations sheets have been merged to one so it’s easier for me to update

 

DS4Updater 1.1.3

  • Fixes

 

Version 1.4.27

  • (Windows 10) Thanks to another workaround found, it has been added to DS4Windows, there is a button on the main tab, to connect your controller exclusively, this will temporarily kill explorer (The taskbar) and bring it back once a controller is connected
  • Macros: When recording with a delay, you can now add rumble and changing the lightbar color during the macro, you can use the touchpad zones to add rumble or lightbar options. To change how much rumble happens or the lightbar color, just double click the item in the list

DS4Updater 1.1.27

  • Updates are now downloaded from Github
  • UI fixes, with clearer errors and “Open DS4” changed to say “Open DS4W”
  • If you choose to open DS4W after an update, DS4Windows will update the updater, so you won’t see the command prompt window if you choose this route.

 

Version 1.4.269

  • Fixed trying to edit actions with Xbox Game DVR
  • Fixed Hide DS4 crashing DS4Windows on 64-bit machines

 

Version 1.4.267

  • Fixes for adding programs to auto profiles

 

Version 1.4.266

  • Flash Lightbar when at high latency now has the option to choose what you decide is high latency
  • Show Notifications now has the option to only show warnings, such as when a controller cannot be grabbed exclusively
  • Speaking of bad news for Windows 10 users: Hide DS4 has now been disabled, until i can figure out why this is, it will be disabled, this means some games that rely on this may not work properly or at all, sorry about that
  • As for good news for Windows 10, did you know you can press Windows + G to open a game bar which can record games. For Windows 10 users, there’s a new special action: Xbox Game DVR. Pick a trigger (only one button) and tapping/holding/or double tapping does various things, such as start/stop recording, save an ongoing recording, take a screenshot (via the xbox app’s option or your own hotkey ie form steam), or just open the gamebar
  • Much of the code has been updated with c# 6.0
  • Added manifest so DS4Windows can notice Windows 10 and high DPIs, also reorganized files

 

Version 1.4.261

  • Fixed mouse movement by touchpad not working

 

Version 1.4.26

  • Updated German translation
  • Added Turkish translation (Thanks Lütfi)
  • When the battery is low and the controller is disconnected, The notification tell you to charge the controller, this notification also now shows the controller number instead of the mac address
  • While Double tapping to drag or left clicking the touchpad, you can use a second finger to drag the mouse cursor (ala Mac touchpads)
  • In Auto Profiles, you can now add a directory/folder of programs

 

Version 1.4.25

  • Added inverted deadzones to Left and Right Sticks, set the values to negative and pushing the stick past the red in the controller readout will make sure the output doesn’t pass the set limit
  • Fixed bug when trying to invert left and right stick with Shift modifier
  • Fixed “Fall back to” text in shift modifier
  • Added Romanian Translation (Thanks Vlad Giurgiu and Anonim)
  • Updated German (added thanks to Jan-Stefan Janetzky & An Op Turk[DedSec]), Russian, and French translations

 

Version 1.4.245

  • Fix settings tab text being blank after clicking controller/driver setup
  • Check if .Net 4.5 or higher is installed at the start.
  • Fix crash with certain macro
  • Option to disable flashing light when controller latency is over 10ms
  • Special Action Program: Added Arguments/Command Line and hold trigger for x seconds to launch program
  • Bug fixes

 

Version 1.4.242

  • Fix Download language pack’s checkbox being inverted
  • Fix lightbar being stuck on a color if the profile is switched while checking battery life
  • Fix a crash with when a new profiles not having the flash and charging set and then re-editing it.

 

Version 1.4.241

  • Fixed being unable to switch profiles when using certain language packs
  • Removed not yet implemented controls in options

 

Version 1.4.24

  • New Special Action: Check Battery life, choose to see the battery via a notification or via the lightbar with a gradient of your choice
  • Sixaxis tilting added to special action triggers
  • Added Special macros to be used by pressing the Load Presets button, selecting Cycle Programs allows you to hold the button to cycle through open programs, and edit the wait time to choose how long you hold the button down to go to the next program
  • Can now add additional recordings between macros, click in the list where you want to add
  • Can now delete actions in the macro by pressing delete
  • Fixed color by battery being inverted
  • Fixed bluetooth light being completely off when stopping/exiting DS4Windows
  • Updated translation sheets (new items highlighted in 3rd column in green for easier finding)

 

Version 1.4.231

  • Fixed charging light not saving (thanks tehmantra)
  • Truly finished Italian Translation

 

Version 1.4.23

  • Extended range needed for touchpad swipes actions to register
  • UI adjustments in profile settings, such as a color box for flashing color, alignment adjustments, and the Sixaxis reading dot staying in bounds of the box
  • Recording a macro for special actions now open up in a new window, allowing for ctrl+tab to be used
  • When controller’s latency passes 10ms, the log will show and the controller will flash red until the latency is under 10ms
  • Hovering over the mac address shows the latency of said controller, if it’s connected via bluetooth
  • Option to choose when at low battery for the light to flash or pulse
  • Much cleaner/neater hotkeys/about window
  • Option to download language packs if your PC is not set to an english language
  • Finished Italian Translations (Thanks again Giulio)
  • Finished German Translations (Thanks Ammonjak)
  • Updated Italian & Russian Translations
  • Reorganized the the code so all cs files are under the same project

DS4Updater 1.1.23

  • Support to skip downloading a language pack

 

Version 1.4.222

  • Added Press/Toggle Key to Special Actions, you can hold a trigger to hold a key or toggle a key with one set of buttons, and untoggle it by pressing or releasing another set of buttons
  • Added Disconnect BT to Special Actions, PS+Options to d/c is now added to Special actions and can be enabled for each profile. You can now set Disconnect BT to any control(s) and how long you need to hold the control(s) to take affect
  • Added Partial German Translation (Thanks Michél)
  • Added 95% Finished Russian Translation (Thanks overclockers.ru members: KoNoRIMCI & Sr_psycho)
  • Added Partial Italian Translation (Thanks Giulio)
  • Updates to the translations sheets, they should now have every bit of text in DS4Windows, minus the controls of the controller
  • English Spelling fixes
  • Main/Starting tab only shows info for connected controllers, and context menu only shows options for connected controllers.
  • Mouse wheel scrolling with analog sticks/triggers/gyro, the mouse now scrolls smoothly
  • Slightly reworked analog mouse movement + mouse acceleration (not as janky anymore)
  • When starting DS4Windows, if no controllers are connected, DS4Windows defaults to the profile tab
  • Certain log warnings (Like unable to get controller exclusively) shows up in red
  • Easter egg: try pressing a few buttons in sequence while in the log tab
  • Fixed Start Profile with TP off being unchecked next time a profile is opened
  • Other minor Bug Fixes, such as clearing the log then moving to a new tab crashing DS4W

DS4Updater 1.1.22

  • Use of .ds4w files to tell what changes need to happen in DS4Windows, when updating the updater will delete old files

 

Version 1.4.212

  • Added Version Portuguese (Brazil) Translation
  • Fixed crash when creating a new profile
  • Minor UI fixes

 

Version 1.4.21

  • Added Presets for Dpad, Left and Right Sticks, Face Buttons, Sixaxis, and Touchpad Swipes; right click on those controls to select a preset)
  • Fully fixed Scan code, now will work fine in old DirectX games
  • Macros for Special Actions can now have scan code enabled (if you didn’t know you can enable scan code on macros for single controls as well, even after you’ve configured the macro)
  • Control list now shows if scan code is enabled

 

Version 1.4.201

  • Fixed Scan code

 

Version 1.4.2

  • Special Actions: press a control or a set of controls to perform a macro, launch a program/file, or load a different profile. Create new actions in profile options, and check which ones you want the selected profile to use.
  • Set an analog curve for the left and right stick, see the changes live in the controller readout
  • Option to set the close button to minimize DS4Windows, and truly close it by the notification icon
  • Added Spanish Translations (added credits to the translations sheets so users can be properly thanked if wanted to be)
  • Sticks Deadzone reworked from being a square to radial as the controller readout actually shows
  • Fix pressing keyboard not setting an action for controls
  • Fix Tilts and Swipes controls not showing text in the control list
  • Fix program crashing when uses x360 macros with shift controls
  • Fix for trying to edit a profile from the context menu after never restoring DS4Windows form start.
  • Fix for settings low flash color
  • Now running with startup will always start minimized, even if start minimized is unchecked

DS4Updater 1.1.2

  • If a language pack is available for your language but not your country’s variation of it, the default language pack is downloaded instead

 

Version 1.4.161

  • By default Xinput ports 1-4 are used, this can be changed back in settings to 11-14 and anything in between
  • Better handling of moving appdata folder to %Appdata%/DS4Windows

 

Version 1.4.16

  • Extra actions for controls, set rumble, change lightbar and flash, and mouse sensitivity while holding a controls
  • Regardless of where DS4Windows is first placed, the driver will always install in DS4Windows’ directory
  • Appdata location is now named “DS4Windows”. If your profiles are saved in appdata “%Appdata%/DS4Tool” they will be moved automatically to “%Appdata%/DS4Windows”, assuming access to the files are available.

DS4Updater 1.1.16

  • Icon Update

 

Version 1.4.158

  • Fixed random mouse dancing in some games
  • When adding trigger actions to the left or right stick, fixed L2/R2 not working 100% of the time
  • Fixed profile for controllers not being changeable if usb was plugged in at start

 

Version 1.4.157

  • Experimental option in settings: Quick Charge controller by turning off BT when plugged via USB
  • Settings a deadzone of .10+ to the sticks or higher now affects the mouse movement as well
  • Use DS4 for Mapping checkbox now remembers how it was last set
  • Fix for starting minimized showing up in task manager and alt+tab, this also more reliably starts minimized

 

Version 1.4.155/156

  • Significant CPU usage decrease by reworking how single instances work, on a mobile i7 for example with a single controller connected usage went from 4-6% to .5-1.5%. With no controllers connected the usage went from 2.5-4.5% to 0%!
  • As mentioned before, single instances has been reworked, so trying to relaunch DS4W more reliably opens the previous instance
  • Fixed Shift modifier not working if main controls were not modified
  • Fixed Tilt Left for Shift modifier
  • Fixed default text of shift controls
  • Remove touchpad movement notification when swipe for controls is enabled
  • Can test the rumble motors separately via Heavy and Light
  • Truly implemented Flush HID (I think)
  • Slight change in profiles, when loading profiles in for the first time in this new version, there may be a slight delay
  • Updated French Translations
  • Removed mouse moving as an option for touch swipes controls, as they weren’t implemented nor have a purpose to be

DS4Updater 1.1.155

  • Don’t let the jump fool you, this update just keeps the numbers closer together. This update only contains general fixes

 

Version 1.4.15

  • Use Touchpad swipes for controls and disable it for mouse: swipe in 4 directions to use buttons, marcos, and even use the touchpad as an analog stick (Relive the great moments of playing an FPS on a touchscreen)
  • Mapping Stick directions to triggers now work properly

 

Version 1.4.1 [Mac(a)roni]

  • Record 360 controls using your DualShock 4 (PS: any old macros using hold control while running macro may be set to a new control when loaded, please re save your macro)
  • Macro recording now happens in the select an action window instead of a separate one
  • Save and Load Macro presets to use any time
  • When recording with delays (recommend for X360 macros) you can double click on delays to edit the time
  • When recording a new macro, previously saved Macros for that control are shown
  • Many minor Macro fixes
  • Giving major updates useless names that will never be seen outside of this changelog
  • Icon Update
  • Fixed shift modifier lightbar settings blocked off
  • High DPI support (144+)
  • Fixed various bugs at 120 DPI and higher
  • When installing the ds4 driver, Actually checks if the driver got installed instead of always saying install complete

 

Version 1.4.0.872

  • Really fixed the touchpad clicking this time
  • Small bug fix for first time users

 

Version 1.4.0.87

  • Fixed Touchpad still mouse clicking when set to a key
  • For first time users: The ds4 driver (virtual bus) will silently and automatically install after clicking step one in the setup window

DS4Updater 1.4.0.87

  • For multilingual users: if your language has translations for DS4W (currently only French) DS4Updater will also download the language pack as well.

 

Version 1.4.0.85

  • Many fixes for shift modifier

Version 1.4.0.81

  • Fix crash when disconnecting by PS+Options

 

Version 1.4.0.8

  • Rework x360 mapping similarly to v1.4.0.75, however this time testing has been done and truly works :). With this update you can map sticks to multiple things and swap the actions of two buttons/sticks/triggers
  • Remapping touchpad clicks improvements

 

Version 1.4.0.761

  • Revert back to old control style, will test the new control mapping later

 

Version 1.4.0.76

  • When using default controls, fix no controls working
  • When using custom controls, fix sticks not working
  • Hopefully removed DS4W from alt+tab menu when minimized

 

Version 1.4.0.75

  • Reworked x360 mapping again, better support for mapping multiple buttons to the same thing + swapping buttons
  • Made the exclusive warning last message when connecting a controller that can’t get exclusive control to make it more noticeable
  • Hovering over the log message at the bottom shows the full message
  • Default colors provided when a new profile is made for certain controls

 

Version 1.4.0.71

  • Rumble motors swapped to be correct
  • Bug fixes, including crashes and a small windows when minimized on Win7

 

Version 1.4.0.7

  • Improved mapping support: can better handle the switching of controls: ie triangle and circle/dpad and left stick/L1+R1 and L2+R2. If you have a profile with swap buttons, they may not work until you open the profile in settings and resave.
  • Servers moved to ds4winsdows.com
  • Remove DS4Windows from Alt+tab menu if minimized to tray (thanks youturnjason)
  • Basic support for command line arguments (right now just “-stop” is supported: starts program up without starting the ds4)

 

DS4Updater 1.1.0.7:

  • Servers moved to ds4windows.com
  • Bug fix for failing to fully close when cancelling an install

 

Version 1.4.0.61

  • Bug fix for dinput mode making multiple 360 controllers

 

Version 1.4.0.6

  • Profile option to turn off touchpad at start
  • Better disabling and re-enabling of the virtual x360 for dinput only mode
  • Bottom text of DS4Windows now hosts the description of items in profile options instead of a floating tooltip
  • If first startup of DS4Windows/no profiles are found, a default profile is made
  • Extra tip in driver window
  • Update to french translations (however the translations require another update now)

 

Version 1.4.0.56

  • Lightbar turns off when pressing Stop while wired

 

Version 1.4.0.55

  • Added start/stop to notification icon
  • Right click on the status icon in the main window to disconnect the controller (BT only)
  • Rumble testing actually varies as the boost value changes (you won’t notice a change with testing past 100%)
  • Better lightbar flashing, color has a better chance of changing back after not flashing etc.
  • Moved source code to Github, the link is on the about page of DS4Windows and my sig on pcsx2.net
  • Special feature (beta) for those who have a profile for Distance and use the controller in X360 mode.

 

Version 1.4.0.5

  • Option to only use Dinput, turn off X360 input and only use the DS4’s native input: useful for games that can use the ds4 as is without 360 input needed, but still want to use the lightbar and touchpad.
  • Added custom color when flashing, just click on the “Flash at” text
  • lightbar turns off fully when going into sleep mode
  • PS+touchpad also disables scrolling now
  • Update to french translations
  • Fixes to text

 

Version 1.4.0.32

  • Separated Translation on Save where dialog box
  • Fix updating when settings are in appdata
  • shortened notification icon’s popup text to avoid crashes

 

Version 1.4.0.3

  • Even better localization support
  • 95% finished French Translation (I forgot to update the translations page so a few lines are missing, the French page has been updated, but the rest still need to be updated) Thanks to DirtyShady and Neur0Nerd for the Translations

 

Version 1.4.0.22

  • Fix for DS4 failing to connect for some people

 

Version 1.4.0.2

  • Option to start a program when loading a (auto-)profile/connecting a controller
  • Reworked mouse movement with analog sticks, still needs more fine tuning
  • Option to add a different color for when in shift modifier mode
  • Added default to regular controller mapping, which goes back to it’s original 360 mapped action if any
  • Big fixes: such as controller being disconnected when hiding the DS4 with D/C when stopping is on
  • Spelling fixes
  • DS4Updater 1.1.0.2: spelling fixes

 

Version 1.4.0.11

  • Fix for select an action window popping up when connecting a controller in some circumstances
  • DS4Updater: quicker startup, will only replace updater if the version is actually newer, smaller size

 

Version 1.4.0.1

  • Added Unbound to shift modifier
  • Reworked Settings tab layout so it looks less cluttered
  • Check Drivers at start is back, this way actually checks if the VBus driver is installed and needs to be if not. It was disabled because certain user accounts (like guests) couldn’t start the tool up, that has been fixed as well

 

Version 14/1.4

  • Versions will now be based on the file version, this way DS4Windows can be numbered using 4 parts (ie 1.4.11.2), this also allows the version number not to go so high so quickly
  • In Profile Settings::
    • Shift modifier: Hold an action to use another set of controls, if nothing is set to the shifted control, in falls back to the default action
    • IView input of controls, see exactly when a deadzone is passed and check the input delay for controllers (special thanks to jhebbel), click the on sixaxis panel
    • Click the Empty text on in the lightbar box to copy the lightbar color from full to empty.
    • While opened, option to keep the window size after closing the profile’s settings
    • Old profiles are automatically upgraded if it’s missing new settings, such as how colors are now saved, sixaxis deadzones, and shift controls
    • Other UI changes, such as flipped touchpad and other settings boxes
  • Fix for when clicking the semicolon in the select an action screen
  • Fix assigning Sixaxis action to a key
  • minor UI changes and bug fixes, such as auto resize of the log listview
  • DS4Updater: Also now works for the new numbering system, can read the version number right from the exe instead of in profiles.xml, UI additions to better notify users of errors, Bug fixes for non-portable users

 

Version 10.651

  • Fix for loading older profiles before 10.65
  • DS4Updater: update.zip remains if couldn’t unzip the files for whatever reason

 

Version 10.65

  • Sixaxis Deadzones can be reconfigured: 0.25+ recommended to lay down the controller without movement
  • Mouse Acceleration option
  • Rumble settings now more simple
  • Better detection of where profiles and settings are stored, if you use jheb’s tool and this as a portable one, it better detects which settings are which.
  • Smaller filesize for profiles.
  • Reorder of tabs
    • DS4Updater: Support for other localizations where decimals use “,” instead of “.”
    • Bug fixes: for when DS4Windows is still running while updating, when there is no internet connection/update doesn’t exist, when profiles.xml doesn’t exist.

 

Version 10.6

  • Sixaxis tilts can now mapped, map them to the analog sticks, buttons, keyboards, and even macros
  • Better Support of multiple action being mapped to analog sticks
  • Fixed crash with an empty macro
  • UI Fixes

 

Version 10.55

  • Dimming by idle timeout synced with color/dim by Battery % setting
  • Swipe to cycle through profiles can now be disabled.

 

Version 10.52

  • Input by DS4 in profile settings now turns off when off that tab
  • Able to use edit button to open that profile settings, even when profile settings are  already open open.

 

Version 10.51

  • Fix for BT disconnecting while DS4Windows is running, and Disconnect BT when stopping is checked.

 

Version 10.5

  • Support for Left/Right Shift, Control, Alt in macros
  • Better support of Tab and media keys (note: media keys can not be held between actions)
  • Option to disconnect controller from BT if stopping/closing DS4Windows
  • Spelling fixes
  • Start of support for other languages, starting with very barebones support for Spanish, If anyone can help with translations of your language, please PM me here or email me here with translations for as much text as you can. Here is a link to all the text that appears in DS4Windows in English

 

Version 10.45

  • UI redesign for 360 controls in mapping window
  • Added manual mouse click buttons for 4th and 5th mouse button
  • Can also hold an X360 action while a macro is running
  • Changelog link in help window, also fixes in tips
  • Macro list scrolls down as you record strokes
  • DS4Updater: If settings are in appdata, the update zip actually unzips

 

Version 10.4

  • Truer Macro support: Record keystrokes and mouse clicks by the press and release, repeat a macro while button is held down or play once, option to record the delay between actions. NOTE: Recommended that you re-record macros, however old macros should work, however it hasn’t been tested)
  • Mouse movement works a bit better
  • Fix for startup shortcut disappearing/unchecking
  • When programs that are used in auto-profiles are uninstalled, they are removed from the auto profile list
  • Support for Scan code keys in macros

 

Version 10.361

  • Truly faster startup
  • Updater has been fixed

 

Version 10.36

  • Faster startup
  • Fix for crashes

 

Version 10.35

  • Fix at Windows startup showing Welcome window
  • Startup now uses a shortcut in the start menu startup folder instead of registry. Registry key now removed
  • Fix duplicates of programs showing up when batch adding programs
  • Clicking the X button in the main windows will close profile settings instead of the whole program if profile settings are open. Otherwise the program shuts down regularly
  • UI Fixes

 

Version 10.3

  • First time runs of DS4Windows ask where you want to save settings, Will automatically pick the settings location based one the two location profiles.xml is in (App folder or Appdata). If settings are in both, it will ask you to pick where you want to save, and attempt to delete the other settings. If settings are in the app folder and needs UAC to write, There is an option to copy over the files to appdata.
  • Disable touchpad mouse movement again by holding PS and touching the touchpad (instead of clicking)

 

Version 10.26

  • FIx for crash when DS4Windows and DS4Updater is in Program files on a drive that is not C

 

Version 10.25

  • Fix for Buttons inputting
  • DS4Updater: Fix for reading version

 

Version 10.2

  • Rest of DS4Windows has been upped to .NET 4.5 (If you have .net 4/already can run DS4Windows, this won’t affect you), thanks to this update, you can now…
  • Add delay to macros from one millisecond to 60 seconds, macros with delays only run once until pressed again. Without delays, the macro can be repeated while held down.
  • Profiles and settings are now back inside the application folder to help portability. It will remain in appdata as previous versions if DS4Windows is in a admin folder, I may try to add a setting for location saving.
  • Import profile option will automatically go to the appdata profile folder, auto profiles and settings will automatically copy over.
  • Option to delete the appdata folder if not in use in the settings tab, this way it helps with cleanup.
  • Another fix for auto profiles startup bug
  • Better reading of autoprofile program path names
  • Now only one instance of DS4Windows is possible, if another DS4Tool or DS4Windows that is not this version is started, this DS4Windows comes back into focus.
  • UI fixes

 

Version 10

  • DS4Windows no longer crashes if no source games are installed (ie shinra’s crash)
  • Auto profile has more ways to add programs, add origin games if installed, and start menu programs
  • You can also add by shortcuts (.lnk)
  • Auto Profiles now work by the foreground program
  • DS4Windows no longer checks for driver at start, will help speed up DS4’s connection when starting up with windows.
  • Welcome to DS4Windows Window is now an option in the Settings Tab, will automatically show up if mine or DSDCS was never started before.
  • Touchpad scrolling reworked via electrobrains newest build
  • Idle Timeout has a checkbox, also small UI fixes

 

Version 9.9

  • Auto Profiles are live(beta) – Automatically load profiles when starting up certain programs or games.
  • DS4Tool.exe merged with it’s dll’s, now named DS4Windows.exe
  • Settings tab – Hide DS4, Run at start up, Change update rate or disable it all together, turn off notifications and more there
  •  there
  • When battery is low and starts flashing, it will not continue to flash when charging
  • Possible fix for memory leak
  • Small UI changes such as not being able to edit the text in combo boxes
  • Spelling fixes
  • Updater: Now doesn’t need admin rights to run, DS4Windows will try to start the updater with admin permissions if DS4Windows is located in an admin folder like program files, also renamed DS4Updater.exe. The old updater will automatically be deleted

 

Version 9.33

  • Better support for higher DPI users

 

Version 9.321

  • Fix for those using text at 125%

 

Version 9.32

  • Small fix for swapping profiles with touchpad

 

Version 9.31

  • Fix for profile name when making a new profile

 

Version 9.3

  • Option to change what happens to the lightbar when charging: options are normal, fade in and out, rainbow, and it’s own color
  • Settings for saving,renaming, and cancelling the save of a profile while in profile settings moved into the toolbar
  • Switch profiles now by a 2 finger swipe left or right on touchpad
  • When shutting down, the controller light turns fully off

 

Version 9.2

  • Context menu for profile list, assign profiles from there and more with a right click
  • Can now import by dragging profiles(.xml’s) directly into DS4Windows
  • Added back default light color when stopping/closing
  • Escape or Enter can now close the help window
  • small optimizations

 

Version 9.12

  • Bug fixes, such as default touchpad mouse clicking works again

 

Version 9.111

  • Bug fix when changing profiles with touchpad

 

Version 9.11

  • Bug fix for checking updates in Help

 

Version 9.1

  • Setting to adjust when battery flash begins
  • Import profiles moved to profiles toolbar
  • You can now export Profiles
  • Tool can get even smaller now, as checkboxes and start/stop button are on same line
  • Log clear button moved to log tab
  • UI fixes in About
  • Use Enter or escape to save or cancel profiles respectively in options or when duplicating profile
  • Use Enter, Delete or Ctrl+C in the profile list to edit, delete, or duplicate a profile respectively

 

Version 9

  • Revamped UIOptions are now in the same window as the main tool, Can edit profiles without it being selected, Organized Info of controllers, minimum size changes by number of controllers connected
  • You can now duplicate profiles
  • Cycle through profiles by holding L1+R1 and swiping left and right on the touchpad
  • Check for updates options in Hotkeys/About
  • Single click notification icon to open tool, middle mouse it to close DS4Windows
  • Small mouse movements with analog fixes
  • Mouse movement with triggers fixed
  • Alpha of Auto Profiles implemented, not yet able to use
  • Minor fixes

 

Version 8.2

  • Mouse movement reworked, pushing on the sticks works by a curve like xpadder
  • PS+Options no longer turns off the controller off if it’s charging

 

Version 8.1

  • Touchpad macros now work without also clicking
  • Mouse Buttons are now toggleable

 

Version 8

  • More mapping options!
    • Toggle option: Press a button once and the key will be held down until the button is pressed again
    • Macro option: Assign multiple keys or mouse buttons to a single button! Just check Macro and select the buttons in the order you want them to be pressed (maximum 5)
  • Light bar even closer to default bluetooth when stopping
  • When disconnecting Controller via PS button and Options, if PS is assigned to a key or keys, the key is let go.
  • If Idle timeout is on, the light bar idles fades when fully charged (but doesn’t disconnect)
  • DS4 Icon always shows, notifications only at startup, and when the main window is unfocused.
  • In options the tap, scroll, and slide are unchecked at start if any of them were turned off before
  • For always rainbow mode, the cycle goes in reverse when charging, remains dim if checked.

 

Version 7.8

  • Mouse Sensitivity now works with analog sticks as well as buttons and triggers
  • Option for using the controller input to change it’s mapping in options
  • Fix for lightbar not remembering the color
  • Disable edit/delete buttons until controllers finish connecting

 

Version 7.7

  • “Connecting…” issue fixed again, I think…
  • Pushing the Right stick down also works correctly now.
  • In options,when changing values on the light bar sliders, a tooltip shows up to the side showing the number.
  • The lightbar now only fades out when idle when half the idle time has passed.

 

Version 7.6

  • Options Redesign (Yes again), giving each control option a little more breathing room

 

Version 7.42

  • Hopefully fixed “Connecting…” issue (Thanks jheb)
  • Small ui/gui improvements:
    • Start with windows always visible
    • Tooltip on the rainbow icon
    • Light Bar shows the default light blue when stopping/closing ds4windows. Light Bar also doesn’t go weird when charging and idle timeout is on.

 

Version 7.412

  • Small optimizations to lightbar rainbow and Keyboard strokes

 

Version 7.41

  • Lightbar Idle fade now works for all regions, not just Eastern Time

 

Version 7.4

  • When using Idle timeout, The lightbar now will fade as the controller sits idle.
  • Added a decimal place to idle timeout so you can use half/etc. minutes now.
  • Proper Display of percentages of dead-zones when reentering options

 

Version 7.315

  • Delete button actually deletes profiles

 

Version 7.31

  • Small bug fixes for analog sticks mapping

 

Version 7.3

  • Added analog stick deadzone, truly added trigger dead zones

 

Version 7.1

  • Added Start with windows option
  • DS4Windows now only checks for updates hourly (but only when running), updater will still check immediately when started.
  • Small UI changes

 

Version 7.01

If Virtual Bus is installed via DS4Windows, there is an uninstall link in about.

 

Version 7

  • This build adds a few more devs to the about page,
  • If you don’t have the Virtual Bus Driver installed, DS4Windows will walk you through installing the driver. This makes it easier to distribute a single zip and not have multiple exe’s in it.
  • If updater.exe is deleted/doesn’t exist it will be re downloaded.

 

Version 6.95

  • You can now press a button/axis/touchpad in options to change that control when in options.
  • The icon in the notification area also shows not only when minimized, but when the main window unfocused.
  • Fixed bug where when the tool is shrunken down, the last message of log didn’t show.

 

Version 6.9

  • DS4Tool: Version number saved to Profiles.xml so Updater can access it
  • Updater: Can now check for latest version by comparing current via Profiles.xml and new. Updater can also update itself.

 

Version 6.8

  • Profiles and settings are now saved in appdata, you can import your profiles from the old folder or any place

 

Version 6.6:

    • Update checker now moved to AppData, this allows the program to be in Program files or other folders with elevated need privileges.
  • P.S. there is a new Updater.exe (Updater NEW.exe) please rename it to “Updater.exe” and replace with old one

 

Version 6.5:

  • Auto update is now live

 

Version 6:

  • Revamped Options

 

DS4Windows