Ah, wait, the "thinks keys are joystick buttons" is because Input.GetAxis("Player1_Horizontal") looks at a virtual axis, which responds to either keys or sticks. That's the same within Unity. I fixed that by defining another axis to look at.
The other problems appear to be solved by some variant of "turn it off and back on again", except for Ubuntu Firefox mapping the buttons differently from MacOS Firefox.