Heathen's On Screen Keyboard

Asset Store
Video

Our first asset now merged with our latest! On Screen Keyboard has join UIX.

You can get it soon over on Unity’s Asset Store and owners of the previous On Screen Keyboard will have an upgrade option to Heathen’s UIX. Keep in mind the UIX package is growing its price will grow with it so get in early.

The generated keyboards from this tool are highly flexible game objects capable of 2D or 3D style boards. Boards can be saved as templates making it easy to share between projects. QWERTY AZERTY and Korean templates are provided. Heathen’s UIX package also includes Ligature helper a key component nessisary for many non-Latin / English character sets among many other UI tools such as Heathen’s UI Manager.

The provided documentation walks the developer though the available tools and components and as always includes full support via Support@HeathenEngineering.com

Update 5.1.0.1 of the Heathen’s UIX package will introduce the Keyboard, UI Manager, Pointer Manager and Ligature Helper elements and is in Unity review now!

On Screen Keyboard is on sale on the Unity Asset store now for 50% off.

This was our first asset and one of my favorites; while it gets used plenty there isn’t a lot of chatter over it; don’t forget that we not only take request but encourage them … let us know if know if there is anything we can do to improve the tool for you.

Is there an easy way to represent the function keys as well?

In addition to the touchpad use, I’m thinking something like this might have an application on a PC where you might use this as a visual layout for assigning game actions to keys.

Should be no problem representing the whole of the keyboard including the function keys though I may need to look into extending the key types. At current we categorize keys into 3 types being string, backspace and return and this makes since when we think about logins, passwords, character names, etc. but leaves us short for input/action mapping.

Thanks for the feedback we will take it to drawing board

is there a way to save/send the text typed on the screen?

also what about ligatures (but I know thats over the top)

Ligatures are possible with version 1.0 as the key will return its Upper or Lower value (depending on keyboard state) so if you assign № for example as the Upper value then that is what ActivateKey() will return.

As to save/send: assuming you mean can you return the string value typed on the virtual keyboard the answer is of course this was the initial vision of the product. The demo scene provided in v1.0 demonstrates how you might go about this.
There are a couple of ways to handle it; in the demo you will find a script named “TestController” that does the work; its simply firing a ray on mouse button 0 and if its a key that was hit its setting that key as the active key of the target board and calling ActivateKey() which returns the string value of that key if any. Note that we also test the key class as backspace key class should remove the previous character.
The ActivateKey() handles the shift class keys for us by setting the keyboard’s IsLowerCase as needed.
Note that the keyboard also has an event handler KeyPressed this allows you to separate your input and output e.g. you would build a controller that registers on the KeyPressed event and handles the Key it returns. As for input you simply need to call ActivateKey() on the board to fire the event for the current active key or if you prefer to handle input on a per key bases you can call PressKey() on the OnScreenKeyboardKey component either will cause the KeyPressed event to fire.

If this isn’t what you meant perhaps an example game scenario might help explain what your looking for.

Based on your feedback we have geared up v2 with a few nice additions including KeyCode bindings so your virtual keybaords can return string just like V1 as well as Unity KeyCodes that you can then use for key mapping game actions.

We are looking to add in support for Unity’s built in Sprite tools however the border inputs noted in Unity update v4.5.1 dont seem to be there in the editor though we can see them on the class object.

We are updating the Template buttons of the editor control to template out a full QWERTY and full AZERTY keyboard e.g. function keys and all. The screen shot attached shows the early progress.

Keep the suggestions coming.

what I meant by save is something like txt file (or some other file that has the sequence of keys pressed / can reproduce the text that had been typed).
send: I guess it’s possible real-time (I was thinking about something like between unity installs through bluetooth or else)

ligature: I was thinking more like: you press a key (e.g. N), then another key (e.g. A) and if there’s a ligature for NA, it writes/changes to that (a third key/letter). of course there could be a situation where e.g. EE has a ligature, then that should change to a third string value/letter.

Awesome! Just to be clear, this includes the ability to set key combinations, like SHIFT+, CTRL+, and ALT+ …?

Bit of a wall of text but should answer your questions and shed some light on the inner workings of the tool. Always open to new ideas so I went into a bit more detail than you asked for :slight_smile: in hopes that it spurs on more feedback.

@dibdab :
Regarding saves/send; this would be a file and possibly network I/O item and is handled by stock Unity functionality. The On Screen Keyboard asset simply provides a means to generate ‘virtual’ keypads and keyboards for when your users cant or shouldn’t use a hardware board such as when using a controller e.g. PC ‘joystick’ or console devices as well as for mobile assuming you didn’t want to or couldn’t leverage that platforms text input.
With our V2 feature set we are looking at other uses like having a virtual keyboard to assist the player in mapping game play functions (walk, run, fire, etc.) by providing a visual keyboard that returns the corresponding KeyCode when its keys are pressed; this could then be used in script for example to relate the key or combination of keys indicated for said action which of course would require some custom input handling as stock Unity least last I looked at its input manager still doesn’t allow run time mapping though there are many 3rd parties that do.

Regarding the ligature use you noted this would need to be handled in a script unique to your game which would be no problem as the keyboard simply returns the KeyCode or if desired the string assigned to it you would need to handle things like time span between key press events, mapping of combinations to results, etc. your self this I think would be best served per game as use may very e.g. in one case you may want to allow a long time frame or you may want to display optional results of a combination like mobile devises do with text input while others would need tight time frames and explicit combinations such as combo moves in a game or solutions to a puzzle (“disarm the bomb by entering the symbols you have 5 seconds” sort of thing)

@hopeful :
Shift, Ctrl and Alt including left and right variants all have there own keycode so yes you could capture rather or not they where pressed within x amount of time or since some action occurred. To keep the tool as flexible as possible it is not tied down to any given input manager not even Unity’s its simply associating keys which are them selves collidable game objects with an upper and lower string value as well as a KeyCode (coming in v2) keys them selves have a few convenience features e.g. a key knows when its been pressed, what board owns it, what keys are to its left, right, lower and upper and what type of key it is e.g. function, string, backspace, return or case shift; as it has a collder (optional but recommended) it can respond to ray cast and collision of course as well as do absolutely anything any gameobject can like animate, pivot and scale, etc…
The rest is up to you to implement e.g. do something with the code and or string related to the key.

The real power of the tool is in the editor extensions; the Keyboard editor extension which defines the inspector layout of a keyboard enables you to define a keyboards values before you generate it e.g. how many rows, how many keys per-row, what values for upper, lower, type, keycode should be returned as well as general look and feel. This is all based on a ‘key template’ which is simply a prototype key in the form of a prefab. We also provide convenience functions to auto template out QWERTY and AZERTY based keyboards. The results of these templates will need fine tuning by you once generated e.g. size and spacing of keys is defaulted to get you close but will never be perfect as it cant predict your board layout (grouping of keys) it does however link up the up,down,left and right navigation saving you considerable amounts of time when compared to building a keyboard by hand … which is exactly why we built the tool; we needed a keyboard, keep changing what we wanted it to look like and do and got tiered of manually building one over and over again.

The 2.0b version has been submitted for review; this update includes several notable changes to the tool to leverage unity 4.6 GUI changes. The original v1 is still available and can be found in the package.

In this version we added KeyCode and changed the navigation logic to leverage Unities built in navigation for GUI elements. Keyboard buttons now use Button component and the keyboard its self being a GUI element e.g. using the RectTransform can take advantage of layout features such as Horizontal and Vertical groups.

We have also removed the on keyboard control over color in favor of a more Unity standard approach e.g. the key template which should give you more flexibility over the looks and behavior of your keyboard during navigation and button pressing.

The tool still includes its keyboard generator e.g. the extension of the inspector allowing you to define your keyboard and generate the keys or to generate standard QWERTY and AZERTY layouts.

The update should be live on the store in the next week or so.

1 Like

On Screen Keyboard’s next update is a complete re-write of its source and editor making it easier to work with and greatly improving its functionality.

Note this update will come as part of Heathen’s UIX and cant be implemented with the current On Screen Keyboard. We do not currently have a lite UIX e.g. Keyboard only option available.

  • Templates can now store not only key settings but also position and size informaiton allowing a ready to go keyboard by simply selecting the template you want to use.
  • Templates can now be saved to file for easy sharing between projects and between developers
  • Support for Alt Gr and Shift Alt Gr modifiers
  • Ligature Helper component brining full support for additional non-English boards such as Japanese Katakana, Korean and more.

This next version has been written to be part of Heathen’s UIX tool kit (Unity Asset Store - The Best Assets for Game Making) and users of the previous On Screen Keyboard will have a defined upgrade path to the full Heathen UIX.

1 Like

Updated the main entry in preparation for the UIX update.
The package is with Unity now and should be approved soon; that is to say Heathen’s UIX is available for sale now on Unity Asset Store in its 5.1.0.0b form; this next update 5.1.0.1 whcih introduces Keyboard, Ligature Helper and many more features will also introduce the upgrade path from On Screen Keyboard to UIX but will also effect the price point of UIX as the package continues to grow.

The vision for Heathen’s UIX is a complete and robust easy to use tool kit for Unity’s stock GUI tools extending not replacing the functionality introduced in Unity 4.6+

The 5.1.0.1 update for UIX is available now!
Get it on the Unity Asset Store for 10.00 off if you already own On Screen Keyboard.
UIX now contains the next generation of On Screen Keyboard though we will be maintaining the current On Screen Keyboard (2.0b) it will not be receiving further updates and will be discontinued as its underlying technology depreciates.

You can find Heathen’s UIX on the Unity Asset Store here Unity Asset Store - The Best Assets for Game Making

I must be misunderstanding things. At the moment I see an update for UIX in the store but not for the keyboard.

So, just to be clear … we are or aren’t getting the keyboard update on the keyboard plugin?

Do we get the keyboard update only if we pay an additional $30 on top of the $15 we already paid for the keyboard plugin …?

Sorry for the confusion there.

The keyboard update is part of UIX e.g. re-written to conform to that structure. The changes involved wont apply to On Screen Keyboard which was originally written for Unity 4 prior to the UI update.

We have established an upgrade option from On Screen Keyboard to UIX if you want to upgrade, e.g. you get a discount if you own On Screen Keybaord. And we will continue to offer and support On Screen Keyboard of course. All updates to Keyboard however will occur on UIX as of this release forward and would not be compatible with On Screen Keyboards structure.

For detail here are some of the notable differences

  • Keys are more dependent on KeyCode information and support Alt Gr in addition to normal and capital
  • Templates now expects key to have 4 UnityEngine.UI.Text objects which are leveraged for normal, shifted (capital), Alt Gr and shifted Alt Gr. They are also able to store RectTransform size and position information allowing templates to store custom key position and size
  • The data model for the keyboard has been completely revamped and is serializable allowing save to file and improving editor function
  • Keyboard now leverage’s events more effectively and can be set to respond to hardware keyboard key presses (optional) and will echo key press events from keys through the keyboard. It also handles key press events for child keys
  • Methods have been added to respond to OnValueChanged event for simple connection to Unity events like InputField uses
  • Keyboard can now reference any string field of a component (mono behaviour) simplifying connection to Unity UI elements. See ‘Linked Object’ on the keybaord
  • Keys can be searched by KeyCode e.g. you can request a key press by its code without needing its reference, referencing is still a faster option when possible

Additional factors of UIX applicable to this subject include

  • Ligature Helper
    This is used to convert characters such as (c) to another glyph such as Ⓒ
    Like keyboard this has methods for easy connection to Unity events and it can reference any string field of a component for its output

For note On Screen Keyboard is written on Unity 4 and provides options for both the pre 4.6 change and for 4.6+ (old and new UI)

UIX is built on Unity 5 from the ground up and this is where new additions to the Keyboard and supporting components will occur.

At current we do not have ‘lite’ versions of UIX thus there is no UIX: On Screen Keyboard available at the moment.

Well … it was nice of you guys to offer an upgrade discount, but I can’t see a need for any of the other UIX features, so for me to pay $30 just to upgrade the keyboard to U5 … it’s not happening.

I can understand why you guys made the move - consolidating resources, enhancing a new product, and ending a product that probably had few sales - but for me it’s a disappointment.

If I may make a suggestion … if there were indeed relatively small sales on the keyboard, how about increasing the upgrade discount so the price for the keyboard upgrade is a more realistic $1 or so?

We completely understand and that’s why we are maintaining On Screen Keyboard 2.0 despite UIX now having Keyboard functionality.
The original intent was to depreciate On Screen Keyboard with an upgrade path to a ‘lite’ UIX unfortunately the lite UIX: Keyboard wasn’t all that lite if we gave it ligature and the data model changes which one requires for most non Latin character set languages so we parked that for now.

As to the upgrade cost:
Unfortunately the keyboard doesn’t account for that much of the UIX product over all; we based the current discount on a rough view of the contribution (features and maintenance cost) Keyboard brings to UIX then we got a bit generous with that and called it 25% of the 5.1.0.1 UIX build.

We do hate to disappoint but on the up-side
We will maintain the On Screen Keyboard 2.0 you currently use so it wont be breaking on Unity any time soon.
UIX will continue to grow so we hope it either become a good upgrade option for you or it becomes practical for us to split off a lite version that could contain popular parts UIX that would meet your uses.

In any case we are always here to help, so if you run into any roadblocks On Screen Keyboard, UIX or any other Heathen product just drop us a line. We frequently facilitate via support implementation, customization and even new features that add value to the products of our offerings so you don’t have to wait for things to break to contact us.