How should I interpret non-obvious controller mappings?

I’m not sure what to make of some of SDL’s default controller mappings, since the mapping source isn’t always commented. There are some high-profile or iconic controllers supported out of the box without an obvious 1:1 connection to the 360 controller. Some example problems:

  • The DualShock 4 doesn’t have clear Start and Back/Select buttons.
  • The GameCube’s four face buttons aren’t arranged in a diamond.

How can I educate myself?

Came back after a few hours and—in the case of the DualShock 4—compared the SDL HIDAPI against a HID report structure I found. Seems Start is Options and Select is Share.

My question still stands…this seems a case of poor documentation, which I understand, so I want to make sure it is a matter of documentation and not something bigger picture I’m missing.

The mappings are generally done using controls in the approximate physical location of the Xbox controls. If there isn’t a physical equivalent, then a best guess logical mapping is made. There isn’t documentation on exactly what is what in the mapping file, but there is an SDL test program that lets you visually see what is being mapped (testgamecontroller in the test directory)

Thanks, understood :slightly_smiling_face:

I’m speaking from a dev perspective since I don’t own a DualShock 4 or some of the more esoteric adapters & retro knockoffs :sweat_smile:

(The reason I ask is since I’m now using a VIDPID map a la Valve’s for UI button prompt display, but still relying solely on SDL’s mapping of hardware signals to Xbox 360 button “hints”. Speaking pragmatically, the confusion surrounding the mapping of the DualShock 4’s center buttons to START/BACK was my biggest issue and I think (?) I have that resolved now.)