Changed Button Numbers on PS3 Controller on Stretch 4.4 image
I installed the 4.4 Stretch RetroPie image on my Pi 2 and noticed that the button numbers for my wired PS3 controller had changed (see below).
I installed the Raspbian Stretch Lite (2018-03-13) image and ran
jstestto find that the button numbers were the same as on previous (Jessie) builds. When I manually installed the core packages of RetroPie through the setup script, the button numbers changed to the ones on the 4.4 Stretch image.
The controller works fine so the button number changes are more of a major inconvenience than a bug. I use a couple of non-RetroArch emulators, DOSBox and jzIntv, for which I have a number of game-specific configs which would require reconfiguration.
I haven't seen many reports of other users experiencing the same issue, though, if they only use RetroArch emulators, then it's unlikely the change would be noticed. The only report is from @hooperre in this post which states a DS4 controller though. From the post, it seems that the button numbers for PS3 and DS4 may now be identical which seems odd as Cross used to be button 14 on the PS3 controller and button 1 on a DS4. Curiously the new button numbers don't match those of an XBox 360 controller
I'm curious why this has happened as I don't particularly want to go through the rigmarole of remapping for DOSBox and jzIntv as well as any RetroArch core remaps. Any explanation would be appreciated.
If anybody with a PS3 controller could check, here are the button and axes numbers for my PS3 controller in the Jessie and Stretch images.
Buttons Jessie Stretch Select 0 8 Start 3 9 Triangle 12 2 Circle 13 1 Cross 14 0 Square 15 3 Dpad Up 4 13 Dpad Right 5 16 Dpad Down 6 14 Dpad Left 7 15 L2 8 6 R2 9 7 L1 10 4 R1 11 5 PS button 16 10 Left thumbstick 1 11 Right thumbstick 2 12 Left Analog Up -1 -1 Left Analog Down +1 +1 Left Analog Left -0 -0 Left Analog Right +0 +0 Right Analog Up -3 -4 Right Analog Down +3 +4 Right Analog Left -2 -3 Right Analog Right +2 +3
hooperre last edited by hooperre
Nice work. I got a slew of differences from Jessie to Stretch and I could check out of they are indeed the same for the DS4 if at all necessary.
Edit: Off the top of my head, I can already spot that cross is 0, select is 8, and PS button is 10 (was 12). I believe circle was 0 last time around. I was messing with my hotkeys yesterday. So I can confirm already that some of these are the same on the DS4.
Edit Again: Also worth noting this thread in which they say that changes in RetroArch 1.7.2 is going to change everyyyyyyyybody's input.
pjft last edited by
@psyke83 Will have more context but I think he was suggesting that a future version of the drivers were going to cause this, so it might be that that time is now.
edmaul69 last edited by
@dudleydes i might be wrong but i think their was a change for ps3 and ps4 controllers with the bluetooth. Personally i see this change as a good thing as the original numbering made absolutely no freaking sense. And for dosbox it is really easy to edit the config file manually to fix the changes.
Given the fact that the next firmware will be kernel 4.14, which will use the new hid-sony driver button mappings, I've decided to get rid of the patch to use the old mappings. The change in button mappings is inevitable.
As the new Stretch images uses the 4.14 kernel, it looks like DS3/DS4 users are going to have to live with the new button mappings. With further mapping changes planned for RetroArch 1.7.2, I may lock down my Jessie build, never to be updated, just to play games while maintaining a Stretch build to explore these updates.
@hooperre Thanks for the info. It appears DS3 and DS4 controllers will have the same button numbers so I guess that's a good thing.
@edmaul69 PS3 controllers are the only controllers I'm familiar with so the button numbers make sense to me but I do see that the mapping is an outlier compared to other controllers. I'm aware it's pretty straightforward to manually edit DOSBox mapper files but I have around 40 of them, which I'd prefer not to muck around with at this stage.
Seeing this now with my wireless ps2 usb dongle based rf shanwan usb twin gamepads.
- USB Dongle would register as 2 js devices in /dev/input with 14 buttons each, but only 12 were actually registered
- Button mapping was different than it is with stretch
- USB Dongle registers as a single js device in /dev/input with 24 buttons total, Joy 1 maps to b0-12, Joy 2 maps to b13-24. But they shared the axis on both pads.. so it can't work
- Button mapping is different than it was with jessie
Gotta find some new rf dongle-based gamepads now.
Don't like Bluetooth because it sucks
Maybe Linus Torvalds should have fixed that in the kernel before taking a leave of absence.
Looks like there may be some custom drivers to help with this issue
Ok here's a driver for it that seems to work so far from another reddit user