Search Unity

Rewired - Advanced Input for Unity

Discussion in 'Assets and Asset Store' started by guavaman, Sep 25, 2014.

  1. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    You don't state it, but I will guess you are using the keyboard. See this:

    https://guavaman.com/projects/rewir...#windows-editor-keyboard-keys-stuck-raw-input
     
  2. the_mr_matt

    the_mr_matt

    Joined:
    Jul 21, 2015
    Posts:
    124
    Hello!

    I'm creating a basic help menu to list some keybinds for certain controls. Some of these are axes and have positive/negative mappings. I've looked at this but it doesn't show how to differentiate between a positive/negative axis.
     
  3. dotsquid

    dotsquid

    Joined:
    Aug 11, 2016
    Posts:
    224
    Hi @guavaman
    Is it possible that you implement
    SwitchGamepadExtension.SetVibration
    which takes byte[] (content of bnvib file) and extra parameter(-s) for vibration modulation (gain and pitch)?
    There is a corresponding sample with a native plugin in NintendoSDK which does what I need. However when I use this plugin the vibration is too subtle and the amplitude is definitely not at its maximum and I can't find the reason of that. Maybe you could find out why and implement this functionality directly into Rewired?
     
  4. flashframe

    flashframe

    Joined:
    Feb 10, 2015
    Posts:
    798
  5. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    Axis Range describes which portion of the axis is bound to the Action:
    https://guavaman.com/projects/rewir...html/P_Rewired_ActionElementMap_axisRange.htm

    Axis Contribution describes the effect on the Action's final value:
    https://guavaman.com/projects/rewir...Rewired_ActionElementMap_axisContribution.htm
     
  6. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    @dotsquid

    The Nintendo Switch SDK is covered by NDA. I am not allowed to post information covered under NDA in a public forum. Use the support form on the website for Nintendo Switch support.
     
    Last edited: Jun 22, 2020
  7. nickfourtimes

    nickfourtimes

    Joined:
    Oct 13, 2010
    Posts:
    219
    Heya,

    We're getting reports that the Nimbus+ MFi controller isn't working in our game, though I've got mappings for "[T] Gamepad Template," "Unknown Controller," and "SteelSeries Nimbus (OSX)" laid out explicitly in Rewired.

    It looks like the Nimbus+ was just launched last month, so is it just a matter of waiting for a new Rewired version with new compatibility? Or should the Gamepad Template/Unknown Controller mappings cover it... pointing to some other problem our Nimbus+ players are encountering?
     
  8. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    From the documentation:

    https://guavaman.com/projects/rewired/docs/ControllerTemplates.html

    Gamepad Template:

    The Gamepad Template allows you to make a map which will cover all of the gamepads listed here.

    NOTE: Do not be confused and assume that the Gamepad Template will apply to and work with every gamepad in existence. The Template only applies to and works with recognized gamepads that have controller definitions. There is no possible way to create a system that can automatically recognize and map all gamepads, steering wheels, flight controllers, or any other type of device because the required information to do this simply does not exist in the USB or HID data provided by the device. Only devices that have controller definitions can work with the Template system.

    ----------

    If you are referring to the OSX platform, there is no universal support for MFI controllers because Rewired does not use GCFramework. It uses I/O Kit and that only provides general HID controller support.

    Any device that appears to I/O kit can be used as an Unknown Controller. If you have provided a way for your users to map their own controllers as advised in the documentation, they should be able to use it regardless of explicit support through a controller definition.
     
    nickfourtimes likes this.
  9. nickfourtimes

    nickfourtimes

    Joined:
    Oct 13, 2010
    Posts:
    219
    Okay, so if I understand correctly, in this situation (on macOS/OSX):
    • the Gamepad Template is irrelevant for both the original Nimbus or Nimbus+ controllers (since they use GCFramework)
    • the SteelSeries Nimbus (OSX) mapping is fine for the original Nimbus controller, but not for the new Nimbus+
    • if the Unknown Controller mapping is set up properly, it should support the new Nimbus+ without having to update anything else
     
  10. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    No, that's not correct.
    • The Nimbus is fully supported on OSX:
      https://guavaman.com/projects/rewired/docs/SupportedControllers.html
    • The Nimbus does work with the Gamepad Template.
    • Unknown Controller map will be loaded for the Nimbus+ because it does not have a controller definition and therefore cannot be recognized. That is not the advised way to support unknown controllers. The Unknown Controller map can only possibly provide SOME type of input support, but it cannot possibly provide proper input support the variety of controllers that users may use. That is the purpose of a control remapping system that allows the user to map their controls regardless of what unknown controller they may have.
     
    nickfourtimes likes this.
  11. io-games

    io-games

    Joined:
    Jun 2, 2016
    Posts:
    104
    Hi!
    Is there way to get not obfucated dlls ?
    It's imposible to read and understand how it works.

    upload_2020-6-23_19-40-14.png
     
  12. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    No. That is the point of obfuscation. Rewired's source code is not public and is not distributed.
     
    io-games likes this.
  13. lasersinc

    lasersinc

    Joined:
    Apr 21, 2013
    Posts:
    12
    @guavaman Hi, I'm running up against the Nimbus+ problem too. What would be the recommended way to deal with it?
     
  14. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    Provide your users a way to remap their controls. That's why it's listed in the best practices. No input system cam have definitions for every single controller that exists or comes out.
     
  15. drHogan

    drHogan

    Joined:
    Sep 26, 2012
    Posts:
    201
    Hi @guavaman,

    I am doing my first experiments with Corgi Engine and Rewired. I did read the FAQs about Xinput controllers and the fact that they should be mapped into Gamepad Template. I also tried to add the same maps to the Xbox 360 and Unknown Controller.
    My problem is that even though the Player ID seems to be the same in Corgi and Rewired, I get no input whatsoever from the Input Manager. I am sure I am messing with something, but i checked layouts, map, etc.
    I am playtesting with an Xbox One Controller for Windows, I added a debug print and as expected it's recognized as Xinput Gamepad of type Joystick.
    I am autoassigning the joysticks and in corgi the PlayerID is Player1 and the player name in Rewired is Player1 (ID is 0). I tried to also change corgi ID to 0 but i saw no difference.
    May I ask what else I might be doing wrong so that I don't get any input at all? In another scene, the same pad, with Corgi InputManager works correctly.

    EDIT: Upon testing and changing the Player ID to 0 as well, the following debug lines attached to a debugger, both print 0, even though Rewired one is an int, and Corgi one is a string, could that be the issue?
    Debug.Log(ReInput.players.AllPlayers[1].id);
    Debug.Log(LevelManager.Instance.Players[0].PlayerID);

    Thanks in advance for your time,
    H
     
    Last edited: Jun 26, 2020
  16. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    That's an extremely broad question. There are dozens of reasons why you might not get input. Dealing with an integration increases the number of reasons even more. Me guessing as to why you aren't getting input is not a productive way to find the problem.

    Use the tools provided to figure out exactly what is wrong and at what level (Rewired or Corgi Engine):
    https://guavaman.com/projects/rewired/docs/Troubleshooting.html#debug-information
    https://guavaman.com/projects/rewired/docs/Troubleshooting.html#joystick-problems

    That will rule out any Rewired issues. Then you need to go debug the Corgi Engine side.

    Did you add a Rewired Corgi Engine Input Manager to your scene replacing the default Input Manager?
    Did you delete all existing InputManagers so only Rewired Corgi Engine Input Managers exist?
    Add logging to the RewiredCorgiEngineInputManager functions that Corgi Engine calls and see if it's even being called.

    No. That is how it works. Corgi Engine uses strings. Rewired uses ints. The Rewired Corgi Engine Input Manager converts them.
     
    Last edited: Jun 26, 2020
    drHogan likes this.
  17. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    Because I have been getting so many reports of this and the fact that Apple will not approve a submission to Apple Arcade without automatic Nimbus+ support, I have created a new controller definition for it on OSX with the help of someone who has the controller. Download the new Controller Definition including the modified DualAnalogGamepad template file and ControllerDataFiles file:
    https://www.dropbox.com/s/pn2rcvp12vxk813/RewiredSteelSeriesNimbusPlus.unitypackage?dl=0

    Make sure the Rewired folder is in the root of your Assets/ folder before extracting so the files go into the right location.

    I have not been able to test this definition as I will not have the actual controller until next week. If you find any problems, please let me know.
     
  18. castor76

    castor76

    Joined:
    Dec 5, 2011
    Posts:
    2,517
    Any news with il2cpp vs2019 issue been addressed by microsoft yet?
     
  19. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    No.
     
  20. drHogan

    drHogan

    Joined:
    Sep 26, 2012
    Posts:
    201

    Thanks for the tips, gonna make a few more experiments then!
     
  21. Derakon

    Derakon

    Joined:
    Jul 3, 2019
    Posts:
    20
    Does Rewired support acceleration on the repeat rate? For example, if I hold down a button, I want the initial repeat rate to be 2x/second, increasing to 10x/second over the course of 5 seconds. I don't see anything that looks like that in the action behaviors on the prefab, but it's possible I missed something.
     
  22. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    No.
     
  23. torahhorse

    torahhorse

    Joined:
    May 14, 2013
    Posts:
    10
    Is there a way to change a PlayerMouse's pointerSpeed through a script? I have a PlayerMouse component in my scene but I'm not sure how to get a reference to it. Thanks!
     
  24. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    You get a reference the same way you get a reference to any other object or component in Unity.

    https://learn.unity.com/tutorial/getcomponent

    The component has many public properties:
    https://guavaman.com/projects/rewired/docs/api-reference/html/T_Rewired_Components_PlayerMouse.htm

    Pointer Speed:
    https://guavaman.com/projects/rewir...wired_Components_PlayerMouse_pointerSpeed.htm
     
  25. NathanielAH

    NathanielAH

    Joined:
    Jul 22, 2013
    Posts:
    100
    I am on 2019.4.1f1 LTS, and am getting the below errors when importing Rewired:

    • Error: Could not load signature of Rewired.Editor.ComponentControls.TouchInteractableEditor:GenerateInteractableAnimatorContoller due to: Could not load file or assembly 'UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. assembly:UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null type:<unknown type> member:(null) signature:<none>
    • Unloading broken assembly Assets/Rewired/Internal/Libraries/Runtime/Rewired_Core.dll, this assembly can cause crashes in the runtime
    • Unloading broken assembly Assets/Rewired/Internal/Libraries/Editor/Rewired_Editor.dll, this assembly can cause crashes in the runtime
    Any guidance is appreciated.
     
  26. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    Unity just simply cannot get their move of the UI library to the package manager to work right. This is some kind of Unity regression and I can't "fix" it. It would happen to any DLL that tries to link to their Unity UI library. Report the issue to Unity. If it doesn't allow you to reimport the Rewired_Core.dll and Rewired_Editor.dll again without throwing this error, you cannot use Rewired in 2019.4.1f1. It's not going to work. Right click on each of those DLLs and select Reimport.

    This is related to this:
    https://guavaman.com/projects/rewired/docs/KnownIssues.html#assembly-errors-2019-2

    Ever since they first moved Unity UI to the package manager in 2019.2, there have been a bunch of different manifestations of this same issue.

    I have tested in 2019.4.1 and 2019.4.2 and have no issues whatsoever installing Rewired in a blank project. These Unity UI package manager related issues have always been a sporadic and hard to pin down problem with Unity's linker. It is common that these kinds of errors happen only under certain circumstances and not others making it very hard to deal with or report.

    So now there's yet another new Unity UI package manager issue I'm going to have to figure out how to reproduce, debug, report to Unity, and put up more documentation warnings about. No known workarounds, fixes, or even reproduction case at this point.
     
    NathanielAH likes this.
  27. torahhorse

    torahhorse

    Joined:
    May 14, 2013
    Posts:
    10
    Thanks for the quick answer- I figured out my issue! I was unable to get a reference using GetComponent or any other typical method because I had included
    "using Rewired"
    rather than
    "using Rewired.Components"


    I was confused because with just 'using Rewired' I was able to use PlayerMouse and its properties in my script, but unity didn't think it was a unity object, so GetComponent didn't work.
     
  28. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    Oh yes, that is an obscure issue because the component is a Unity-style wrapper for an otherwise normal Object. That's mentioned in the documentation under Additional Info here:
    https://guavaman.com/projects/rewired/docs/PlayerControllers.html#player-mouse
     
  29. little_box

    little_box

    Joined:
    Aug 22, 2017
    Posts:
    28
    Hi, guavaman.
    When I tried to instantiate a TouchButton, it gave me an error:
    Rewired: TouchController could not be found. You must have a component that extends from TouchController on this or a parent GameObject.
    My purpose is to create some TouchButtons in the list view, but the number of TouchButton is not fixed.
    Is there any way to solve it?
     
  30. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    This is in the documentation:

    https://guavaman.com/projects/rewired/docs/TouchControls.html#touch-button

    Touch Button
    A Touch Button is an on-screen button control which can be manipulated by touch or by using the mouse pointer.

    Requirements
    • A Touch Controller component must exist on a parent of the control.
    • A Canvas component must exist on a parent GameObject.
    • An Event System must exist in the scene and be enabled.
    See the Touch Controller documentation:
    https://guavaman.com/projects/rewired/docs/TouchControls.html#touch-controller

    Why would you need to be dynamically creating a varied number of on-screen touch control buttons? Are you using this control as a generic button in some kind of list? You should not be using the Touch Button as a generic button for generic UI purposes. It's not designed for that. It's designed to function as a virtual controller button.
     
  31. XCO

    XCO

    Joined:
    Nov 17, 2012
    Posts:
    380
    I seek your guidance Rewired Sensa ? Here is the situation:

    - Xbox 360 controller
    - Playmaker Actions
    - Character inside a capsule

    How to get the information of the joy stick and use that to make the capsule/character rotate in that direction. If Im just rotating the joystick how to I get that rotation data and make an object rotate in that direction ?
     
  32. little_box

    little_box

    Joined:
    Aug 22, 2017
    Posts:
    28
    Thank you. There is something wrong with this way. I should have done it another way.
     
  33. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    Rewired's responsibility stops after it provides you with the user input value. RewiredPlayerGetAxis is the PlayMaker action that gets the axis value for an Action. After that, what you do with that value is up to you to determine. Rewired is not involved in making an object or character move and has no functions or PlayMaker actions to achieve such a goal. That is implementation/consumption of input. Consuming input from Rewired works exactly the same was as consuming input from Unity's input system or any other input system that exists. You must design code or visual scripting sequences to take that input value and use it to move your object in the direction you wish to move it, transforming for camera angle, applying speed, etc. using scripts you download, write, or visual scripting actions designed for that purpose.
     
    XCO likes this.
  34. Justin-Wasilenko

    Justin-Wasilenko

    Joined:
    Mar 10, 2015
    Posts:
    104
    Since updating from 1.1.27.1 to 1.1.35.1 the Rewired Standalone Input Module is not registering Horizontal Negative or Vertical Negative when using joysticks while navigating Unity UI. Keyboard, works. My prefab hasn't changed. And InputManager is showing the correct values.

    Upgraded by deleting Rewired folder, and re-importing. Downgrading restores normal functionality. Using Unity2018.4.
     
  35. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    I cannot reproduce this problem in any combination of configuration settings with any type of device or stick I have tested.

    The only change that has happened in those versions that has anything do with axis movement in the RewiredStandaloneInputModule is this:

    1.1.34.0:

    Changes:
    - Added support for horizontal mouse wheel.
    - Windows Standalone, Native Mouse Handling: Added remote desktop mouse support.
    - Added RewiredEventSystem component.
    - Rewired Standalone Input Module: Changed axis movement threshold to use Input Behavior Button Dead Zone.
    - Changed method for finding canvas position from screen position in UIPointer.cs example.

    Prior to that update, the hard-coded axis dead zone value of 0.4f was inherited from Unity's Standalone Input Module. After that update, the axis movement values were changed to use player.GetButton and player.GetNegativeButton so the Action's InputBehavior.buttonDeadZone comes into play in determining how far a stick must be pressed in order to trigger movement.

    I see no possible code path that would lead to negative stick values to not be able to move the UI.
     
  36. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    Discovered it. You have "Activate Action Buttons on Negative Value" enabled in the Rewired Input Manager Settings. This hack apparently has unintended consequences on this code because with that enabled, player.GetButtonDown is returning true when you press down or left cancelling out GetNegativeButtonDown's positive value. This option makes it impossible for the code cannot work using only GetButton checks.
     
    Last edited: Jul 7, 2020
  37. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    Replace the file in Rewired/Integration/UnityUI/ with the one attached.
     

    Attached Files:

  38. Khena_B

    Khena_B

    Joined:
    Aug 21, 2014
    Posts:
    273
    Hey, I use GetLastActiveControllerType() to check if the keyboard or mouse is in use, the problem is that while holding a keyboard key then moving the mouse briefly, the last active controller type stays on the mouse and not the keyboard, could GetButtonRepeating() trigger the keyboard's active state with every repeat action?
     
  39. Justin-Wasilenko

    Justin-Wasilenko

    Joined:
    Mar 10, 2015
    Posts:
    104
    Great thank you very much, this fixed it!
     
  40. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    No. No call to any "GetXXXX" method will ever change any values in the system. Those methods do nothing but read information. The act of calling to a method to get information does not trigger it to record some kind of information or change any values.

    LastActiveController is working correctly. Change in value is used to determine which controller takes precedence, not absolute value. Holding a keyboard key down cannot be used to continually trigger the last active controller because if it did, any controller that had an always-on button such as a HOTAS controller with a dial or certain types of switches would always, constantly take the last active designation. The same would be true for an axis that holds a non-zero value at rest, which includes most pedals and triggers on a wide variety of devices, especially unrecognized controllers that haven't been standardized to return a value of zero at rest.
     
    Last edited: Jul 7, 2020
  41. NathanielAH

    NathanielAH

    Joined:
    Jul 22, 2013
    Posts:
    100
    Thanks for the follow-up and details! Will work through it that way.

    Sincerely,
    Nathaniel
     
  42. Darkgaze

    Darkgaze

    Joined:
    Apr 3, 2017
    Posts:
    397
    Hi. I was wondering, how come The Input Manager BaseInput takes 1.5ms to execute in editor in the Profiler? It's one of the biggest tasks there, in a project I'm working on. We are trying to improve efficiency and I'm seriously concerned. Do you know which things make it slower? We have many keyboard layouts and such. Thanks!
     
  43. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    See this:
    https://guavaman.com/projects/rewired/docs/HowTos.html#optimization
     
  44. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    Rewired 1.1.35.3 is available on the Unity Asset Store.

    See Updating Rewired before updating.

    1.1.35.3:

    Bug Fixes:
    - Fixed issue in RewiredStandaloneInputModule causing joystick axes to not be able to navigate the UI left or down when "Activate Action Buttons on Negative Value" is enabled in the Rewired Input Manager settings.

    1.1.35.2:

    New Controller Definitions:
    - Steel Series Nimbus+

    Modified Controller Definitions:
    - Updated Xbox One Controller definition for breaking changes caused by Windows 10 2004 update on Windows Standalone and Windows UWP platforms with Raw Input and Direct Input with Use XInput disabled.
    - Updated Stadia Controller definition for breaking changes caused by firmware update on all desktop platforms.
     
  45. MylesLambert

    MylesLambert

    Joined:
    Dec 31, 2012
    Posts:
    61
    Hey!
    Been using rewired a few years now on different projects - thanks for keeping it updated for so long :)
    One issue i've run into on every project is action absorbing/ using (not sure on exact terminology - but flagging an action as 'used' so nowhere else in the code reacts to that input).
    It's a common issue and I've worked around it in various ways, but I'd like to hear what your thoughts as to the 'correct' way to handle these cases would be,

    Player Joining & Death
    1. Check for any button being pressed, spawn player.
    2. User presses a button to leave.
    3. Because the button for leaving is still pressed, player is instantly respawned.
    Ideally we'd just make sure that the 'any button pressed' check is done before handling anyone leaving. But that's not always possible depending on the setup.

    UI Opening/ Closing
    1. User presses 'accept' button that opens UI.
    2. New UI also checks for the same 'accept' button and closes instantly.
    They're both essentially the same issue and I've worked around them in the past, but ultimately I would prefer the ability to 'void' an action until it is registered again. How do you imagine rewired handling these sort of cases?
     
    Last edited: Jul 12, 2020
  46. csofranz

    csofranz

    Joined:
    Apr 29, 2017
    Posts:
    1,556
    Hi. I'm currently in the process of creating two hardware joystick maps, and have run into some issues (I know that you prefer the joysticks to be sent to you, but they are rare and hard to come by (Virpil devices: a thorttle and constellation alpha) and time is short, so I'll try my hand at rolling my own according to your tutorial video).

    General question: when creating a map, which map is supported by default on windows 10, and what are the differences: win direct, win raw, or win x?

    The throttle runs from -65535 to 65535 (-1 to 1). I want that to map from 0 to 1. I tried using the throttle zero-center calibrate option, setting Zero to -1, min to 0, and max to 1, but I either receive values ranging from -1 to 1, or have a dead zone from -1 to 0 (making half the throttle not respond) - so what am I doing wrong?

    In the Main Editor, I want to map two buttons on the same stick to the same action, so both pressing button 12 and button 27 will both result in the Action 'Interact' to fire. I currently simply have mapped both buttons to Interact, but only one button will generate the Action, the other does not. What can I do to have both buttons result in the same action?

    Another general question: I have configured a rewired input manager in one scene. How can I easily bring the settings from one input manager configuration from scene A to the rewired input manager in scene B (I'm not using don'tdestroyonload)

    Thanks for any hints,
    -ch
     
  47. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    Rewired mimics the exact same mechanics of UnityEngine.Input. UnityEngine.Input also does not allow you to "use" a Button Down/ Button Up state. Rewired was designed to be a near perfect fit as a replacement for UnityEngine.Input.

    One thing few people consider when asking for a "use" feature is that once you do that, you then have to be in full control of the order of script execution. If you have 3 scripts checking for the value of an Action, you have no way of knowing which one will execute first and use that event.

    There is no such thing as a "correct" way to handle these scenarios. Any and all methods are equivalently valid.

    Off the top of my head, these come to mind:

    1. Input processing or UI change timeout. (Defer a frame -- coroutines are very useful for this)
    2. Use GetButtonUp instead of Down.
    3. Enable and disable Controller Maps. If a Controller Map is disabled and you enable it on a ButtonDown event, the ButtonDown state will not become active the next frame if that button is also mapped on that Controller Map. This is explicitly silenced.
     
  48. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,633
    See the documentation. Settings -> Windows -> Input Source:
    https://guavaman.com/projects/rewired/docs/RewiredEditor.html#Settings

    Look at the many other joystick definitions that have throttles that come with Rewired. They almost all work the same way.

    Invert: Enabled
    Dead Zone: 0
    Calibrate Axis: Enabled
    Axis Zero: 1
    Axis Min: -1
    Axis Max: 1

    Rewired does not prevent you from assigning the same Action to any number of buttons. Therefore, something completely unrelated it happening.

    Use Debug Information to figure out exactly what is happening at runtime:
    https://guavaman.com/projects/rewired/docs/Troubleshooting.html#debug-information

    Clear PlayerPrefs if you are using Control Mapper or UserDataStore_PlayerPrefs:
    https://guavaman.com/projects/rewired/docs/UserDataStore.html#clearing-playerprefs

    Please read the Input Manager documentation:
    https://guavaman.com/projects/rewired/docs/InputManager.html

    It will answer all your questions about how the Input Manager works and how it should be used in multiple scenes.
     
  49. csofranz

    csofranz

    Joined:
    Apr 29, 2017
    Posts:
    1,556
    Thank you so much for the quick and helpful response!

    My apologies for being unclear, I did read your very helpful documentation, and my question was phrased badly. My question is this (as someone who is a long-time MacOS dev and is using Unity to deploy to Windows):

    Which of the different Input APIs should I support if I cross-develop for WIndows? Unlike on macOS it seems that Windows supports multiple Game Input API, and I'm usure which to support. It seems that the 'Raw' API is my best bet, but I do not understand what the "X" and "direct" variants are and when I should support those. Do I understand correctly that I only need to support those if I plan to add specific support for those input technologies? What is the deciding factor for requiring to supporting those, and are they under my (developer) control, or the user's control who installs some arcane drivers that I then have to support?

    Ah! <blush> Indeed, I should have looked at existing definitions first, my bad (and quite obvious, especially since I do have some TM Throttles to test with). Do you have any further documentation on how the various options work in Axis assignemt, especially the 'Special Axis Type Throttle' option, or perhaps show how these are applied and in which order? TM's Throttle definition has *both* Invert options checked (Calibration and Throttle Zero-Center Calibration), so I think there is a lot of interesting stuff for me to understand and tweak in there.

    Cheers,
    -ch
     
  50. csofranz

    csofranz

    Joined:
    Apr 29, 2017
    Posts:
    1,556
    FWIW - The correct settings for a Virpil CM2 Throttle are:

    Calibration:
    Invert OFF
    Dead Zone 0
    Calibrate Yes
    Axis Zero -1
    Axis Min -1
    Axis Max 1

    Throttle Zero Center Calibration
    Invert OFF
    Dead Zone 0
    Calibrate Axis OFF