For Game Developers

Support your game with DualSense Adaptive Trigger Capabilities With DualSenseX App, find out below how to get it setup, and get your game added within the App for all to see and play!

dualsensex ds5windows

Trigger State

To get this working with your game, you have 2 methods to communicate with the controller.

First one is UDP Server/Client method through Localhost, Project example can be downloaded here

Second one is the Text file method described below:

There are a few things this App will look for when reading this text file to apply the triggers:

  • LeftTrigger=

  • RightTrigger=

  • VibrateTriggerIntensity= ⠀⠀⠀⠀⠀⠀⠀* A value between 0-255 | VibrateTrigger Required to use this *

  • CustomTriggerValueLeftMode=⠀⠀⠀⠀⠀* CustomTriggerValue Required to use this *

  • CustomTriggerValueRightMode=⠀⠀⠀⠀* CustomTriggerValue Required to use this *

  • ForceLeftTrigger=

  • ForceRightTrigger=


For the LeftTrigger= and RightTrigger=, there are 19 different state possibilities that you can set, which are CASE SENSITIVE:

  • Normal
  • CustomTriggerValue
  • GameCube
  • Resistance
  • Bow
  • Galloping
  • SemiAutomaticGun
  • AutomaticGun
  • Machine
  • Choppy
  • VerySoft
  • Soft
  • Medium
  • Hard
  • VeryHard
  • Hardest
  • Rigid
  • VibrateTriggerPulse
  • VibrateTrigger

for ForceLeftTrigger= and ForceRightTrigger=

  • When using CustomTriggerValue there are 7 different values that goes into each parenthesis 0-255

    • Example: ForceLeftTrigger=(0)(0)(0)(0)(0)(0)(0) or ForceRightTrigger=(0)(0)(0)(0)(0)(0)(0)
  • When using Resistance, there are 2 different values that goes into each parenthesis.

    • First: 0-9 Second: 0-8
    • Example: ForceLeftTrigger=(0)(0) or ForceRightTrigger=(0)(0)
  • When using Bow, there are 4 different values that goes into each parenthesis.

    • First: 0-8 Second: 0-8 Third: 0-8 Fourth: 0-8
    • Example: ForceLeftTrigger=(0)(0)(0)(0) or ForceRightTrigger=(0)(0)(0)(0)
  • When using Galloping, there are 5 different values that goes into each parenthesis.

    • First: 0-8 Second: 0-9 Third: 0-6 Fourth: 0-7 Fifth: 0-255 NOT recomended to go over 40
    • Example: ForceLeftTrigger=(0)(0)(0)(0)(0) or ForceRightTrigger=(0)(0)(0)(0)(0)
  • When using SemiAutomaticGun, there are 4 different values that goes into each parenthesis.

    • First: 0-7 Second: 0-8 Third: 0-8
    • Example: ForceLeftTrigger=(0)(0)(0) or ForceRightTrigger=(0)(0)(0)
  • When using AutomaticGun, there are 4 different values that goes into each parenthesis.

    • First: 0-9 Second: 0-8 Third: 0-255 NOT recomended to go over 40
    • Example: ForceLeftTrigger=(0)(0)(0) or ForceRightTrigger=(0)(0)(0)
  • When using Machine, there are 6 different values that goes into each parenthesis.

    • First: 0-8 Second: 0-9 Third: 0-7 Fourth: 0-7 Fifth: 0-255 NOT recomended to go over 40 Sixth: 0-2 in Decimals, example: 0.1, 0.8, 1.0, 1.8, 2.0 etc...
    • Example: ForceLeftTrigger=(0)(0)(0)(0)(0)(0) or ForceRightTrigger=(0)(0)(0)(0)(0)(0)

When using CustomTriggerValue, there are 17 different mode possibilites that are CASE SENSITIVE you can apply for:

CustomTriggerValueLeftMode=

CustomTriggerValueRightMode=

  • OFF
  • Rigid
  • Rigid A
  • Rigid B
  • Rigid AB
  • Pulse
  • Pulse A
  • Pulse B
  • Pulse AB
  • VibrateResistance
  • VibrateResistance A
  • VibrateResistance B
  • VibrateResistance AB
  • Vibrate Pulse
  • Vibrate Pulse A
  • Vibrate Pulse B
  • Vibrate Pulse AB

 

Examples of Trigger States in Textfile:


 

Apply Normal State:

LeftTrigger=Normal
RightTrigger=Normal

 

Apply Rigid State:

LeftTrigger=Rigid
RightTrigger=Rigid

 

Apply VibrateTrigger State for right Trigger:

LeftTrigger=Normal
RightTrigger=VibrateTrigger
VibrateTriggerIntensity=40

 

CustomTriggerValue State for right Trigger and GameCube for left Trigger:

LeftTrigger=GameCube
RightTrigger=CustomTriggerValue
CustomTriggerValueRightMode=VibrateResistance B
ForceRightTrigger=(10)(255)(0)(0)(0)(0)(0)

 

CustomTriggerValue State for both Triggers:

LeftTrigger=CustomTriggerValue
RightTrigger=CustomTriggerValue
CustomTriggerValueLeftMode=Rigid A
CustomTriggerValueRightMode=VibrateResistance B
ForceLeftTrigger=(10)(255)(0)(0)(0)(0)(0)
ForceRightTrigger=(10)(255)(0)(0)(0)(0)(0)

 

VibrateTrigger State for Right Trigger and CustomTriggerValue for the left :

LeftTrigger=CustomTriggerValue
RightTrigger=VibrateTrigger
VibrateTriggerIntensity= 10
CustomTriggerValueLeftMode=Rigid A
ForceLeftTrigger=(10)(255)(0)(0)(0)(0)(0)

 

Resistance State for Right Trigger :

RightTrigger=Resistance
ForceRightTrigger=(0)(8)

 

Machine State for Left Trigger :

RightTrigger=Machine
ForceLeftTrigger=(0)(9)(7)(7)(10)(0.0)

 

AutomaticGun State for right Trigger and GameCube for left trigger:

LeftTrigger=GameCube
RightTrigger=AutomaticGun
ForceRightTrigger=(0)(8)(15)

Note : Best is to not leave spaces or extra unnecessary lines except for the lines you need to reduce the delay in reading the text file.

You can mix and match between states to get the desired effect for your game.

From previous testing, I believe you can write to a text file every frame, as the App will only read from that file.

For best results, I recommend you include the batch file with your game and have it execute when loading your game, which is explained below.

 

Batch File:

This batch file will open the DualSenseX App and auto connect to the controller, and begin applying the trigger states from the text file.

To get started, download the zip file from above and attach the .Bat file in the directory of your game. Edit the batch file according to your Game Title and the name of the text file that your game will write to.

Upon launching the game, you should execute this batch file, which will open a new window of DualSenseX that takes in 2 paramaters from the batch file explained below and inside the batch file:

Both the batch file and the text file must be in the same directory with your game, the batch file gets the location of the text file depending on where the batch file is located.

  • Replace GAMENAME with your Game Title.
  • Replace TEXTFILENAME.txt with your text file name, while also including the .txt extension at the end