port gamepad API

Still haven't tested it. Thoughts?