Why does the browser only recognize my controller after I press a button?
Because the gamepadconnected event usually requires an initial interaction on the hardware before the browser exposes the device to the page, a protection against sites silently detecting which peripherals are plugged in without any action from the person.
Why do the stick axes never show exactly 0 at rest?
Because the stick's internal potentiometer carries electrical noise and mechanical play that prevent a perfectly centered reading; that is why games ignore any axis value below a configured dead zone, typically between 0.1 and 0.15, before moving the character.
Does the button index on screen match the label printed on my controller?
Only when mapping is "standard": in that case index 0 is always the bottom button of the right cluster, regardless of brand, but a controller with an empty mapping string may order its buttons differently, so the index alone will not always match the printed label.
Why do the axes range from -1 to 1 instead of 0 to 100?
Because the Gamepad API represents each axis as a position relative to the center of the stick's travel, where 0 is the exact center, -1 is the furthest left or up, and 1 is the furthest right or down, a symmetric range that is easier to use in direction calculations.