cancel
Showing results for 
Search instead for 
Did you mean: 

Controller Button Mappings

drash
Heroic Explorer
I could have sworn there was already a thread for this, but couldn't find it anywhere. So, here goes.

In my Unity apps I use an input layer that requires me to map from an HID to a set of button mappings, and then the rest of my app just deals with with the device-agnostic things like Left Bumper, Start Button, etc. I know a lot of developers out there do something similar, and a few of the third-party input solutions do this as well. There's only one gotcha -- developers are responsible for ensuring setting up button mappings (or profiles) for a reasonable variety of controllers.

As far as I can tell, the most-used controller on Gear VR is the Samsung EI-GP20 Gamepad that optionally comes bundled with the Gear VR. That's good news for the developers that so far aimed to support that at a minimum, but as far as I can tell is a variety of other semi-popular gamepads in use as well:


  • Moga Pro Power

  • Moga Hero

  • PS3 Controller

  • Gamestop Gamepad

  • Moga Pro

  • Steelseries Free

  • ipega (I think there's a few different versions, not sure which ones people actually use)


So far, I've ordered and tested 6 different controllers now for both the desktop and for Android, and this helps because most of their mappings vary, but this is clearly not a future-proof way to go. Am I going to have to keep buying every controller to find out their HID and mappings? 🙂 So until I take a different approach, at the very least I would like to throw out there some of the button mappings I've picked up from testing physical controllers, and perhaps others could do the same?

----

1.
"Gamestop Gamepad" aka "Red Samurai Wireless Controller for Android Tablets". I heard this cheap gamepad mentioned several times lately. Dirt cheap. And yet it feels great in the hand and all buttons feel very usable. Solid choice. It has two modes, one that seems to send keyboard commands, and one that actually acts as a normal bluetooth gamepad (Mode G).

Here are the button mappings for Mode G.

HID: "GS gamepad"

Button 1 - Button 0
Button 2 - Button 1
Button 3 - Button 2
Button 4 - Button 3
Left Bumper - Button 4
Right Bumper - Button 5
Left Trigger - Button 6
Right Trigger - Button 7
Left Stick Button - Button 8
Right Stick Button - Button 9
Start - Button 10 (says "Enter" on the controller)
Select/Back - Button 11 (says "Escape" on the controller)

Left Stick X - Analog 0
Left Stick Y - Analog 1
Right Stick X - Analog 2
Right Stick Y - Analog 3
Dpad Left/Right - Analog 4
Dpad Up/Down - Analog 5

----

2.
Moga Pro Power - This one holds a charge that you can use to recharge your Android device. Very nice controller, quality is top-notch, but pretty expensive. Also has two modes, one that is specific to Moga games, and one where it acts as a normal gamepad (Mode B).

Here are the button mappings for Mode B:

HID: "Moga Pro 2 HID"

The button mappings are exactly the same as the Gamestop Gamepad, except that the visual labels for the Start/Select buttons actually say Start and Select, and it doesn't seem like the Select button works in HID mode. Not 100% sure about this.

----

3.
Amazon Fire Game Controller (not the same as the Amazon Fire TV Remote).

HID: "Amazon Fire Game Controller"

Button A - Button 0
Button B - Button 1
Button X - Button 2
Button Y - Button 3
Left Bumper - Button 4
Right Bumper - Button 5
Left Stick Button - Button 8
Right Stick Button - Button 9
Back - maps to the "Escape" keycode

Left Stick X - Analog 0
Left Stick Y - Analog 1
Right Stick X - Analog 2
Right Stick Y - Analog 3
Dpad Left/Right - Analog 4
Dpad Up/Down - Analog 5
Left Trigger - Analog12
Right Trigger - Analog11

----

4.
SteelSeries Stratus XL (given out en masse at Oculus Connect 2)

HID: "SteelSeries Stratus XL"

Button "A" - Button 0
Button "B" - Button 1
Button "X" - Button 2
Button "Y" - Button 3
Left Bumper - Button 4
Right Bumper - Button 5
Left Stick Button - Button 8
Right Stick Button - Button 9
Start Button - Button 10

Left Stick X - Analog 0
Left Stick Y - Analog 1
Right Stick X - Analog 2
Right Stick Y - Analog 3
Dpad Left/Right - Analog 4
Dpad Up/Down - Analog 5
Left Trigger - Analog12
Right Trigger - Analog11

----
NOTE: The Samsung Gamepad does not have triggers, nor does it have stick buttons (pushing in the thumbsticks), so you may want to keep that in mind when designing a control scheme with wide gamepad support.

Please post if you have requests, or other mappings to share!
  • Titans of Space PLUS for Quest is now available on DrashVR.com
27 REPLIES 27

cybereality
Grand Champion
Thanks, this is a great thread.
AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV

v3rm33r
Honored Guest
Thanks for this, am still getting my head around a single controller, but will post the mappings later (Moga Pro (not Power)).

HomerS66
Expert Protege
Thanks, great help as always.

drash
Heroic Explorer
"v3rm33r" wrote:
will post the mappings later (Moga Pro (not Power)).

That would be completely awesome, thank you in advance!
  • Titans of Space PLUS for Quest is now available on DrashVR.com

drash
Heroic Explorer
Thanks for the great info and reference, Steve. Haven't looked at the new sample assets since Unity 4.2!
  • Titans of Space PLUS for Quest is now available on DrashVR.com

thorohtech
Honored Guest
Nice write but I cannot even get my head around on how to enable the EI-GP20 in my Gear VR applications.

IronMan
Honored Guest
Great post..Perhaps this should be made sticky? A lot of people are buying the Amazon Fire TV controller for GearVR too.

cybereality
Grand Champion
Yeah, made it a sticky.
AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV

drash
Heroic Explorer
Thanks Cyber!

Oddly, I think there's a post by v3rm33r that has gone missing a few posts up, which had some good information on mobile controller support (via Unity 4.6+ standard assets) + Moga support (via Unity asset by Moga).

"thorohtech" wrote:
Nice write but I cannot even get my head around on how to enable the EI-GP20 in my Gear VR applications.

If you're only looking to support the Samsung Gamepad, you should be able to use the Input settings that comes with some of the Mobile SDK samples, and then use OVRGamepadController script in OVR/Scripts/Util. Haven't played with this lately though.

"IronMan" wrote:
A lot of people are buying the Amazon Fire TV controller for GearVR too.

Since you mentioned it, for those not working with an input layer that comes with Amazon Fire TV controller support built-in, here are the mappings for that one (I haven't personally verified these, but someone else I know has confirmed it to be working normally):

HID: "Amazon Fire Game Controller"

Button A - Button 0
Button B - Button 1
Button X - Button 2
Button Y - Button 3
Left Bumper - Button 4
Right Bumper - Button 5
Left Trigger - Button 6
Right Trigger - Button 7
Left Stick Button - Button 8
Right Stick Button - Button 9
Back - maps to the "Escape" keycode

Left Stick X - Analog 0
Left Stick Y - Analog 1
Right Stick X - Analog 2
Right Stick Y - Analog 3
Dpad Left/Right - Analog 4
Dpad Up/Down - Analog 5
Left Trigger - Analog12
Right Trigger - Analog11

Updated first post with Amazon Fire Game Controller mappings.
  • Titans of Space PLUS for Quest is now available on DrashVR.com