# Frequently Asked Questions

Topics:

- Does Rewired support Oculus Touch, HTC Vive, etc?
- Does Rewired support this controller?
- Can you/I add support for this controller?
- What platforms does Rewired support?
- Does Rewired support WiiU?
- Can you add joystick auto-recognition for WebGL?
- Does Rewired support touch and gyro/accelerometer input?
- Does Rewired support force feedback?
- Does Rewired support framerate-independent input?
- Does Rewired support multiple independent mice and keyboards?
- Where is Rewired's input configuration data saved?
- How do you consume/use an input?
- My joystick's dead zone is too large/small. How do I change it?
- Can you give me a quick and simple example of how to handle control remapping?
- How can I bind an Action to a button short-press and another Action to a long-press?
- Can I get the Rewired source code?
- What does "this extension requires one licence per seat" mean?
- Do you offer educational or bulk license discounts?

### Does Rewired support Oculus Touch, HTC Vive, etc?

See Does Rewired support this controller?

### Does Rewired support this controller?

Usually, this question is asked about exotic controllers such as 3Dconnexion Space Mouse, Arduino, Oculus Touch and Remote, HTC Vive, exotic VR controllers, or some other special-purpose controller that requires its own SDK to use. Rewired does not support such controllers directly. Any use of such controller would require you set up the company's SDK and use a Custom Controller to add support for the device. Even this may not work for all devices.

Rewired is not a general-purpose, low-level API for working with any and all HID devices.

See Supported Controllers for more information.

### Can you/I add support for this controller?

It depends. Not all controllers are candidates for Rewired's automatic controller recognition system. The controller would have to be evaulated for inclusion.

Rewired's controller recognition system relies on information returned by the controller in order to be able to recognize it and load a hardware definition. Many times, the identifying information provided by the device is inadequate or too generic to be relied upon for recognition, for example those that show up as "Generic USB Joystick", "USB Gamepad", etc. This is true of a huge number of generic PC gamepads. The manufacturers of these gamepads create dozens and dozens of different products under a large variety of brands, some even with different button layouts, yet all of these devices provide exactly the same identifying USB/HID information (both product name and VID/PID). This makes it impossible to auto-recognize these controllers. If you were to add a controller definition for just one of these controllers, all others that don't match the button layout exactly would report incorrect element names and default mappings in the best case, and would be essentially unusable in the worst case. For these controllers, the only solution is to not provide a controller definition so that they will be treated as Unknown Controller which the user can map manually using Control Mapper or your own custom control remapping system.

See How To's - Creating new controller definitions for more information.

### What platforms does Rewired support?

See the list of tested platforms here.

### Does Rewired support WiiU?

WiiU is not a directly supported platform. In addition, WiiU controllers do not work through UnityEngine.Input so the default fallback mode doesn't work. However, it is possible to support WiiU through the use of Custom Controllers.

### Can you add joystick auto-recognition for WebGL?

At this time, joysticks on WebGL are only supported via manual user mapping of controls at runtime through the use of a system like Control Mapper.

WebGL controller support is very poor at this time with a huge number of cross-browser bugs and inconsistencies. These inconsistencies even vary across different versions of the same browser on one OS, and across the same versions of the same browser across different OS's. This makes it highly impractical to provide controller auto-recognition for WebGL because it would require code to detect OS, browser, and browser version and require potentially dozens more controller definitions for each controller Rewired supports. Even then, there are many bugs that cannot be fixed which simply make the use of joysticks sub-optimal and would result in a frustrating user experience.

### Does Rewired support touch and gyro/accelerometer control?

On-screen touch joysticks
Rewired does not come with pre-built touch controls or GUI components. For touch-based joysticks, you use the Custom Controller system to pipe in data from a touch joystick control which you can either build or download from the Asset Store or elsewhere. There is a simple on-screen touch joystick example included with Rewired showing the concept.

Touch swipes and gestures
Rewired does not include any handling of swipe or gesture recognition. For gestures, if it makes sense to map them to input Actions, you can also use the Custom Controller system coupled with a gesture recognizer script/asset and pipe the gestures in as button values in a Custom Controller and then map those buttons to Actions.

Gyro and accelerometer input
Rewired does not directly implement motion or tilt control (except tilt and rotate on the Siri Remote on tvOS, and the gyro on the Sony Dual Shock 4). To use cell phone motion or tilt control with Rewired, you use UnityEngine.Input to get the motion data and then use that information to feed into a Custom Controller to map certain types of motion to Actions. Rewired comes with a simple tilt control example.

Touch-only games
If you are making a touch-and-tilt-only game and do not need joystick, mouse, or keyboard support, Rewired is not the ideal input package for your project. There are other systems that specialize in touch-based input such as Easy Touch 5, which can also be used with Rewired to provide the input data for Custom Controllers.

### Does Rewired support force feedback?

The only form of force feedback currently supported by Rewired is gamepad vibration. Vibration works with certain controllers on certain platforms and input sources.

Currently vibration is only supported on the following controllers and platforms and input sources:

| Windows | OSX | Linux | Windows 8.0 & 8.1 Store | Windows 10 Universal | XBox One | PlayStation 4
Xbox 360 Controller | XInput SDL2* | Native (Driver required) | Native SDL2* | Native | Native | — | —
Xbox One Controller | XInput (2 of 4 motors supported) SDL2* | Native (2 of 4 motors supported) (Driver required) | Not tested | Native (2 of 4 motors supported) | Native (All 4 motors supported) | Native (All 4 motors supported) | —
Xbox One S Controller | XInput (2 of 4 motors supported) | — | — | Native (2 of 4 motors supported) | Native (All 4 motors supported) | Native (All 4 motors supported) | —
Sony DualShock 4 | Raw Input (Enhanced Device Support required) | Native (Enhanced Device Support required, wired only) | — | — | — | — | Native

* SDL2 does not support separate motor speed values, so all motors are treated as a single motor.

### Does Rewired support framerate-independent input?

Not at the present time. If framerate-independent input were to be supported in the future, it would only allow you to access a queue of Action events that took place over the last frame for analysis and not the ability to instantly respond to input events that occur in the middle of the current frame. This is because if you were to use any of the Unity API in response to an event that was triggered from another thread, Unity would throw an exception or crash because the entire Unity API is not thread-safe and can only be accessed via the main thread. This means you could not, for example, move the camera instantaneously based on a mouse input event that occured in the middle of the current frame in order to reduce input latency. Unity would just throw an exception when you tried to modify anything on the Camera, Transform, or any other component from another thread.

### Does Rewired support multiple independent mice and keyboards?

Not at this time. Multiple mice will act as one mouse and multiple keyboards will act as one keyboard.

### Where is Rewired's input configuration data saved?

In each Rewired Input Manager game object as serialized data. See Input Manager for more details.

### How do you consume/use an input?

There is no "consume" or "use" concept in Rewired. You cannot change or override the final Action input values because they are set by the hardware events and then calculated based on combined values of all input sources that contribute to that Action.
This question is almost always asked due to the desire to use the input system as part of in-game player state/permission management. For example, you should not think of Rewired's Player.GetButtonDown as a flag denoting "game player is now firing". It should be thought of as a signal of the user's intent entirely separate from the game simulation. GetButtonDown("Fire") is equal to "the user wants to fire". Whether or not the game player is allowed to fire at that moment is a game player state management issue and needs to be handled in your game code.

"User wants to fire" -> If "game player is allowed to fire" -> then "fire".

Using Rewired or any input system as an integral part of game state or permission management is not a correct usage. This way there is no need for something like consuming input and injecting your game state permission management into the input system.

### My joystick's dead zone is too large/small. How do I change it?

Rewired includes default dead zones for every recognized joystick. They are built into the hardware definition for each joystick and specified per-platform, per-input source. These defaults should not be changed because they will be overwritten when you update Rewired. There is not currently a means of non-destructively overriding default hardware definition settings per-device.
Controller dead zones are very individualized to each physical joystick and can vary due to manufacturing, wear and tear, etc. As such, you should not simply set an extremely large default dead zone if your joystick drifts. Instead, you need to allow your users to set their own dead zone specific to their joystick. Rewired allows you set all kinds of calibration information for joysticks through scripting. See How To's - Calibrating controller axes for more information. You can see this implemented in both the ControlRemappingDemo1 and Control Mapper.
Using Control Mapper in your game will give users the option to remap and calibrate their controllers.

### Can you give me a quick and simple example of how to handle control remapping?

Remapping controls in Rewired is very complex because of Rewired's Controller Map and Player systems. It is a very powerful system that allows you to do things that simple static input configuration systems could never do, but it comes at the price of making tasks like this very complex. That is why I have provided both a complete working example that is intended for experienced programmers to read and learn the process from and a complete working UI that those without advanced programming skills can use directly in their games. I simply cannot make this topic simple and easy, so I choose not to attempt to write what would end up being an extremely long and complex volume on the process. Documentation on the topic can be found here.

### How can I bind one Action to a button short-press and another Action to a long-press?

That would require the ability to bind an Action to a gesture, a gesture being an event triggered when some element value changes over time matching some pre-defined pattern. Rewired does not support this at the present time.

There are dozens of potential gestures that one could possibly want to handle for every type of controller element (axes especially). Rewired does not provide any binding of Actions to gestures. Action bindings are only to controller elements. That Action can then be queried for axis value, button on, button off, button just pressed, button just released, button double clicked, button short pressed, and button long pressed events. The Action bindings are not bound to gestures but to the button/axis element, and the Action can then be queried for those events listed above.
Allowing binding Actions to gestures such as "short press X", "press and hold X", etc. would greatly complicate user control rebinding. It would also complicate the Rewired editor requiring potentially dozens of options per supported gesture type (timings, activation exclusivity, cancellation behaviors, etc.) Because of the vast number of possible variables, these things are better handled in code based on the individual needs of the game in question.
A gesture recognition and binding system would likely have to be an entirely separate layer on top of Rewired's current system. Gesture recognition and Action binding are not currently planned features.

### Can I get the Rewired source code?

There is no source code licensing option at this time. If having the source code is critical to your project, you should not purchase Rewired.

### What does "this extension requires one licence per seat" mean?

The EULA terms are defined by the Unity Asset Store EULA. See Appendix I for information on assets purchased through the Unity Asset Store. Specifically Appendix I, section 2.4 outlines terms for all editor extension assets.

Rewired is only sold on the Unity Asset Store and the license is bound by these terms as created and defined by Unity. I do not have legal authority to interpret these terms in any other way except as written and defined by the Unity Asset Store EULA. I cannot provide further clarification of or exceptions to these terms.

### Do you offer educational or bulk license discounts?

Rewired is sold only through the Unity Asset Store, therefore there are no other licensing options but what is available through the Unity Asset Store.

Documentation