CheeseBoar Dec 31, 2024 @ 12:05am
Can I add a button to a controller in Steam Input?
I have an 8BitDo controller (the Pro 2) with two extra buttons on the back. It turns out that in D-input mode, Steam natively recognizes the back buttons, and you can map them on the controller config screen. However, being read as a generic gamepad, there's only one extra button available to map, so only one of the two back buttons can be used at a time. Is there any way to edit a config file or .vdf file somewhere to manually add another button to a generic controller layout?

Something went wrong while displaying this content. Refresh

Error Reference: Community_9734361_
Loading CSS chunk 7561 failed.
(error: https://community.fastly.steamstatic.com/public/css/applications/community/communityawardsapp.css?contenthash=789dd1fbdb6c6b5c773d)
Showing 1-13 of 13 comments
tintingaroo Dec 31, 2024 @ 1:08am 
I wrote some stuff regarding this here, might need to tailor things for your specific Pro 2 (I have the Bluetooth version):
https://steamcommunity.com/groups/bigpicture/discussions/3/7004880943562398178/#c7004881118891628910
CheeseBoar Dec 31, 2024 @ 4:01am 
Originally posted by tintingaroo:
I wrote some stuff regarding this here, might need to tailor things for your specific Pro 2 (I have the Bluetooth version):
https://steamcommunity.com/groups/bigpicture/discussions/3/7004880943562398178/#c7004881118891628910

Holy crap, that's exactly what I was looking for, as I also have the Bluetooth Pro 2! Thank you so much!

Is this for D-input mode, or will it work in any mode?
tintingaroo Dec 31, 2024 @ 9:02pm 
Just D-input mode.
In the other modes the Pro 2 is bound by the specs/protocol of the controller it's operating as - the paddles only output existing controls rather than be their own independent, unique button.
CheeseBoar Dec 31, 2024 @ 9:20pm 
Originally posted by tintingaroo:
Just D-input mode.
In the other modes the Pro 2 is bound by the specs/protocol of the controller it's operating as - the paddles only output existing controls rather than be their own independent, unique button.

Okay, that's kind of what I thought. It's a lot to sacrifice, since you're losing gyro, analog triggers, and rumble in D-input mode, but it's still great that it's possible. Thanks again for sharing that research.
We can get analog triggers for D-Input by adding some stuff to the Registry. I have it saved in a file somewhere - I'll update the post later.

But yeah, gotta pick the right mode for the preference lol

X-input: +rumble, +analog triggers, -gyro, -independent paddles, +button remapping
Switch: +rumble, -analog triggers, +gyro, -independent paddles, +button remapping
D-input: -rumble, +analog triggers, -gyro, +independent paddles, +button remapping
MacOS: +rumble, +analog triggers, -gyro, -independent paddles, -button remapping

What we need is 8BitDo to write their own protocol that includes everything, then pass the info to the Steam Input team or let them work it out...
It would be fantastic if they would release something official like that, yeah. I love their controllers, so the more use I can get out of them, the happier I am.
Getting analog triggers (add D-Input mode trigger axes info to the registry)

Save the following in a new text file:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_2DC8&PID_6006\Axes\3] @="X Rotation" "Attributes"=hex:00,00,00,00,02,00,c5,00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_2DC8&PID_6006\Axes\4] @="Y Rotation" "Attributes"=hex:00,00,00,00,02,00,c4,00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_2DC8&PID_6003\Axes\3] @="X Rotation" "Attributes"=hex:00,00,00,00,02,00,c5,00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_2DC8&PID_6003\Axes\4] @="Y Rotation" "Attributes"=hex:00,00,00,00,02,00,c4,00

Change the file extension to .reg and run the file.

Could check with joy.cpl and should see the trigger axes.

Do the controller setup process in Steam.


I remember the first time doing the setup in Steam, it wasn't mapping one of the sticks properly (think it was right stick Y axis). I just went through and mapped all that mapped correctly, skipping the problem bind, then corrected the problem bind in the mapping string with the same process linked in the first post.

what the binds ended up looking as:
a:b1,b:b0,x:b4,y:b3,dpleft:h0.8,dpright:h0.2,dpup:h0.1,dpdown:h0.4,leftx:a0,lefty:a1,leftstick:b13,rightx:a2,righty:a5,rightstick:b14,leftshoulder:b6,lefttrigger:a3,rightshoulder:b7,righttrigger:a4,back:b10,start:b11,guide:b12,steam:2,paddle1:b2,paddle2:b5,
Holy crap, yup, everything works perfectly. That's nuts! If we could just get rumble working, I'd say that this is just as good as any other controller for Steam Input.

That registry edit, is that specifically for this controller, or for all D-input devices on the system?
Last edited by CheeseBoar; Jan 1 @ 11:24pm
For this controller.
The device is specified by its Vendor ID and Product ID:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_2DC8&PID_6006\Axes\3

2DC8 is 8BitDo's vendor ID, Product ID 6006 is the controller in D-input mode over BT, PID 6003 over USB.

I got the procedure from these two Reddit posts regarding the Stadia controller, and just adapted stuff for us
https://www.reddit.com/r/Stadia/comments/edqrd1/comment/hiaw1vi/
https://www.reddit.com/r/Stadia/comments/edqrd1/comment/k8oh89y/
Last edited by tintingaroo; Jan 2 @ 5:26pm
Fantastic, that's great to know! I just got another controller that I'd love to try this with, so it's good to know that there's a semi-universal way of doing it.
Mohammad Jan 15 @ 1:27pm 
How do I do this for my Razer Wolverine V3 controller? I have 6 extra buttons.
Originally posted by CheeseBoar:
It would be fantastic if they would release something official like that, yeah. I love their controllers, so the more use I can get out of them, the happier I am.

Woooh that Steam Input x 8BitDo collab is happening!!!
https://steamcommunity.com/app/353370/discussions/0/1755780323773182548/#c530970010564207028


Originally posted by Mohammad:
How do I do this for my Razer Wolverine V3 controller? I have 6 extra buttons.
What we're doing in this thread works because 1) the controller reports its additional buttons to Windows and 2) it does so for DirectInput (that's my understanding anyway).
Razer recently released firmware which made the Wolverine V3 in PC mode compatible with Synapse 4, so it seems to me it reports the buttons to the OS. If that's correct, then I believe if the Steam Input team investigate they can have Steam recognise the M-buttons...
Last edited by tintingaroo; Apr 17 @ 6:08pm
Originally posted by tintingaroo:
Woooh that Steam Input x 8BitDo collab is happening!!!
https://steamcommunity.com/app/353370/discussions/0/1755780323773182548/#c530970010564207028

Holy crap, that's genuinely fantastic. Valve has already made system updates for the Steam Deck specifically for 8BitDo controllers, so I'm glad they're still working with them.
Showing 1-13 of 13 comments
Per page: 1530 50