Motion Controller Key Deprecation

Overview of Motion Controller Key Deprecation and Migration

Choose your operating system:

Windows

macOS

Linux

Motion Controller Key Deprecation

Motion Controller keys have been deprecated in 4.24 in favor of keys specific to a set of common XR controllers which are defined in the OpenXR specification. This change makes it easier to customize the input bindings for each controller model and gets rid of the ambiguity around the mapping of Motion Controller keys to physical controller buttons.

By using the new keys, projects will improve support for SteamVR Input and OpenXR which are built around action systems. These new XR input systems are designed around providing cross-device compatibility by emulating the specific controller that the project is targeting.

During the deprecation existing inputs using Motion Controller keys are still supported, however it's no longer possible to add new inputs using Motion Controller keys. Any new input has to use the new XR keys, however the upgrade of old inputs can be done piecemeal since it's possible to use both the old and new keys interchangeably.

What Changes for Existing Plugins?

SteamVR

In UE4.24 the legacy input has been removed and replaced by the SteamVR Input plugin. This plugin was developed by Valve and has been available on the marketplace for earlier engine versions.

SteamVR Input is a native action system meaning that at the lowest level all input is handled through actions. This means that it's not possible to maintain backwards compatibility with Blueprints that do not use the action system. However, if your project was already using the action system then backwards compatibility with Motion Controller keys is maintained.

Oculus

The Oculus plugin fully supports the deprecated Motion Controller keys even if they are being used directly in Blueprints.

With the new XR keys the Oculus Go and Oculus Touch controllers now each have their own set of keys making it possible to have different bindings for each of them. If you prefer to have one set of keys again it's possible to map the Oculus Go to the Touch keys by adding bGoKeysMappedToTouch=1 to the [OculusTouch.Settings] section in BaseEngine.ini. However it is recommended to simply add two keys to every action instead.

Windows Mixed Reality

Full backwards compatibility is maintained for this plugin, the only change is the addition of new XR keys for Windows Mixed Reality Motion Controllers.

Migrating from 4.23 or Earlier

The biggest change is that the new XR keys can't be used directly in Blueprints. All input now has to go through the action system. If your project isn't using the action system yet, now is the right time to upgrade to it. This will ensure your project will work with SteamVR and OpenXR when you package for those platforms.

  1. Upgrade your project to use the action system if it isn't already. A tutorial on how to use the action system can be found here . The Blueprint compiler will warn you if your Blueprint uses a deprecated key, such as: InputKey Event specifies FKey 'MotionController_Right_Shoulder' which has been deprecated for MotionController (R) Shoulder

  2. Upgrade existing actions to use the new XR keys. Simply remove the existing MotionController key and replace it with one of the new XR keys. Add an XR key to the action from each controller you support. You should not add keys from controllers you don't currently actively support. You can simply leave it up to the SteamVR or OpenXR runtime to emulate one of the controllers you do support.

  3. For compatibility with SteamVR ensure all Thumbstick and Trackpad axes are suffixed with _X and _Y corresponding to the horizontal and vertical axes.

    MotionController.png

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Dismiss