Currently the spec requires implementations to express the set of controls on a controller in two arrays: buttons and axes. All of the platform APIs I've used expose a set of buttons and a set of axes, so this makes sense. However, there are also frequently some controls that aren't exposed as either of those, so some internal mapping is required. For example, d-pads are frequently exposed as a "POV hat" (since the USB HID was written in the days of actual flight-stick like joysticks).
I think we need to have some spec text that speaks to how to put these controls into the list of buttons/axes so that the list of controls are consistent across browsers (at least for the same OS+driver combination).
Moved to https://github.com/w3c/gamepad/issues/6