Skip to main content
Version: 10 Jul 2024

Input Binding Paths

This guide provides information the Input Control Paths and Interaction Profiles that are supported on Magic Leap 2. For general information about the OpenXR Hand Interaction Profile in Unity. See the Unity OpenXR Hand Interaction Input Manual.

Hand Interaction Profile

For detailed information about the origin of each pose relative to the hand see the OpenXR Hand Interaction Extension documentation.

NamePathTypeDescription
devicePose<HandInteraction>/devicePosePoseRepresents the pose of the device, including rotation, position, and velocity of the tracked hand.
pinchPose<HandInteraction>/pinchPosePosePose specifically for the pinch gesture, including all pose data (rotation, position, etc.).
pointer<HandInteraction>/pointerPosePose for the pointing gesture or tool, typically involving the index finger.
pokePose<HandInteraction>/pokePosePosePose for the poke gesture, detailing the specific finger or tool position and orientation.
pinchValue<HandInteraction>/pinchValueFloatThe intensity or value of the pinch gesture, ranging from 0.0 to 1.0.
pinchReady<HandInteraction>/pinchReadyBooleanIndicates whether the pinch gesture is started or being detected. Use the pinchValue to detect completeness.
pointerActivateValue<HandInteraction>/pointerActivateValueFloatThe intensity or value of pointer activation, generally used for buttons or triggers.
pointerActivateReady<HandInteraction>/pointerActivateReadyBooleanIndicates whether the pointer activation gesture is started or being detected. Use the pointerActivateValue to detect completeness.
graspValue<HandInteraction>/graspValueFloatThe intensity or value of the grasp gesture, ranging from 0.0 to 1.0.
graspReady<HandInteraction>/graspReadyBooleanIndicates whether the grasp gesture is started or being detected. Use the graspValue to detect completeness.
isTracked<HandInteraction>/isTrackedBooleanIndicates whether the hand is currently being tracked. Unity Layout Only
trackingState<HandInteraction>/trackingStateIntegerProvides the current tracking state of the hand. Unity Layout Only
devicePosition<HandInteraction>/devicePositionVector3The position of the device or hand in 3D space. Unity Layout Only
deviceRotation<HandInteraction>/deviceRotationQuaternionThe rotation of the device or hand in 3D space as a Quaternion. Unity Layout Only

Note: Each pose value includes the rotation, position, and velocity. Separate position and rotation values can be obtained when appended to the path, for example:

  • <HandInteraction>/devicePose/position
  • <HandInteraction>/devicePose/rotation
info

To specify a particular hand instead of either, you can add {LeftHand} or {RightHand} after the <HandInteractionBindings> in the binding.

Hand Interaction Illustrations

This illustration shows the hand joint conventions used by the OpenXR Hand Interactions Profile.

OpenXR hand joint conventions for left and right hands.

These illustrations show the key poses used by the OpenXR Hand Interactions Extension: aim, grip, pinch, and poke.

OpenXR aim key pose for left and right hands.
OpenXR grip key pose for left and right hands.
OpenXR pinch key pose for left and right hands.
OpenXR poke key pose for left and right hands.

Palm Pose Interaction Profile

For more information about the Palm Pose extension, see the OpenXR Specification.

NamePathTypeDescription
devicePose<PalmPose>/palmPosePoseRepresents the pose of the device, including rotation, position, and velocity of the tracked hand.
isTracked<PalmPose>/isTrackedBooleanIndicates whether the hand is currently being tracked. Unity Layout Only
trackingState<PalmPose>/trackingStateIntegerProvides the current tracking state of the hand. Unity Layout Only
devicePosition<PalmPose>/devicePositionVector3The position of the device or hand in 3D space. Unity Layout Only
deviceRotation<PalmPose>/deviceRotationQuaternionThe rotation of the device or hand in 3D space as a Quaternion. Unity Layout Only
info

To specify a particular hand instead of either, you can add {LeftHand} or {RightHand} after the <PalmPose> in the binding.

caution

This feature requires the Palm Pose OpenXR Feature to be enabled in your project's OpenXR Settings (Window > XR Plugin Manager > OpenXR Settings).

Palm Pose Illustrations

These illustrations show examples of palm poses using by the OpenXR Palm Pose extension.

OpenXR Palm Pose with Controller.
OpenXR Palm Pose tracked hand.
OpenXR Palm Pose digital hand avatar.