Caution
This project is deprecated. Developers are encouraged to use the Keyboard Sample from the Unity XR Interaction Toolkit instead.
A keyboard that can be used in any project that supports Unity's XR Interaction Toolkit. Demo scene can be found in Assets/MagicLeap/Runtime/KeyboardExample/Scenes/XRKeyboardExample.unity
Add the following git url to the Unity Package Manager: https://github.com/magicleap/MagicLeapXRKeyboard.git?path=/Packages/MagicLeapXRKeyboard
To have the same interactions as in the example scene, make the following changes:
- Select the Game Controller GameObject from the XR Rig
- Disable
Force Grabfrom the XR Ray Interactor - In the same component, enable
Keep Selected Target Valid
Learn how to create cusom layouts here
Make sure to set the input option in Player Settings to new.
- Place the Keyboard prefab from
Packages/Magic Leap XR Keyboard/Runtime/Prefabs/Keyboard Manager.prefabinto the scene
- Add the script
TMPInputFieldTextReceiver.csonto any TextMeshPro Input Field you want to use with the Keyboard
The Keyboard prefab is structured in the following way:
KeyboardManager.cs- Allows users to toggle the Keyboard on and off.Keyboard.cs- Manages multiple Keyboard Layouts and controls modifier key presses like Shift and Caps LockKeyboardLayout.cs- groups the Keys and Keyboard Rows and communicates to the Keyboard Builder to generate a new layout if needed.KeyboardBuilder.cs- consumes JSON data to create the Keyboard Layout objects. The script requires that you assign the Keyboard Key and Keyboard Row prefab.KeyboardKey.cs- Controls the visual key graphics and input
To edit the layout:
- Create or navigate to an existing Keyboard Layout.
- Edit the Keyboard Layout Data inside of the **Keyboard Builder ** component.
- Press Regenerate Keyboard to update the keyboard layout in the scene.
- When you are finished, modify the Layout ID and description.
- Press Write New Json .to save the data to the Streaming Assets folder. Note: to toggle between Panels with a key press, assign the key's keycode as the Panel ID
- Navigate to an existing Keyboard Layout.
- Modify the Key prefab in the Keyboard Builder component.
- Press Regenerate Keyboard to update the keyboard layout in the scene.
Magic Leap XR Keyboard uses the following fonts to support unicode characters:
| Font | Link |
|---|---|
| Material Symbols | https://github.com/google/material-design-icons |
| Quivira | http://www.quivira-font.com/characters.php |
The shift label is appended with _NEUTRAL _SHIFT and _CAPS at runtime depending on the shift state. A key with the label SHIFT will use the following unicodes (they can be changed in Packages/Magic Leap XR Keyboard/Runtime/Scripts/Keyboard/DataModels/KeyboardCollections.cs)
| Label Name | Value |
|---|---|
| SHIFT_NEUTRAL | \ue5f2 |
| SHIFT_SHIFT | \uf7ae |
| SHIFT_CAPS | \ue318 |
| SHIFT | \ue5f2 |
There are also other special labels to make it easier to distinguish in the editor
| Label Name | Value |
|---|---|
| NUMBERPAD | \uf045 |
| BACKSPACE | \ue14a |
| SPACE | |
| RETURN | \ue31b |
Special Keycodes also exist
| Label Name | Value |
|---|---|
| BACKSPACE | \u0008 |
| SPACE | |
| RETURN | \n |
This project is based on UltraLeap's XR Keyboard which is licensed under Apache 2.0 This project is licensed under the Magic Leap Developer License