..:: PCSX2 Forums ::..

Full Version: DS4Windows -- yet another DualShock 4 driver! (No longer under active development)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Please let me know if this fixes the issue with mouse cursor jumping completely. The touchpad behaves pretty bizarrely... but maybe most touchpads do that.
(04-04-2014, 12:16 AM)electrobrains Wrote: [ -> ]Please let me know if this fixes the issue with mouse cursor jumping completely. The touchpad behaves pretty bizarrely... but maybe most touchpads do that.
It has a strange effect.

With a light touch (which before would have prevented jumping behavior) the cursor works as expected. but with a heavier touch, rather than skipping, the cursor simply doesn't move at all.

It seems like before if my thumb touched too much of the pad at once, the cursor would behave erratically, whereas now if my thumb touches too much of the pad at once the cursor acts as though the pad is untouched.

Note: If I disable jitter compensation, the behavior returns to normal.

Note 2: I can cause the mouse to consistently exhibit jumping behavior by rocking my thumb across the touchpad, i.e. keeping the center of my thumb in the same place but shifting it so that a different part is actually making contact with the pad. Since I hold the controller in the same place relative to my thumb, my tendency is to lean on the tip of my thumb when dragging the cursor up/left and the center of my thumb when dragging down/right; it's when I switch direction that I "rock" my thumb, which is what causes the jittery behavior when I try to "zero" my cursor on something since I'll change directions rapidly. It's also why a "light touch" solves the issue, as consciously keeping my thumb from pressing on the pad and only touching it with the tip prevents me from rocking it back and forth when moving the cursor. Note that really exaggerated rolling motions move the cursor so fast you don't notice the jitteriness, but very subtle rocking motions will cause the cursor to leap around where a dragging motion would cause smooth cursor movement.

EDIT/Note 3: With jitter compensation on (which causes the mouse to refuse to move quickly in most cases) I cannot get the rocking to produce leaping behavior. It's almost as though the rocking motion is tricking the hardware into applying a high level of mouse acceleration rather than the low level approriate for such small movements, and enabling jitter comp. in this version of your tool simply translates high acceleration into non-movement.
What I specifically tried implement implementing with that latest DLL is to never allow greater than one pixel of motion any time either axis stops and changes direction or continues going. I'm definitely going to have to have you log some touchpad usage so I can see what your controller does. It's very hard to figure out a good jitter compensation algorithm!

This version works for me in all cases so maybe I need to take time into account in the algorithm more, or maybe there needs to be per-DS4 calibration to deal with varying touchpad sensitivity... I'd rather avoid that if possible and not ruin the high resolution. BTW have you tried different touch sensitivity (multiplier, defaults to 100 percent?)
Execute this version from the command line as "DS4Tool > log.txt" or something similar to capture the console output of the touchpad events to a file. If we examine the jumps we can probably figure out more about this touchpad's jitter behavior....
Hi, are you already working on the headphone or is this future stuff?
Great work guys, I'm using the latest version and it is very nice, and for now no problems.

I want to give some feedback on the amazing work done by Jays2Kings to make the interface better:

-To make the UI more standard, I think instead of set, save and the X button on the window (to NOT save), the old combination of OK, Cancel, Apply would be better.

-In the checkbox text could be more descriptive, for example:

Flash on low battery (instead of battery level flash)
Change color on low battery (instead of battery level color).

These are minor things that could help people that don't know beforehand the application and what does each option do. But the biggest usability problem I see is with the option set low battery color. It is a bit strange to me how this option work. I think this option is meant for a radio button, maybe putting the color levels (the vertical bars on the right) in horizontal and a radio button to the left of each one.
(04-05-2014, 04:58 AM)Horokeu Wrote: [ -> ]Hi, are you already working on the headphone or is this future stuff?

I'm concentrating on stability right now, like making touchpad jitter go away for every user, and figuring out the weird stuff people are reporting about mode switching making things go haywire. The audio support is lower on my priorities than those things, and battery life concerns are still higher, too. I wish I could work on it all at once. If anyone else wants to help, I can help get you a working development environment set up.
I start digging into the code (i pulled the 1.3 branch) and although it's not exactly the easiest code that i've seen i managed to grasp the very basic.

I understand that almost everything that i need is in ControllerStatusChanged event, but the event argument is a generic and empty EventArg, so no useful data to extract.
It will be possible to switch to a more interesting event argument like a StatusChangedArg or whatever you want that contains everything i need? Considering that i'm using a DataContract to send info about controllers to the client, the top will be having the same DataContract as a Event Argument value...

For reference: this is the DataContract that i'm using atm https://github.com/donbabbeo/ds4ui/blob/...ontract.cs and this is the ControllerMessage enum sent with it https://github.com/donbabbeo/ds4ui/blob/...Message.cs .

PS: The Name field could (should?) technically be empty, the controller name is something that you set client side and not service side, the service should not know the name assigned, it's only interested in the Id that it's visible under device manager.

Thanks
(04-05-2014, 02:03 PM)electrobrains Wrote: [ -> ]I'm concentrating on stability right now, like making touchpad jitter go away for every user, and figuring out the weird stuff people are reporting about mode switching making things go haywire. The audio support is lower on my priorities than those things, and battery life concerns are still higher, too. I wish I could work on it all at once. If anyone else wants to help, I can help get you a working development environment set up.

By the way, something strange has just happened to me right now (maybe related to that bug you say makes things haywire):

1. I start a videogame on steam that is having problems with the controller (now I know the problem is because of default mappings it has for the directinput)

2. I don't remember how I changed the options (steam on/off, hide/not hide), but the gempad gets to a state where no directinput or xinput controller appears. It doesn't matter what option I press, if I stop/start the tool or if steam is closed. But the touchpad works.

3. After replugging the controller to make the directinput controller appear again, the option to hide the controller doesn't make the xpinput appear AND makes the directinput dissapear, so no controller at all again (and that with steam closed).

4. I give up and stop the app and unplug my gamepad, put a movie, and after a minute or so, windows hard freezes and outputs all the time the same sound.

I don't know if this is just a huge coincidence or if both things have anything to do (I don't remember this kind of freeze ever happening before, and I expect these kind of things to happen with hardware/driver failure). By the way, I remember this problem (not being able to make the controller appear after the hide option fails) was reported by me to the ds4tool ages ago (before this tool existed) and ignored.

One last thing: should we ever update the scp driver?
(04-04-2014, 03:25 AM)electrobrains Wrote: [ -> ]Execute this version from the command line as "DS4Tool > log.txt" or something similar to capture the console output of the touchpad events to a file. If we examine the jumps we can probably figure out more about this touchpad's jitter behavior....
Is the commandline argument actually " > log.txt" ? Because I'm not seeing any file being generated.

I've tried
log.txt
> log.txt
-- log.txt

and no file appears in the DS4Tool directory, the main directory of the HDD, or the root of the C drive.

I think I might be misunderstanding your instructions.