Device profiles map supported controllers on various platforms to a strict set of named controls that can be relied upon to be present. Physical positions (particularly for action buttons) will match across devices for uniformity.
LeftStickLeft, LeftStickRight, LeftStickUp, LeftStickDown, LeftStickButton
RightStickLeft, RightStickRight, RightStickUp, RightStickDown, RightStickButton
DPadLeft, DPadRight, DPadUp, DPadDown
Action1, Action2, Action3, Action4
Note: the API makes little distinction between analog and button controls, so both a
float value and
bool state can be queried for any input.
Of course, there are a few devices which may only have some of these controls, but wherever possible they are mapped. You can generally rely on these all being available.
You’ll notice no other specific face buttons are in the standard set, simply because there are so many of them (start, back, select, option, system, menu, etc.) and every controller is different. Some controllers only have a single “menu” button. These buttons are mapped to non-standard controls, but they have also all been mapped to a single alias called
A full list of possible mapped controls (both standard and non-standard) are represented by the
Non-standard controls can be queried just like standard controls, but be aware they are controller specific. Using them is not recommended unless you plan to only support a specific controller.
Unsupported or unknown devices can be used, however their default mappings are utterly unpredictable. From the API, inputs for unsupported devices will appear as
Analog9. Do with them what you will.