For my master's thesis I conducted a qualitative study to find out what an intutive and learnable text entry experience in VR should look like for programmers. As part of my thesis, I had to re-implement several VR text entry systems from the literature. The study took place in a custom coding environment displayed in an in-game web browser by TLabAtloh (TLabWebViewVR Browser). It can be moved using the MoveAndScale.cs by NormalVR/CutieKeys.
Project Structure (all forked from TLabAtloh, main branch: masterarbeit):
- Main Project: This
- Keyboard Submodule: https://github.com/DaphiFluffi/TLabVKeyborad
- Browser Submodule: https://github.com/DaphiFluffi/TLabWebView
- Keybindings Plugin: https://github.com/DaphiFluffi/TLabWebViewPlugin
Materials:
- HMD: Meta Quest Pro
- Unity Version: 2022.3.48f1
- Visual Studio Version: 2022
- Main Scene:
Assets/TLab/TLabWebViewVR/MetaXR/Samples/Scenes/MetaXR Sample.unity
Under the unpacked Prefab TLabWebView_MetaXR is the Screen object contraining the Browser Screen and the following keyboard implementations. The Study Manager contains the Browser Navigation Button Functions.
- SimpleKeyborad = TLab's Virtual QWERTY Keyboard with layout adjustments [1]
- Drum = NormalVR's CutieKeys Drum Keyboard with layout adjustments [2]
- Eye = Eye-Shaped Keyboard re-implementation [5]
- PizzaDone = PizzaText re-implementation [3]
- Cube = Cubic Keyboard re-implementation [4]
Unity Inspector Structure
Menu of Pizzas for Layer Switching; Not in the Original
PizzaText; L–R: Lowercase, Uppercase, Symbol, Control Layers
- Scripts are heavily based on the Drum Keyboard by NormalVR/CutieKeys.
Cubic Keyboard;L-R:Control Char Side Panel, Main Keyboard and Text Entry Field, Shift, Layer Change and Arrow keys side panel
Four Layers Dissected: Lowercase and Uppercase Letters, Two Special Character Layers
TLab's Virtual QWERTY Keyboard, added Tab and Arrow Keys, slightly different layout
(a) Lowercase letters, (b) numbers and special chars
Modified Drum Keyboard Layout
Modified Eye-Shaped Keyboard Layout
TLab's Browser with added navigaton bar displaying our custom coding env
- [1] TLabAtloh: TLabWebViewVR. https://github.com/TLabAltoh/TLabWebViewVR
- [2] NormalVR: CutieKeys. https://github.com/NormalVR/CutieKeys
- [3] D. Yu, K. Fan, H. Zhang, D. Monteiro, W. Xu, and H. -N. Liang. “Pizza-Text: Text Entry for Virtual Reality Systems Using Dual Thumbsticks”. In: IEEE Transactions on Visualization and Computer Graphics 24.11 (Nov. 2018), pages 2927–2935. issn: 1941-0506. doi: 10.1109/TVCG.2018.2868581.
- [4] N. Yanagihara and B. Shizuki. “Cubic Keyboard for Virtual Reality”. In: Proceedings of the 2018 ACM Symposium on Spatial User Interaction. SUI ’18. New York, NY, USA: Association for Computing Machinery, Oct. 2018, page 170. isbn: 978-1-4503-5708-1. doi: 10.1145/3267782.3274687.
- [5] K. Wang, Y. Yan, H. Zhang, X. Liu, and L. Wang. “Eye-Shaped Keyboard for Dual-Hand Text Entry in Virtual Reality.” In: Virtual Reality & Intelligent Hardware, vol. 5, no. 5, Oct. 2023, pp. 451–469. issn: 2096-5796. doi: 10.1016/j.vrih.2023.07.001.
This repository contains the implementation developed as part of my Master's thesis.
The work is based on a fork of TLabWebViewVR by TLabAtloh, available at: https://github.com/TLabAltoh/TLabWebViewVR. Significant modifications and additions have been made to support the research described in the thesis.
Please note:
- This repository reflects only the implementation part of the thesis and may not represent the full scope of the academic work.
- All original work is © Daphna Beljavskij, 2025.
- The code and materials are shared for academic and non-commercial use only, unless otherwise specified in the license.
- The original project is licensed under the MIT license, and this fork complies with that license. See LICENSE for more details.
If you use this code or refer to this project in your own work, please contact me to cite the original project and my thesis appropriately.
Sample project for using TLabWebView in OculusQuest. Includes Meta XR SDK and XR Interaction Toolkit implementation example.
| Headset | Oculus Quest 2 |
| GPU | Qualcomm Adreno 650 |
| Unity | 2021.37f1 |
- Unity 2021.26f1 (meta xr sdk requires Unity Editor 2021.26f1 ~)
- meta-xr-all-in-one-sdk
- com.unity.xr.interaction.toolkit
- TLabVKeyborad
- TLabWebView
- Clone the repository with the following command
git clone https://github.com/TLabAltoh/TLabWebViewVR.git
cd TLabWebViewVR
git submodule update --init
Please see the setup section here
Assets/TLab/TLabWebViewVR/MetaXR/Samples/Scenes/MetaXR Sample.unity
Assets/TLab/TLabWebViewVR/XRInteractionToolkit/Samples/Scenes/XRInteractionToolkit Sample.unity
