Skip to main content
Version: 12 Dec 2024

Controller

Controller Overview

The upgraded Magic Leap 2 controller offers the same functionality as the original controller, but it now includes an improved tracking system using two on-controller cameras. Below you can learn more about the controller buttons and sensors, touchpad gestures, and important changes from the Magic Leap 1 SDK.

Hardware Diagram

Controller Button Diagram

Button descriptions:

  • 1.a Ray Target
  • 1.b Bumper Button
    • Change VKB Layout (Single Press)
  • 1.c Trigger
    • Select (Trigger Pull/Release)
    • Press & Hold (Single Press),
    • Grab (Trigger Hold)
  • 1.d Touchpad
    • Scroll (Swipe Down/Up)
    • Slide (Swipe Left/Right)
  • 1.e Menu Button
    • App Menu for Developers (Single Press)
  • 1.f Home Button
    • Toggle Home/Mini Home (Single Press)
    • Recenter Home (Single Press)
    • Turn On/Wake Up Controller (Single Press)
    • Turn Off Controller (Hold for 4 sec)
    • Controller Reset (Hold for 10 sec)
    • Capture Shortcut (Home+Bumper)

Touchpad Gestures

Touchpad Gesture Diagram
  • 2.a. Touchpad
    • Scroll (Swipe Down/Up)
    • Slide (Swipe Left/Right)
  • 3.a. Swipe Down
  • 3.b. Swipe Up
  • 4.a. Swipe Left
  • 4.b. Swipe Right

Changes from Magic Leap 1

Magic Leap controller tracking technology has significantly changed. ML1 uses a combination of EM and IMU sensors to track the 6DOF pose of the controller. The Magic Leap 2 controller uses a combination of IR LED tracking and a lightweight SLAM tracker running on the controller. Therefore, controller tracking should still work when there is no direct line of sight.

Because of the new tracking technology, there are a few things you should pay attention to in relation to when porting apps to Magic Leap 2:

  • The controller lacks the 12 visible LEDs arranged around the touchpad. All apps using this feature will need to alter the UX where necessary. The display LED is now replaced by a single status LED.
  • The controller can lose tracking if it is not in the line of sight and is in an area with low-light, low-texture, or high dynamic range scenes. These conditions can break SLAM tracking.
  • If the headset moves more than 5 meters without having a line of sight to the controller IR LEDs, the control pose will stop reporting. The headset must regain line of sight to the controller IR LEDs for the controller pose to resume reporting.
  • If the controller IR LEDs are not in line-of-sight with the headset and the controller's SLAM cannot determine the 6DOF position, the controller will default to a 3DOF mode and only update orientation from its last reported position. If 6DOF tracking is not re-established within 1 minute, then the controller will stop reporting position until the headset regains line-of-sight to the controller IR LEDs.

Best Practices

Avoid the following controller interactions

  • Trigger hold+touchpad swipe is not a comfortable interaction for some people.
  • Frequent combined controller interactions (for example, pressing several buttons at the same time) are not comfortable.
  • Touchpad double taps: Every user has a different idea of how quickly they should tap, which leads to false positives and frustration.
  • Touchpad force press: Every user has a different idea for how hard to press down on the touchpad, which leads to false positives and frustration.

Overlay digital tooltips on the controller with caution

The controller is outside of the user’s field of view, and so any tooltips will be obscured from view unless attention is directed to them. Moreover, the offset or jitter of digital tooltips on the controller may be confusing to the user. In particular, avoid long small blocks of type locked to the control. The user must steady their head and hand to read them.

info

ML2 now supports only one controller at any given time. ML1 had unofficial support for two controllers. The Magic Leap 2 APIs will be updated to remove this functionality and force developers to use only one controller.

info

To find resources for troubleshooting controller issues, such as turning it on/off, click here

Standby and Inactive

  • Inactive Condition - If the controller is left without movement this refers to rotation < 5 deg/sec and translation for a period of 3 seconds the inactive condition will be met and it will be reported to the device. This condition will be exited if a rotation of 5 deg/sec is detected for around a 100 msec period. In this state the controller will no longer report position.

  • Standby State - This state will be achieved (if enabled in the Device battery options for control) after 15 minutes of inactivity on the controller. In this state the controller will no longer report position.