GameInput JS
I had created this library for some projects before I really started using ImpactJS, but it also includes a plugin for ImpactJS to use it.

The ImpactJS plugin hooks into the ig.input similar to how other libraries do, and allows ImpactJS handle keyboard instead of its own fallback handling.

I'm using it on my in-development games and it nicely detects the plugged-in gamepad and sets the correct icon, mapping, and button symbols.

I bought a lot of controllers, though I haven't tested them all on Windows or macOS yet, being mostly a Linux guy. I'll get around to testing everything I own on all OSes, and you're all free to contribute mappings.

Funny enough, this makes my HTML5 game support more controllers than a lot of native games (who often only support Xbox 360 and Xbox 360-pretending gamepads). Love ImpactJS and HTML5 games. :D