I finally got around to setting up my Sony PlayStation 4 Pro and I find the DualShock 4 (DS4) interesting as an alternate controller so I plugged it via USB cable to my Windows 10 workstation to check out the button and stick mapping in Unity. As expected I get yet another set of axis and button mappings and a variation in the return values; other setups return 0 to 1 or -1 to 0, on the DS4 we get -1 to 1.
The notable feature is the way the Triggers (L2 and R2) are handled, they map both to a button and axis to give button press state and an analog value based on trigger pull. Unlike the Xbox Controller, the DualShock triggers do not share an axis as a convenience option but is easily computed using the assigned axes. The PS (PlayStation Logo) button along with the touch pad also registers a button click.
Following is the mapping table on the controller, the corresponding joystick axis and the return values. Values are Left to Right or Down to Up.
Left Stick X-Axis |
X Axis |
-1 to 1 |
Left Stick Y-Axis |
Y Axis |
1 to -1 |
Right Stick X-Axis |
3rd Axis |
-1 to 1 |
Right Stick Y-Axis |
6th Axis |
1 to -1 |
DPAD X-Axis |
7th Axis |
-1 to 1 (0.64 with multiple buttons) |
DPAD Y-Axis |
9th Axis |
-1 to 1 (0.64 with multiple buttons) |
L1 |
joystick button 4 |
|
R1 |
joystick button 5 |
|
L2 as Button |
joystick button 6 |
|
L2 as Axis |
4th Axis |
-1 to 1 |
R2 as Button |
joystick button 7 |
|
R2 as Axis |
5th Axis |
-1 to 1 |
Left Stick Click |
joystick button 10 |
|
Right Stick Click |
joystick button 11 |
|
Touchpad Click |
joystick button 13 |
|
X Button |
joystick button 1 |
|
O Button |
joystick button 2 |
|
Square Button |
joystick button 0 |
|
Triangle Button |
joystick button 3 |
|
Share Button |
joystick button 8 |
|
Option Button |
joystick button 9 |
|
PS Button |
joystick button 12 |