Which paddle buttons correspond to which positions?

With Joy-Cons now supported as left and right halves of a full Pro controller, the only thing missing is support for their SL / SR buttons. I’d like to map them to:

SDL_CONTROLLER_BUTTON_PADDLE1,  /* Xbox Elite paddle P1 */
SDL_CONTROLLER_BUTTON_PADDLE2,  /* Xbox Elite paddle P3 */
SDL_CONTROLLER_BUTTON_PADDLE3,  /* Xbox Elite paddle P2 */
SDL_CONTROLLER_BUTTON_PADDLE4,  /* Xbox Elite paddle P4 */

When both Joy-Cons are held, their SL and SR buttons naturally map to Xbox Elite paddle positions, and this also means an application can easily read them and translate them to shoulder buttons if it wants to treat them as single controllers.

I’ll submit a patch with this change, but I don’t have an Xbox Elite controller myself to confirm the positions of each paddle. I can see which paddle is P1, P2, P3, P4 from images on Google, but as you can see from the comments in the code snippet above (from SDL_gamecontroller.h), the comments don’t seem to match the names – PADDLE3 is Xbox Elite paddle P2 and PADDLE2 is Xbox Elite paddle P3. I don’t know if this is a typo, or if it’s to explain how Xbox Elite controllers map to button positions that SDL had already established earlier. Can anyone confirm for me whether the comments are correct?

1 Like

@JibbSmart looks like your PR for JoyCons made it in, can you share the answer to your question if you figured it out ? Thanks !

Sorry, I can’t recall. I never got an Xbox Elite myself, and I can’t recall if anyone else was able to confirm that the positions were correct.

Yes, the comments are correct. SDL paddles are numbered across and then down, and Xbox paddles are numbered down and then across. This is because there are controllers with only 2 paddles, and they’ll have SDL paddles 1 and 2 mapped.