Virtual reality experiences partially rely on text input, however the implementation of keyboard functions is a difficult task to perform for developers. The lack of visual feedback on the keycaps and the stationary item (keyboard) are limitations to a room-scale VR experience. The lack of standardized solutions motivated us to create a text input mechanism that offers an intuitive experience for users.

As a first approximation we started out with the reduced QWERTY layout to save more space, it is similar to the one used for conventional touchscreen keyboard input. In desktop VR, mostly six-degrees-of -freedom (6DoF) controllers are used for interaction. While these controllers allow fairly accurate palm/hand tracking, they don’t have the capability to bring the same accuracy to finger tracking yet. This limitation results single “finger” per hand typing, similar to the two thumb input of touch screens. The virtual keycaps are positioned slightly curved around the user, making them easier to reach by the controllers. Each row of keys is slightly shifted vertically in order to avoid double key collisions, similarly to the drum-like keyboard of Daydream Labs.

For boosting the typing speed, similarly to touchscreen keyboards, we decided to implement a next word prediction and auto-complete algorithm supporting the text input in real time. The Levenshtein distance based auto correction is helping the users to correct spelling mistakes, whilst an N-Gram model is offering predictions for the following words. The predicted and completed words appear above the keyboard as text bubbles. The user can easily speed up his/her typing by selecting one of these bubbles. Currently the keyboard is using a corpus created from conversations of various subreddits, allowing a more general “knowledge”. Although, if one would like to adapt it for a specific topic, for example a sci-fi themed game, a more specific corpus would be more suitable (e.g. movie conversations from science fiction movies).

We plan to release the VR keyboard on the Unity Asset Store soon and enable makers to integrate the feature into various VR experiences.

You can find the GitHub repository on the link below:https://github.com/rjth/Punchkeyboard