Handy VR Keyboard
A highly tactile and optimized VR keyboard system designed with both motion controllers and high-fidelity hand tracking in mind
00
The Why
Being a VR enthusiast since the DK1 Kickstarter as well as an experienced UE4 VR Rapid Prototyper, as well as a mechanical keyboard enthusiast, I’ve had my fair share of frustrations with the fact that VR keyboards have always been so hit-or-miss on intractability or ease-of-use, or both. So much so sometimes that it’s made me altogether stop using some VR apps/games. I believe creators should be able to easily integrate quality keyboard solutions into their VR projects. After all, typing in VR is inherently difficult, so why increase the barrier-to-entry to your awesome VR game/experience/app?
Handy VR Keyboard aims to solve this by giving UE4 creators the freedom to no longer worry about focusing on a mundane keyboard feature that could possibly turn users away, and empower them to get back to focusing on what really matters… creating!
The What
A Keyboard Style For Both Realists or Stylists
Depending on whether you’re going for a realistic theme or a modern stylized/easier-to-understand theme, HVRKB has you covered without any needed modifications! Simply change the Keyboard Type and theme in the construction script and the rest will be done for you.
Refined Interaction Mechanics
Typing in VR has never been so natural and enjoyable!
HVRKB’s dynamic interaction system dynamically modulates haptics and key press/release sounds depending on how quickly each key is pressed/released. Each key press sound (down-stroke and up-stroke) is also spatialized at the exact location that the key is being pressed/released, allowing for the most realistic VR audio experience possible.
Alongside the dynamic haptics and sound system, HVRKB also has a fine-tuned key-press rejection system to prevent as many accidental presses to near-by keys as possible, something that can definitely be an annoyance in VR.
Out-Of-The-Box Customizability
Theme Customizability
Easily and quickly customize the theme of every aspect of your keyboard to your heart’s content; all from the comfort of HVRKB’s construction script!
Mechanical Switch Customizability
Switch Types
12 different real-world mechanical switches were recorded (down-stroke and up-stroke) to allow users to not only customize the look of their keyboard, but also the sounds! And if you’re also a stickler for realism (as I am), the colors of the actual mechanical switch stems change colors as well!
Mechanical Switch Type Options:
Handy Black
Handy Blue
Handy Brown
Handy Clear
Handy Green
Handy Red
Handy Silent Black
Handy Silent Red
Handy Silver
Handy Speed Silver
Handy Tactile Grey
Handy White
Stylized Switch Type Options:
Handy Snappy
Handy Quirky
Switch Actuation and Travel distance
The distance at which a key press is registered, alongside the total travel distance, can be customized easily using the HVRKB construction script!
Performance Customizability
Although the performance of HVRKB is already pretty solid, you can save even more CPU cycles or reduce face-count using a few simple checkboxes in the construction script!
Motion Controllers & Quest Hand-Tracking Compatible
At the moment, hand-tracking has been prototyped using https://github.com/rfsheffer/QuestHands which, although is very well-made, doesn’t appear to have hand-tracking as robust as what’s seen in Oculus Home on Quest. Once UE4 officially supports Quest hand-tracking, tracking issues will likely subside and usability with HVRKB will be better.
Oculus Touch/Index motion controllers work far better at the moment, as seen in the video.
Optimized for Oculus Quest
Using an advanced and completely built-from-the-ground up HISM (Hierarchical Instanced Static Mesh) system, HVRKB uses as little as 22 draw calls or as many as 34 draw calls (All meshes and materials included), depending on the keyboard style and optimization settings being used. The base project was created with Quest Hand-tracking in mind, so you can rest easy knowing HVRKB can be easily integrated into your Oculus/SteamVR projects without negatively affecting performance.
Expandable for Custom Keyboard Layouts
You’re not only limited to the out-of-the-box keyboard configurations as you can also create your own configurations. At the moment, the workflow is as follows:
Create a layout on http://www.keyboard-layout-editor.com/
Export layout as SVG
Import SVG into Adobe Illustrator
Save Illustrator project as Illustrator 8 project
Import Illustrator 8 project into 3ds Max and convert to poly
Copy and paste locations (x,y,z) of each mesh element into HVRKB actor
Create a black-and-white mask for keycap legends in Photoshop
Create ColorID map for keycap legends in Photoshop
Modify certain enums and structs in the HVRKB actor to conform to the new layout
Ideally in the future I'll try to simplify the workflow down to only needing to create your keyboard layout on http://www.keyboard-layout-editor.com/, importing the JSON data directly into the HVRKB construction script, and automatically generating the layout in the construction script.
Easily Send Keyboard Output To Any Actor
Only three simple steps to get keyboard output/input working
Tell the HVRKB actor what the target actor is for the HVRKB output
Implement the HVRKB interface into the target actor
Create a Key Pressed event in the target actor and hook up your logic from there.
year
2019
timeframe
2 weeks
tools
Unreal Engine, Oculus Quest, 3ds Max, Substance Painter, Photoshop
category
Personal Project
01
see also