Search Unity

InControl - input and cross platform controller support for Unity, made easy!

Discussion in 'Assets and Asset Store' started by pbhogan, Jul 18, 2014.

  1. WildcardMoo

    WildcardMoo

    Joined:
    Aug 28, 2020
    Posts:
    19
    Awesome, thank you for the quick replies!
     
  2. AlbertZR

    AlbertZR

    Joined:
    Feb 21, 2017
    Posts:
    7
    Hello.
    My xbox controller on Windows works as it should. But on Androyd the buttons are not correctly defined. Instead of A, now i need to press X, instead of B, press Y.
    Perhaps I missed something in the settings?

    UPD Found out that this happens if use a new input system
     
    Last edited: Dec 13, 2021
  3. _geo__

    _geo__

    Joined:
    Feb 26, 2014
    Posts:
    1,338
    Hi,
    I am on InControl 1.8.4 and it works fine in the editor and standablone (.exe) builds on windows. However if I build for UWP the controller name of my xbox controller (Xbox Wireless Controller) suddenly returns "uwp controller" instead of a string with "xbox" in it.

    I am looking for a way to dectect which controller is connected to dispay the correct button names (X, Y, A, B) and this throws my code off.

    Here is the code I used (neither native nor InputX are on):
    Code (CSharp):
    1. InControl.InputManager.ActiveDevice.Name
    Is this by design that the controller name returns "uwp controller" in UWP builds?

    Thanks
     
  4. pbhogan

    pbhogan

    Joined:
    Aug 17, 2012
    Posts:
    384
    Try using
    Code (CSharp):
    1. InControl.InputManager.ActiveDevice.DeviceStyle == InputDeviceStyle.XboxOne
    instead.

    Also, you could just assume in a UWP build that the controller is an Xbox controller as nothing else works in UWP.
     
    protopop and _geo__ like this.
  5. mike_ludoko

    mike_ludoko

    Joined:
    Feb 4, 2015
    Posts:
    7
    Hey pbhogan, thanks again as always for the work with the plugin. This is the return of more Mac-specific questions, but I was testing out the Dualshock on Mac and it looks like the touchpad isn't supported when using the MFi profiles. Is there any chance for InControl to support the GCDualShockGamePad profile (https://developer.apple.com/documentation/gamecontroller/gcdualshockgamepad?language=objc) or maybe I'm misunderstanding the InControl Mac setup.
     
  6. pbhogan

    pbhogan

    Joined:
    Aug 17, 2012
    Posts:
    384
    It's unlikely. InControl doesn't have anything to map it to—it cannot, for example, map it as mouse input, touch input or a cursor. The best I could see happening is just exposing the raw values in some way. But it's so non-standard, the usefulness is questionable.

    Hot take incoming: personally, I think it's best practice to design your game for the common set of controller inputs. If you're explicitly making something specifically for the PS console, that's a different matter and the platform APIs exist for that, but on desktops at best it's a niche feature and at worst it's hiding the experience of the majority of players from you as the developer/designer if you're using it as your favorite controller. ¯\_(ツ)_/¯
     
    Willbkool_FPCS likes this.
  7. techniquea2z

    techniquea2z

    Joined:
    Jun 3, 2017
    Posts:
    37
    Just chiming in real quick to say what a joy it's been to work with InControl. I had the choice of using the new Input System or this -- and I haven't regretted my choice once.

    Great work!
     
  8. XxPleYxX

    XxPleYxX

    Joined:
    Jul 26, 2011
    Posts:
    41
    One question, do you know when touch support will be ready for the new Unity input system?
     
  9. _geo__

    _geo__

    Joined:
    Feb 26, 2014
    Posts:
    1,338
    Hi,
    I have been struggling with getting the Xbox button on the xBox Controller to work (the big illuminated one in the middle).

    I tried querying it with:
    Code (CSharp):
    1. InControl.InputManager.ActiveDevice.GetControl(InControl.InputControlType.Home).WasReleased
    2. InControl.InputManager.ActiveDevice.GetControl(InControl.InputControlType.Command).WasReleased
    But neither of the two seems to pick it up.

    I then tried to log it with
    Code (CSharp):
    1. InControl.InputManager.ActiveDevice.GetFirstPressedButton();
    But this only keeps returning "None" (except for all the other buttons, which work fine).

    Also tried this as a last resort. But not even that worked
    Code (CSharp):
    1. if (Input.GetKeyDown(KeyCode.JoystickButton0)) Debug.Log("j b0");
    2. if (Input.GetKeyDown(KeyCode.JoystickButton1)) Debug.Log("j b1");
    3. if (Input.GetKeyDown(KeyCode.JoystickButton2)) Debug.Log("j b2");
    4. if (Input.GetKeyDown(KeyCode.JoystickButton3)) Debug.Log("j b3");
    5. if (Input.GetKeyDown(KeyCode.JoystickButton4)) Debug.Log("j b4");
    6. if (Input.GetKeyDown(KeyCode.JoystickButton5)) Debug.Log("j b5");
    7. if (Input.GetKeyDown(KeyCode.JoystickButton6)) Debug.Log("j b6");
    8. if (Input.GetKeyDown(KeyCode.JoystickButton7)) Debug.Log("j b7");
    9. if (Input.GetKeyDown(KeyCode.JoystickButton8)) Debug.Log("j b8");
    10. if (Input.GetKeyDown(KeyCode.JoystickButton9)) Debug.Log("j b9");
    11. if (Input.GetKeyDown(KeyCode.JoystickButton10)) Debug.Log("j b10");
    12. if (Input.GetKeyDown(KeyCode.JoystickButton11)) Debug.Log("j b11");
    13. if (Input.GetKeyDown(KeyCode.JoystickButton12)) Debug.Log("j b12");
    14. if (Input.GetKeyDown(KeyCode.JoystickButton13)) Debug.Log("j b13");
    15. if (Input.GetKeyDown(KeyCode.JoystickButton14)) Debug.Log("j b14");
    16. if (Input.GetKeyDown(KeyCode.JoystickButton15)) Debug.Log("j b15");
    17. if (Input.GetKeyDown(KeyCode.JoystickButton16)) Debug.Log("j b16");
    18. if (Input.GetKeyDown(KeyCode.JoystickButton17)) Debug.Log("j b17");
    19. if (Input.GetKeyDown(KeyCode.JoystickButton18)) Debug.Log("j b18");
    20. if (Input.GetKeyDown(KeyCode.JoystickButton19)) Debug.Log("j b19");
    21. if (Input.anyKeyDown) Debug.Log("any"); // nope, not even that works
    What I am trying to achieve is detecting a press to the button which opens the steam overlay. By default that's the "xbox" button on the xBox controller. I am using the old Input System.

    The hardware itself works because the Steam Overlay or the Windows Game Bar react to the button press just fine.

    Maybe I am missing something?
     
    Last edited: Apr 7, 2022
  10. binster

    binster

    Joined:
    Oct 16, 2012
    Posts:
    13
    Hiya, thanks for making and supporting InControl!

    I want to be able to show or hide the mouse in game depending on what the last detected input was - if it was mouse, show the mouse, if it was anything else (keyboard, gamepad, etc) hide the mouse.

    I'm currently checking Input.GetAxis("Mouse X") and similar for the Y axis to find out if the mouse was moved. For non-mouse input it seems to be trickier.

    I know there is InputManager.ActiveDevice but I can't work out how to accomplish what I want - is this the correct thing to be checking? Does a mouse or a keyboard count as a 'device'? If so, how do I check? From what I can tell, BindingSource can be found from an Action, but I don't want to have to check each possible action's last use device's binding source.

    Hope you can help!
     
  11. manurocker95

    manurocker95

    Joined:
    Jun 14, 2016
    Posts:
    210
    Quick question. Is there support for xbox controller on Linux? Because after testing a new project on the Steam Deck (1.8.8) I would say no, but I have other projects with old versions of InControl (1.8.4 iirc) and they work just fine on SteamOS. Any idea?
     
  12. AlbertZR

    AlbertZR

    Joined:
    Feb 21, 2017
    Posts:
    7
    What is an easy way to make the player be able to adjust the size of the controllers?

    upload_2022-4-26_13-16-59.png
     
  13. atrivedi7

    atrivedi7

    Joined:
    Jul 25, 2013
    Posts:
    92
    @pbhogan Have you heard of something called vJoy? I'm hearing reports of people claiming they have to turn off vJoy before our game recognizes input.

    We have the game setup where we use `Input.anyKeyDown || InputManager.ActiveDevice.AnyButtonIsPressed;` at the "Press any key" prompt and users are able to get through that. After that, however, where we are fully using InControl, they aren't able to interact with the game. Have you heard of such an issue?

    Thanks in advance :)
     
  14. stroibot

    stroibot

    Joined:
    Feb 15, 2017
    Posts:
    91
    How to make key combinations? Let's say I need to press LB+RB for the gamepad, how can I achieve this with your package?
     
  15. Blepius

    Blepius

    Joined:
    Mar 9, 2021
    Posts:
    68
    Hello all,

    I'm trying to figure out how to have MouseLook and RightStick bound to the same PlayerAction, yet have different sensitivities.

    In New Input, there's an option for pre-processing modifiers, is there a feature like that for InControl?

    (I see that this question has been asked already, but I don't see an answer)
     
  16. Blepius

    Blepius

    Joined:
    Mar 9, 2021
    Posts:
    68
    This is demonstrated in the examples, look inside PlayerActions.cs.
     
  17. pbhogan

    pbhogan

    Joined:
    Aug 17, 2012
    Posts:
    384
    No, unfortunately there isn’t a preprocessor modifier for bindings. If what you’re trying to do is adjust the mouse sensitivity, there are some public static fields on MouseBindingSource you can adjust at runtime.

    It is, however, possible to make your own binding sources that can be bound to actions. Just look at some of the existing ones. The main limitation of making your own is they cannot be saved/loaded without further modifying InControl. But for hardcoded bindings, this could be an option.
     
  18. Blepius

    Blepius

    Joined:
    Mar 9, 2021
    Posts:
    68
    Thank you for the quick reply! I'll read more about the public static fields on MouseBindingSource, that sounds like that might be a good solution.

    I've been trying to make sense of the various input systems out there, apparently New Input has serious concerns regarding performance on mobile devices (link1, link2)?

    I'm glad this asset is out there for us to use!
     
  19. ivanlianto59

    ivanlianto59

    Joined:
    Aug 7, 2021
    Posts:
    2
    Hello, i want to ask. Can i do input any key in InControl ? for the example like "Press any key to continue"
     
  20. pbhogan

    pbhogan

    Joined:
    Aug 17, 2012
    Posts:
    384
    There is InputManager.AnyKeyIsPressed for keyboard input.

    For controllers there is inputDevice.AnyButtonIsPressed, .AnyButtonWasPressed and .AnyButtonWasReleased
     
  21. stroibot

    stroibot

    Joined:
    Feb 15, 2017
    Posts:
    91
    Code (CSharp):
    1. playerActions.Fire.AddDefaultBinding( Key.A );
    2.             playerActions.Fire.AddDefaultBinding( InputControlType.Action1 );
    This is combination?
     
  22. WryMim

    WryMim

    Joined:
    Mar 16, 2019
    Posts:
    69
    Good afternoon! There was a problem. How do I cancel a tap? That is, what would
    Code (CSharp):
    1. Actions.Jump.IsPressed = false;
    (despite the fact that the player can hold the space bar). That is, cancel the hold until the next press? I tried all the options, none of them works. ClearInputState - does not work.

    I have two actions:
    PlayerAction Jump;
    PlayerAction Continue;

    Both actions have the same keyboard - space:
    Jump.AddDefaultBindBinding(Key.Space);

    But I want Continue to work, and at this point it did not work / canceled Jump.

    Action.Jump.Enabled = true / false - also does not work.

    Since when Enabled = true player can continue to hold the space, and you have Pressed ignored whether the click was originally pressed
     
  23. pbhogan

    pbhogan

    Joined:
    Aug 17, 2012
    Posts:
    384
    This is less of an input question and more of a logic of what you do with the input state question. InControl's job is to give you the actual input state at all times. Your job is to turn that into what you want your game to do, not tell the input state to be something it's not. You should consider input state essentially read only.

    So, in your example, you could do something like check the state of Jump and check whether you want to act on it. If you wish to cancel/ignore it, do what you need to cancel/ignore your jump response and set your own boolean variable telling your logic to stop checking Jump until further notice. You could then clear that variable once it detects Jump is no longer pressed.
     
  24. unity_21E81F6F6A0FEC3822A0

    unity_21E81F6F6A0FEC3822A0

    Joined:
    Oct 11, 2021
    Posts:
    1
    Hi, I want to ask how can I change the button via script?
    For Example in PS4 Controller, I want "X" to work as "O" and vice versa
     
  25. pbhogan

    pbhogan

    Joined:
    Aug 17, 2012
    Posts:
    384
    I would recommend you use the bindings API (PlayerAction / PlayerActionSet) and bind whichever button you want to the action.
    You can’t switch buttons around on devices. InControl’s job is to tell you the state of the buttons as they are on the device. You can choose to do something different with those buttons and you can use inputDevice.DeviceStyle to detect what style of device it is. But it would be weird to treat one controller different over another in terms of button positions. It may make sense to do so on console vs PC, but users expect different controllers on the same platform to behave the same positionally. It would probably be better to use the bindings API (PlayerAction / PlayerActionSet) and allow user rebinding of controls or alternate control schemes if you want to have customizability.
     
  26. stroibot

    stroibot

    Joined:
    Feb 15, 2017
    Posts:
    91
    Ok, I found `KeyCombo` but it is not compatible with `InputControlType`. How can I bind action to a combination of, lets say, Left Trigger + Right Trigger?
     
  27. Spikebor

    Spikebor

    Joined:
    May 30, 2019
    Posts:
    281
    Hello, I've just implemented InControl to my project today.
    I've tested out all the .WasPressed, .WasRepeat , .WasRelease all those 3 can't return if an input get "Hold" unlike Unity's GetKey.
    Why can't we have this ? I can work around by setting a bool holdCheck to true if one input wasPressed, then until it got wasRelease it will remain true, so this holdCheck is cool. But it does feel like extra steps for a common use case.
    What do you think ?
     
  28. pbhogan

    pbhogan

    Joined:
    Aug 17, 2012
    Posts:
    384
    I might not understand you correctly, but it sounds like what you should be using is .IsPressed which returns true as long as the control is held down.
     
  29. Spikebor

    Spikebor

    Joined:
    May 30, 2019
    Posts:
    281
    wow thank you ! sorry for silly question haha
     
  30. SirMiguel

    SirMiguel

    Joined:
    May 8, 2018
    Posts:
    3
    Hello, i have similar issue i have updated InControl from 1.6.17 build 9142 to 1.8.8 build 9375 and now
    InputManager.ActiveDevice.LeftStickLeft.IsPressed is returning true for solid 1 sec after key on the keyboard released. I have deleted old InControl directory and have imported new version but with the same results. On old version it is working correctly any idea why is it happening ?
     
    Last edited: Aug 30, 2022
  31. adamgryu

    adamgryu

    Joined:
    Mar 1, 2014
    Posts:
    188
    Is there a way to get InControl to work with "Enter Play Mode" settings? I don't see
    RuntimeInitializeOnLoadMethod
    implemented anywhere.

    EDIT: Actually, it seems to work fine! There was an error in my own code.
     
    Last edited: Sep 9, 2022
  32. rgsoftware

    rgsoftware

    Joined:
    Oct 25, 2017
    Posts:
    3
    Hello, this question was asked before, but I don't seem to find an answer: how to make "layered" controls?
    My situation is simple: there is a whole-screen tap area and some touch buttons drawn on the screen. When I tap on the button, I get two events registered. Probably, I can go through TouchManager and filter out the screen tap, but is there any cleaner way to achieve it?
     
  33. RemDust

    RemDust

    Joined:
    Aug 28, 2015
    Posts:
    432
    Hello there ! Long time no see :)

    Is there any way/method to "clean inputs" or "reset input" ?
    I'd like to implement a solution like this one
    to make sure I don't have lags or double inputs in my controlers.

    Thank you so much !
     
  34. dr4

    dr4

    Joined:
    Jan 14, 2015
    Posts:
    108
    thanks for this awesome asset @pbhogan , When the user loads the game we have a text that shows the bindings, this switch to keyboard or controller depending on what the player is playing with, but of course if the user does not touch anything on load we don't know if the player was using keyboard or controller so we don't know what to display, saving and loading is not an issue but what exactly do we need to save and load so incontrol knows exactly what the player was using the last time and show the correct bindings, we tried with 'LastDeviceClass' and 'LastDeviceStyle' to no success
     
    Last edited: Sep 28, 2022
  35. lilacsky824

    lilacsky824

    Joined:
    May 19, 2018
    Posts:
    171
    Hi!
    I found when I use Incontrol with InputSystem action buttons' mapping is different.
    Action 1 is mapping to ButtonWest and Action 2 is mapping to ButtonNorth, etc.
    Is this a bug?
    Thank you! :)
     
    Last edited: Oct 4, 2022
  36. Spikebor

    Spikebor

    Joined:
    May 30, 2019
    Posts:
    281
    Can we use InControl with new Unity UI Element (UI Toolkit) ?
    I can't seem to interact with UI Elements.
     
  37. Spikebor

    Spikebor

    Joined:
    May 30, 2019
    Posts:
    281
    My bad, sorry for the unrelated question. My cursor got locked and not visible because of a stupid camera script that set like that Every Frame.
    damn.
     
  38. unity_PwXfMGmzHmDcsw

    unity_PwXfMGmzHmDcsw

    Joined:
    Jul 7, 2019
    Posts:
    6
    How does one display the current (default) binding of player action?

    I've tried

    Actions.Attack.FindBinding(Actions.Attack.Bindings);
    Actions.Attack.BindingSource.Name.ToString();
    Actions.Attack.ToString();
     
  39. pbhogan

    pbhogan

    Joined:
    Aug 17, 2012
    Posts:
    384
    PlayerActions can have more than one binding, so what you're looking for is Actions.Attack.Bindings which is a ReadOnlyCollection<BindingSource> you can iterate over (or just grab the first one if you're sure there would ever only be one).

    BindingSource could be one of several types, so you could look through Bindings to find keyboard bindings or device (controller) bindings, etc. depending on what you want to display.

    You can look through the API reference for more detail.
     
    unity_PwXfMGmzHmDcsw likes this.
  40. pbhogan

    pbhogan

    Joined:
    Aug 17, 2012
    Posts:
    384
    There is really no correct answer here. Until InControl gets input, it cannot possibly know what the user has pressed (because they haven't). A reasonable workaround is to require some kind of input before showing this information, whether it be a "Press any button or key to start" or simply navigating the menu.
     
  41. pbhogan

    pbhogan

    Joined:
    Aug 17, 2012
    Posts:
    384
    Yes. I'll get that fixed in the next update.

    You can fix it yourself in Source/UnityNew/NewUnityInputDevice.cs lines 90-93:

    Code (CSharp):
    1.  
    2. UpdateWithState( InputControlType.Action1, UnityGamepad.buttonSouth.isPressed, updateTick, updateTick );
    3. UpdateWithState( InputControlType.Action2, UnityGamepad.buttonEast.isPressed, updateTick, updateTick );
    4. UpdateWithState( InputControlType.Action3, UnityGamepad.buttonWest.isPressed, updateTick, updateTick );
    5. UpdateWithState( InputControlType.Action4, UnityGamepad.buttonNorth.isPressed, updateTick, updateTick );
    6.  
     
    lilacsky824 likes this.
  42. unity_PwXfMGmzHmDcsw

    unity_PwXfMGmzHmDcsw

    Joined:
    Jul 7, 2019
    Posts:
    6
    My fault. The binding example was actually super useful for figuring this out
    Attack.text = playerActions.Actions[0].Bindings[0].Name.ToString();
     
    Last edited: Dec 6, 2022
  43. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    4,196
    I've noticed some warnings?/errors? in the Player log when running a build of my game on MacOS. I don't believe this was showing up under an older MacOS, but I'm using Monterey now. I see this in my log:

    I'm not sure if there is any practical impact on the build because of this, but I figured I'd mention it. This is on MacOS Monterey, using Unity 2021.3.16.
     
    Last edited: Dec 28, 2022
  44. Spikebor

    Spikebor

    Joined:
    May 30, 2019
    Posts:
    281
    Hello, yesterday I was just playing fine. Today I can't, and I debug it and it say
    Code (CSharp):
    1.             var activeDevice = InputManager.ActiveDevice;
    2.             Debug.LogFormat("Active Input Device :" + activeDevice.Name);
    3.  
    Active Input Device :None
    What can I do now?
    My device is mouse & keyboard

    Update - 01
    Sorry, I just reset the inputs setup data (PlayerActionSet) and it's working now.
    So this is user fault. Investigating.

    Update - 02
    Found it! Turn out after I move my scripts in Unity which Unity locked and I have to move by using Explorer, then those scripts are grayed out. One of those do saving/loading my player data (including Inputs data).
    Reimport fix them.
     
    Last edited: Feb 10, 2023
  45. unity_PwXfMGmzHmDcsw

    unity_PwXfMGmzHmDcsw

    Joined:
    Jul 7, 2019
    Posts:
    6
    Even with AllowDuplicateBindingsPerSet = true, something strange is happening.

    If I execute playerActions.LightAttack.ListenForBindingReplacing(playerActions.LightAttack.Bindings[0]);
    and choose a button/key currently bound to Heavy Attack

    playerActions.HeavyAttack.Binding[0] will return an out-of-index error.

    The result I would like is to have Light Attack's old binding replace HeavyAttacking's binding but I can't find inside PlayerActions.cs when HeavyAttack's binding is being removed, let alone modify it.

    The Debug.LogWarnings inside the public bool ReplaceBinding(...) never print

    I can share more code if this is unclear.
     
  46. dr4

    dr4

    Joined:
    Jan 14, 2015
    Posts:
    108
    Hi, I sent an email yesterday but this is quite urgent for us so trying here too: we have been using Incontrol for years while developing, upon release we find ourselves being bombarded with negative reviews by people saying that their controllers do not work (and controller is the preferred device to play our game) they seem to be generic controllers, is there something we can do except ask each user to map each controller on their own? We bought this plugin expecting it to solve all our controllers issues but it does look like there is a lot it cannot handle
     
    unity_PwXfMGmzHmDcsw and rmb303 like this.
  47. dadamsj1

    dadamsj1

    Joined:
    Jul 25, 2017
    Posts:
    42
    Did you release on Steam? If so, you'll need to setup a default configuration on Steamworks and InControl should handle the controllers as best as possible.
     
  48. dr4

    dr4

    Joined:
    Jan 14, 2015
    Posts:
    108
    Steam yes, I wasn't aware that incontrol needed extra configuration on Steam itself, nothing in their page about that as far as I can tell, but just did a quick search and I think I know what you mean, thanks for the clue! I couldn't get a single word from the incontrol team
     
  49. Virus610

    Virus610

    Joined:
    Sep 6, 2014
    Posts:
    1
    Hopefully final edit:
    Looks like I can regain gamepad control in Unity Editor if I just close Steam while I'm working. Kind of a ridiculous workaround, considering how allegedly 'easy' it is to fix for some people.

    The only other thing I've noticed is if I completely close Unity and kill the Steam process (Since my game never properly stops, even after closing Unity), then open both of them, then I can use my gamepad once. But once I stop and start the game again in Unity, it stops working again. Very strange.

    ___________
    Original Post:
    ¯¯¯¯¯¯¯¯¯¯¯

    I'm having the opposite problem of people above. Upon adding the Steamworks API and setting up the default "Generic Gamepad" Steam Input on my app page, the only way I can use a gamepad anymore is through the Steam build, or if I build an exe and don't have the steam_appid.txt file in my build folder.

    Seems input capability is tied to the overlay, which I can't seem to get working in Unity, meaning I won't be able to debug in Unity with the gamepad? Everybody and their dog online says "Just put your appid in the steam_appid.txt file", but that literally accomplishes nothing for me in editor, and actively un-accomplishes gamepad support with the built executable.

    What on earth am I doing wrong here?

    Probably related: I'm getting a bajillion "Callback dispatcher is not initialized" errors when I run my game in-editor, and google has been useless at pointing me in the direction of how to fix those.

    Edit: The bajillion errors stopped after I restarted Unity, but I still can't use gamepad in-editor anymore.

    I thought I fixed it, because gamepad worked all of once, but once I stopped and started my game in editor, the gamepad stopped working again. Really not sure what's going on here...
     
    Last edited: May 22, 2023
    WildcardMoo likes this.
  50. combatsheep

    combatsheep

    Joined:
    Jan 30, 2015
    Posts:
    133
    Hi,

    I set up the PS4 DualShock controller based on the Bindings scenes found in Examples>Bindings. For iOS, the assignments such as

    playerActions.HB.AddDefaultBinding( InputControlType.RightTrigger ); playerActions.Option.AddDefaultBinding( InputControlType.Options ); playerActions.RLeft.AddDefaultBinding( InputControlType.RightStickLeft );

    work fine, but on Android with the same game controller, the button assignments are completely different.

    Is there a way to switch this for Android?
    Thank you.