mdqinc / SDL_GameControllerDB

A community sourced database of game controller mappings to be used with SDL2 Game Controller functionality
http://libsdl.org
zlib License
1.37k stars 518 forks source link

Add new Nacon controller Revolution 5 Pro #718

Closed omnosti closed 11 months ago

omnosti commented 11 months ago

I'm not sure if this is the right place for submitting these mappings, sorry if I'm making a mistake here. I used SDL2 Gamepad Mapper to create mappings for the new Nacon controller which has distinct PS4 and PS5 modes, and is currently not recognized properly by JoyShockMapper or Steam Input:

PS4 mode: 03008a4785320000170d000000000000,REVOLUTION 5 PRO (PS4 Mode),a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:-a0,leftx:+a0,-lefty:-a1,+lefty:+a1,-rightx:-a2,+rightx:+a2,righty:a5,lefttrigger:a3,righttrigger:b7,platform:Windows,

PS5 mode: 03008a4785320000190d000000000000,REVOLUTION 5 PRO (PS5 Mode),a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,-leftx:-a0,+leftx:+a0,-lefty:-a1,+lefty:+a1,-rightx:-a2,+rightx:+a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Windows,

offalynne commented 11 months ago

This is the place ! Great start on these mappings, thank you!

A few things.

Can you run through the mapper again in each mode and press very lightly on the triggers when prompted ? Currently there are mixed button (:b) and axis (:a) mappings, ideally they should all be axis.

Next is the touchpad and misc1 (mic button) mappings. the gamepad mapper may omit these, so you can either create a new mapping and just map these two (to something like a and b buttons) and skip the rest, or check on an OS level by opening the Windows game controller dialog (joy.cpl) and checking what values you get when pressing these buttons.

Thanks again !

omnosti commented 11 months ago

Great, glad I'm in the right place! I went through the mapper a few more times for each mode pressing the triggers as lightly as possible and got these mappings consistently (only the PS4 mode mappings changed, the PS5 mapping remains the same as in my original post):

PS4 mode: 03008a4785320000170d000000000000,REVOLUTION 5 PRO (PS4 Mode),a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,-leftx:-a0,+leftx:+a0,-lefty:-a1,+lefty:+a1,-rightx:-a2,+rightx:+a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Windows,

PS5 mode: 03008a4785320000190d000000000000,REVOLUTION 5 PRO (PS5 Mode),a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,-leftx:-a0,+leftx:+a0,-lefty:-a1,+lefty:+a1,-rightx:-a2,+rightx:+a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Windows,

In joy.cpl, the touchpad button corresponds to button 14. I have a MUTE button on the controller but that does not correspond to any buttons in joy.cpl. These two things are true in both PS4 and PS5 mode.

offalynne commented 11 months ago

Great, thank you. Using this information and the existing PS5 mappings I can author mappings for this device.

omnosti commented 11 months ago

Thank you for your work on this. I wonder if I could get your thoughts on a related problem - I am trying to use this controller for gyro controls on PC using JoyShockMapper which relies on SDL2 for controller support.

Setting these mappings as environmental variables allows JoyShockMapper to detect the Nacon controller as connected, but the gyro still does not work (through JSM or Steam Input). The gyro does work through reWASD, but only in PS4 mode. I've been told it's a driver issue but I'm not sure where to go from here, since I was hoping that SDL support would be enough for JSM to detect this controller's gyro.

offalynne commented 11 months ago

Indeed, that would not be mapping support but feature detection, specifically for the IMU.

It is possible that simply adding the device to SDL's device type detection may be enough to have SDL pick up the IMU, it is also possible that will not be enough.