lib/gamepad.ts
Browser slot indices
Never hardcode pads[0] — indices are assigned by the OS
48/** Read all four browser slots (index is not connection order). */49export function pollAllGamepadSlots(): GamepadState[] {50 const pads = navigator.getGamepads();51 return Array.from({ length: 4 }, (_, slotIndex) => {52 const gp = pads[slotIndex];53 if (gp?.connected) return parseGamepad(gp);54 return emptyGamepadState(slotIndex);55 });56}57 58export function getPrimaryGamepad(states: GamepadState[]): GamepadState {59 return states.find((s) => s.connected) ?? emptyGamepadState(0);60}