DS4Windows -- yet another DualShock 4 driver! (No longer under active development)
#1
This version is no longer actively maintained! Please switch to one of the two actively-developed projects derived from this if you are interested in additional functionality. I am keeping this thread here for historical reference.

This is an offshoot of the project found here, derived from the 1.3 RC3 version:
http://forums.pcsx2.net/Thread-DS4-To-XInput-Wrapper

It will work over USB and/or Bluetooth, and pairing of the DS4 over Bluetooth is something you should do before moving on with the installation. If it is paired, you will see a Wireless Controller device show up, and the light bar will be full-on. Please see the previously-mentioned thread for more installation details, as nothing has changed between DS4Tool and DS4Windows in that regard.

Before installing this software, you must install the official Microsoft Xbox 360 Accessories Software:
http://www.microsoft.com/hardware/en-us/...ws#support
as well as Scarlet.Crush's Xinput virtual bus driver found here; you should NOT install the Bluetooth driver replacement to use DS4Windows:
http://forums.pcsx2.net/Thread-XInput-Wr...Controller

I've decided to run development on a charity/bounty basis: I'm going to work on what I feel like working on, in general, because I'd like to see it happen or because I think other people would benefit greatly. However, if you feel like influencing direction of development and want me to experiment with new features, feel free to do so through the bounty system! I am currently in a bad financial situation and more than happy for whatever donations and bounties the community might offer. I could also use a second DualShock 4 for testing multiple controller support; it doesn't even have to be fully-intact -- one with broken thumbpads, or some switches in need of repair, for example, would still work just as well.
https://www.paypal.com/cgi-bin/webscr?cm...EWBPD4NWWC

The most recent changes are listed here, from newest to oldest. You can either download the source and compile it yourself or download the binaries for a specific build. Please try the latest build first before all other builds, especially when reporting bugs!
https://code.google.com/r/brianfundakows...t?name=1.3

Release builds (binaries) will be available both in this thread and at the following repositories:
https://www.dropbox.com/sh/wr7wacr4g7ia7cu/D-vAnn4MnS
https://drive.google.com/folderview?id=0...sp=sharing

** 2014-06-05.0: DS4Windows 1.0 Final
* Refrain from using integer-truncating calculations as input into the mouse wheel implementation, smoothing out the two-finger scrolling behavior.
* Add toggle in the touchpad options for haptic feedback from Button Mode, so you can disable the rumble.
* Make the charge animation its own toggle, and not just enabled always when charge level color indication is enabled.
* Fix a number of the options to not take effect immediately unless Real-Time Changes is checked. Several took effect without having to click Set or Save.
** 2014-04-27.1: DS4Windows 1.0 Beta 10
* Now always using devices 11-14 instead of 1-4, supplanting Beta 9 which had a major bug.
* Support mapping down multiple DS4 buttons as input to a single virtual X360 button.
** 2014-04-27.0: DS4Windows 1.0 Beta 9
* Beta 9 ONLY works for hot-plugging! Starting with controllers connected or hitting Start with controllers connected would not work at all! Please do not download this release, wait for Beta 10.
* Changed from using the same virtual Xinput device 1-4 as the Scarlet.Crush DualShock driver to using devices 11-14. There is now no conflict. The Xinput controller number does not correspond with the virtual Xinput device number unless you are only using DS4Windows and not using actual X360 controllers or the SCP DS3 controllers.
** 2014-04-17.0: DS4Windows 1.0 Beta 8
* Permit remappings related to the Share and Options buttons in Button Mode. It was possible to try to configure it before, but it would cause major mode switching issues.
* Continue the never-ending quest to resolve connection and disconnection issues: forgive errors in output to the DS4 and keep trying, because disconnection is handled in the input from DS4 path; allow 30 seconds for the "Connecting..." state; disconnect from Bluetooth devices after 3 seconds of no input received from the DS4 (many Bluetooth adapters don't notice disconnection when you shut off the DS4 manually by holding PS.)
** 2014-04-16.0: DS4Windows 1.0 Beta 7
* Resolve for at least one person a disconnect/reconnect issue on Windows 7 by waiting a 1/4 second settle time after an Xinput device gets removed.
* Add a drop-down to select the initial mode for touchpad usage, replacing the checkbox that only allowed you to choose Disabled or Standard Mode.
** 2014-04-14.0: DS4Windows 1.0 Beta 6
* Attempt to resolve the issues where people would only get "Connecting..." or a controller that disconnected immediately after connecting.
* Display the controller connection and battery charge status in the notification area icon tooltip.
* Make it a choice to either do Fall-Through behavior in Button Mode, the default, or actually select Unbound as an option for each button to essentially remove it while in button lock. Note that Button Mode is still the only mode that lets you remap the touchpad gestures to Xinput controls, but there is vastly more capability in every mode than there was in the DS4Tool 1.2 and 1.3RC series.
* Automatically close Options windows as necessary (controller removal or parent Options window closing the custom mapping window(s)). We also now only allow one of each window per controller.
** 2014-04-13.0: DS4Windows 1.0 Beta 5
* Majorly overhaul mapping support. Button Mode now has its own separate mapping configuration for when your finger is on the touchpad or Button Lock is active. Only mapped buttons/axes are filtered out. You may use it to also map the left/right/upper portion of the touchpad onto Xinput buttons.
* Standard and Drag touchpad modes now allow you to rebind the touchpad gestures to mouse clicks that are not the default.
** 2014-04-08.0: DS4Windows 1.0 Beta 4
* Refine touchpad jitter removal algorithm to remove the DualShock 4's natural cursor "jump" reliably under more circumstances.
** 2014-04-02.1: DS4Windows 1.0 Beta 3
* Allow any of the touchpad areas in Button Mode to be mapped to any of the mouse buttons. The other Modes do not support this currently and will fall back to their default mouse button mappings in that case.
** 2014-04-02.0: DS4Windows 1.0 Beta 2
* Add setting to swap the rumble mapping, matching left/right rather than heavy/soft. The rumbler positions on the X360 and DS4 controllers are reversed and the normal mapping gets the heavy/soft aspect right instead of the left/right.
* Support idle disconnection timeout of the controllers.
** 2014-03-31.0: DS4Windows 1.0 Beta
* This version has had the new Options GUI merged in thanks to Jays2Kings! When in Button Mode, the touchpad configuration displays the left and right side bindings for the touchpad push gesture.
** 2014-03-30.0: DS4Windows 1.0 Alpha 2
* Mouse motion worked very poorly for the default setting of 100 Touch sensitivity, but well for anything else. This release makes the 1:1 mapping (default 100 setting) work again.
** 2014-03-28.0: DS4Windows 1.0 Alpha
* Started version over at 1.0; this is an Alpha because there are known bugs. NOTE: Custom mappings may require a "Load" upon start-up to take effect.
* Completely redo how jitter compensation works to prevent the jumpy cursor when moving directions on the touchpad with a finger down.
* Smooth out cursor movement like mouse wheel movement was smoothed out. We account for remainders now, and the cursor movement will be faster and more precise.
* Label the touchpad mappings better; Button Mode changes their meaning, as well, which is now indicated.
** 2014-03-24.1
* Add back the touchUnchanged event for the mouse modes so that Button Mode is back to working as before the DS4Tool 1.3RCx changes.
** 2014-03-24.0
* Make touchpad mouse wheel scrolling smoother and faster by not losing parts of the scroll that are less than a single unit (pixel?)
* Make sure that multiple controllers can be used for touchpad input without interference.
** 2014-03-23.0
* Fix the problem where the main window would become invisible after you minimize to the tray icon and try to maximize again.
** 2014-03-22.0
* In the controller's touchpad-Button Mouse Mode, ignore ambiguous pushes entirely rather than mapping them to the upper-edge-push.
* Notify the user when a device is not able to open in exclusive mode, and open it in shared mode as before.
* Wait 200ms before allowing a device to be found automatically after a device is removed to prevent 'resurrection.'
* Connect to Bluetooth rather than USB when both are connected to the host machine; then a USB disconnection only stops charging.
* Make sure to not look at HID input reports of the wrong format.
* Eliminate the zombie threads that crept in upon splitting apart the input and output and making them asynchronous. (weird extra connect/disconnect notifications)
** 2014-03-19.2
* Battery charge levels seem to be 0-11 (so far, surveying two DS4s), so treat 11 the same as 10, or "full."
* Make the light bar slow flash pattern indication of power level work again, after the changes from the 2014-03-18.1 release and now.
** 2014-03-19.1
* Fix dual-input of X360 buttons/D-pad when in Button Mode and the key presses are otherwise already consumed as mouse buttons.
** 2014-03-19.0
* Make the non-touched touchpad push gesture visible to the touchpad's Button Mode so what defaults to "middle-click" still works across modes.
* Fix the battery indicators to be sensible: indicate charging or draining and fully-charged separately, along with the rough percentage estimate that the DS4 firmware gives.
* Change the charging animation to conserve battery power, thus actually charging the controller much faster because the light bar consumes far more power than the actual control sensors.
** 2014-03-18.1
* Do not lie about the power subsystem telemetry octet (inputReport[30]); we don't actually know quite what it does, yet. Just report the full value. This will change what is displayed on the line of text that indicates the charge level in the GUI as well as the exact color chosen according to charge level when the color transition feature is enabled.
** 2014-03-18.0
* Allow the user to turn off the light bar completely once again.
* Print battery charge information to the console.
** 2014-03-16.1
* Separate the DS4 HID input and output into separate threads to improve latency and performance.
* Correct a drop of some touchpad data. There may be 1-4 touchpad status (finger location) updates per packet, and previously we would ignore the second, third and fourth. These would likely occur while there was a lot of detailed finger motion and/or the DS4 is delayed transmitting its sensor data packet. The result is that touchpad usage should feel more precise and smooth.
* Improve how we are interpreting and reporting charge and battery level. This one still has some open questions.
* Fix broken logic mode switch logic that made it hard to switch into Button mode because you would often get a phantom second mode-switch keypress when releasingthe Start or Options key (or lifting the final finger from the touchpad.)
* Only update the GUI on-demand, reducing overhead/latency and preventing the "cursor always visible in VLC" issue.
* Start a framework for doing reactive haptics (light bar and rumble motor.)
* The Button touchpad mode supports two (three, if you count the fallback) bindings. There is one for the left side ("Touchpad" in Custom Control Mapping), one for the right side ("Multitouch". Actual multi-touch-click switches Button Lock on or off. I'll fix the interface later.), and the "Upperpad" one is used when your finger position is ambiguous (like directly in the center) or cannot be read. This lets me, for example, bind both a Target-Target action in FFXIV and a Push-to-Talk action for Mumble and get far more use out of the DS4 than an X360 controller is capable of.
* Configure the Garbage Collection mode, and if launched as Administrator, the process priority, for lower latency.
* Do not fail completely when "Hide DS4 controller" is selected and the device is already open. Fall back to opening in shared, rather than exclusive, access. It would be awesome if Uplay and Steam started playing nicer.
* Make the rumble testing in Options keep going instead of stopping after a few seconds.
* Display "charging" in the text when the controller is charging. If "Light Bar Color indicates battery level" is enabled, when the controller is plugged in it now does a smooth color cycle to show you unambiguously that it is charging.
* Fix the sixaxis data display. We're not doing anything with the data quite yet, though, just displaying it.

Please see the other thread mentioned at the top for detailed installation instructions. Consider this essentially a patch on top of the 1.2 releases.


Attached Files
.zip   DS4Windows-2014-03-16_1.zip (Size: 1,17 MB / Downloads: 8.516)
.zip   DS4Windows-2014-03-16_0.zip (Size: 1,17 MB / Downloads: 1.042)
.zip   DS4Windows-2014-03-15_0.zip (Size: 1,17 MB / Downloads: 1.672)
.zip   DS4Windows-2014-03-14_0.zip (Size: 1,16 MB / Downloads: 1.012)
.zip   DS4Windows-2014-03-18_0.zip (Size: 1,17 MB / Downloads: 925)
.zip   DS4Windows-2014-03-18_1.zip (Size: 1,17 MB / Downloads: 922)
.zip   DS4Windows-2014-03-19_0.zip (Size: 1,17 MB / Downloads: 811)
.zip   DS4Windows-2014-03-19_1.zip (Size: 1,17 MB / Downloads: 912)
.zip   DS4Windows-2014-03-19_2.zip (Size: 1,17 MB / Downloads: 891)
.zip   DS4Windows-2014-03-22_0.zip (Size: 1,17 MB / Downloads: 938)
.zip   DS4Windows-2014-03-23_0.zip (Size: 1,17 MB / Downloads: 928)
.zip   DS4Windows-2014-03_24_0.zip (Size: 1,17 MB / Downloads: 943)
.zip   DS4Windows-2014-03-24_1.zip (Size: 1,17 MB / Downloads: 2.021)
.zip   DS4Windows-1.0_Alpha-2014-03-28_0.zip (Size: 1,17 MB / Downloads: 932)
.zip   DS4Windows-1_0_Alpha_2-2014-03-30_0.zip (Size: 1,17 MB / Downloads: 899)
.zip   DS4Windows-1_0_Beta-2014-03-31_0.zip (Size: 1,46 MB / Downloads: 980)
.zip   DS4Windows-1_0_Beta_2-2014-04-02_0.zip (Size: 1,46 MB / Downloads: 851)
.zip   DS4Windows-1_0_Beta_3-2014-04-02_1.zip (Size: 1,46 MB / Downloads: 961)
.zip   DS4Windows-1_0_Beta_4-2014-04-08_0.zip (Size: 1,55 MB / Downloads: 1.089)
.zip   DS4Windows-1_0_Beta_5-2014-04-13_0.zip (Size: 1,57 MB / Downloads: 936)
.zip   DS4Windows-1_0_Beta_6-2014-04-14_0.zip (Size: 1,57 MB / Downloads: 920)
.zip   DS4Windows-1_0_Beta_7-2014-04-16_0.zip (Size: 1,57 MB / Downloads: 897)
.zip   DS4Windows-1_0_Beta_8-2014-04-17_0.zip (Size: 1,57 MB / Downloads: 1.390)
.zip   DS4Windows-1_0_Beta_10-2014-04-27_1.zip (Size: 1,57 MB / Downloads: 24.130)
.zip   DS4Windows-1_0-2014-06-05_0.zip (Size: 1,57 MB / Downloads: 11.107)
Reply

Sponsored links

#2
So far, so good. I'm actually excited this project has split again, there's more variety.

I'm curious about the haptics you have planned. What sort of capability is that going to have?
Dualshock 4 Users Steam group: http://steamcommunity.com/groups/DS4users
Reply
#3
I'd love to see fixed the bug that prevents the cursor from disappearing on games, vlc player, etc. when this application is open. I've already reported it on ds4tool but it hasn't been fixed.

This bug doesn't exist in scp ds driver but I never managed to have my gamepad working with that application.
Reply
#4
(03-15-2014, 12:59 AM)Banyuyaga Wrote: I'd love to see fixed the bug that prevents the cursor from disappearing on games, vlc player, etc. when this application is open. I've already reported it on ds4tool but it hasn't been fixed.

This bug doesn't exist in scp ds driver but I never managed to have my gamepad working with that application.

I haven't been able to reproduce it -- can you provide me some steps? You already have a regular mouse or touchpad or tablet plugged in, right? Because if you don't, you may end up with an invisible cursor, since this software does not create an actual mouse device, just synthetic mouse events. Does this happen with every touchpad mode?
Reply
#5
(03-15-2014, 12:24 AM)raptor1138 Wrote: So far, so good. I'm actually excited this project has split again, there's more variety.

I'm curious about the haptics you have planned. What sort of capability is that going to have?

One of the main interactions will be having rumble feedback to go along with analog controls -- that is, the L2/R2 triggers, thumbpads, touchpad and the sixaxis. For example, one of the next things I will add is Trigger Lock, and rumble will be used to give you feedback that it is turned on or off, like the rumbles coming from the Button Lock switch in Button mouse mode. For when I have the ability to map sixaxis control onto thumbpad values, rumble would be useful to tell you when you're starting to approach the edge of the "arena" (useful measured angles of rotation), like the "full stop" haptic feedback you get from pushing a thumbpad to the edge.
Reply
#6
Oh ho, what have we here?

It's working great, which is expected at the point. I do have a concern and a question, though: First, it doesn't seem like the battery charging thing is working. The controller definitely charges through USB, but it doesn't say "Charging," nor does it cycle colors. I do have the option checked to have the light bar indicate the battery level.

The question is this: What's the difference between Drag Mode and Standard Mode? They seem to do the same things for me.
Reply
#7
(03-15-2014, 01:54 AM)pedrovay2003 Wrote: Oh ho, what have we here?

It's working great, which is expected at the point. I do have a concern and a question, though: First, it doesn't seem like the battery charging thing is working. The controller definitely charges through USB, but it doesn't say "Charging," nor does it cycle colors. I do have the option checked to have the light bar indicate the battery level.

The question is this: What's the difference between Drag Mode and Standard Mode? They seem to do the same things for me.

Can you show me what it does say? I'm not seeing a problem with the color-cycling-charge-indicator whether it is connected over USB (and thus charging from the get-go) or over BT. Maybe it is not in fact actually charging, then?

The Drag touchpad mode lets you double-tap to drag like typical touchpad drivers do. The jitter compensation needs work, though, on my touchpad... mine is sensitive enough it detects finger touches before the finger is even on the surface.
Reply
#8
(03-15-2014, 01:29 AM)electrobrains Wrote: I haven't been able to reproduce it -- can you provide me some steps? You already have a regular mouse or touchpad or tablet plugged in, right? Because if you don't, you may end up with an invisible cursor, since this software does not create an actual mouse device, just synthetic mouse events. Does this happen with every touchpad mode?

I'm on my laptop using a touchpad. This happens always if the ds4tool.exe is running no matter the configuration used, even if there is no gamepad connected or the tool is in stop state. I realised it first because I have this tool to start with windows.

This happens for sure with vlc. I remember at least another application with this problem, but as I don't remember the application I can't confirm if it was because of ds4tool. I had the impression it was common, because today playing Stacking the cursor wouldn't dissapear in the menu when using a gamepad, but now I've checked without the tool of and it's the same, so maybe it's just with vlc.
Reply
#9
(03-15-2014, 02:16 AM)electrobrains Wrote: Can you show me what it does say? I'm not seeing a problem with the color-cycling-charge-indicator whether it is connected over USB (and thus charging from the get-go) or over BT. Maybe it is not in fact actually charging, then?

The Drag touchpad mode lets you double-tap to drag like typical touchpad drivers do. The jitter compensation needs work, though, on my touchpad... mine is sensitive enough it detects finger touches before the finger is even on the surface.

Oh, okay, I see how drag works.

As far as the charging thing goes, I can send a screenshot your way later, but for me, it literally just shows what every previous version of DS4Tool has shown: If it's Bluetooth, it says Bluetooth, and if it's USB, it's USB, and it never actually says the word "Charging." I know it is charging, though, because the percentage went up as I was using the program, but the light bar didn't change until the percentage did, and it went one step up toward the color I set it to show when the battery is full.
Reply
#10
(03-15-2014, 03:09 AM)pedrovay2003 Wrote: Oh, okay, I see how drag works.

As far as the charging thing goes, I can send a screenshot your way later, but for me, it literally just shows what every previous version of DS4Tool has shown: If it's Bluetooth, it says Bluetooth, and if it's USB, it's USB, and it never actually says the word "Charging." I know it is charging, though, because the percentage went up as I was using the program, but the light bar didn't change until the percentage did, and it went one step up toward the color I set it to show when the battery is full.

That's very strange. Mine always shot up to display 100% when charging. Does this behavior persist after a controller reset?

I've reproduced the problem with cursor never disappearing in VLC. It happens even without any controller. Let me see what I can do.
Reply




Users browsing this thread: 7 Guest(s)