ScriptSource

Entry

Keyboard Systems Overview

My Information

Log in | Register | Reset Password

Why register? Becoming a member of ScriptSource allows you to contribute information, post needs and add links to software and other resources. Please help us build a wonderful resource for the design, computing and linguistic communities!

Content

1

Keyboard Systems Overview

This document is intended to give an overview of the main keyboard technologies currently available on various platforms, particularly in terms of meeting requirements to enter text for complex scripts.

Standard keyboard systems work mainly by mapping a single keystroke (with or without a modifier like Shift) to a single character on screen. This works fine for simple scripts, but more complex or larger scripts cannot be handled this way, so additional features are needed within the keyboarding systems to meet these needs - for example typing e then ‘ to output é.  An introduction to keyboard design theory, whilst out of date in implementation details, gives an excellent technical overview of various issues to consider when creating complex keyboards.

On most platforms there are now multiple keyboarding systems available, so a choice has to be made about which is appropriate for a particular situation. This article gives a summary of the main systems available, and will be improved with more details over time. There are many other keyboard systems available; here we aim to cover those most likely to be useful for handling more complex scripts.

In addition to the “systems” described below, there are also other input methods suitable for entering small amounts of text - for example web-based pickers can be used on any operating system to write text in complex scripts in a browser which can then be copied and pasted into an application.

At the end of this document there are comparison charts between some of the systems.

Clearly, to enter text for a complex script, a font needs to be installed that supports that script, but font issues are not covered here.

Windows systems

MSKLC (Microsoft Keyboard Layout Creator)

MSKLC is a freeware Microsoft tool for creating new keyboard layouts using the Windows-native keyboard file format, and so gives seamless integration with Windows systems. It can use an existing Windows keyboard as a starting point. However, it is limited in its ability to cope with more complex scripts.

Keyman

Keyman is a powerful, commercial tool from  Tavultesoft for creating keyboard input methods. It allows for more complex input processing than MSKLC and so meets a wider range of needs. It does not use the Windows keyboard driver format, so a separate client needs to be installed on each computer using the keyboard. There are many existing Keyman keyboards available. More information on Keyman can be found on SIL's  NRSI site. There are now other keyboarding systems which can work with Keyman .kmn source files.

InKey

Inkey is based on  Autohotkey, an open source macro-creation and automation tool. The language used by InKey (and Autohotkey underneath) provides great flexibility and allows complex keyboard behaviours to be programmed. The separate open source Inkey Keyboard Creator is available to facilitate the initial creation of the keyboard, including an option to import Keyman .kmn files. More complex tasks have to be done by editing the Inkey .ahk source file directly, after which the keyboard creator cannot be used to make further changes.

Inkey is currently under private beta release, but the authors have indicated that the next version will be released under a free, open source license.

Ekaya

 Ekaya is an open source keyboarding system that uses the open source KMFL library to parse the Keyman .kmn files, so keyboards developed with Keyman should work with Ekaya as an alternative to the Keyman client. (Note that Ekaya may not offer the exact same functionality as the latest Keyman desktop version).

Keymagic

 Keymagic is an open source keyboarding system which works on several platforms. Whilst similar to KMFL, it uses its own source format rather than Keyman .kmn files.

MAC OS X systems

Ukelele

Ukelele is a freeware keyboard layout editor for OS X which provides a graphical interface for .keylayout files (the standard keyboard format for OS X).

Keymagic

Keymagic is also available for OS X - The Keymagic section under Windows systems has more information.

Linux Systems (including Ubuntu)

KMFL (Keyboard Mapping for Linux)

KMFL is an open source keyboarding system for Linux systems, particularly Ubuntu, which is compatible with Keyman 7 (or earlier) .kmn source files, so brings the power of Keyman keyboarding to a Linux environment. Although designed for Linux/Unix systems in general, full downloads and instructions are currently only available for Ubuntu.

Keymagic

Keymagic is also available for Ubuntu. - The Keymagic section under Windows systems has more information.

Android systems

Devices running Android provide a choice of languages and input methods. Extra input methods and separate language packs can be installed from the Google Play store.

Multiling is one of the possible solutions to explore for extending writing systems support.  Tavultesoft are developing a version of Keyman to run on Android, but this is currently still at the alpha testing stage.

Note that, as with all systems, for each keyboard there needs to be an appropriate font available; on Android, facilities to add new fonts to be used for all applications are very limited (and currently only possible when rooting/jail-breaking the device). Some applications come bundled with fonts to extend their own functionality, but they will only work within the particular application.

Web-based systems

This covers web-based keyboarding systems that allow users to type in different scripts/languages without installing keyboard layouts or software on their computers, but directly, through web applications in the browser.

KeymanWeb

Keymanweb is a commercial subscription-based keyboard system which can be built into websites.

Google Virtual Keyboards

The status of these is unclear. The  Google Developers website states that they are deprecated, but provides no information about alternative plans for them.

Other Input Methods

This section covers other ways of entering Unicode text that fall short of being a full keyboarding system.

Such alternative input methods can be useful if you do not know a script well enough to use the native keyboard, or if the native keyboard is not available. For longer runs of texts these alternative approaches are not ideal.

Web-based pickers

With these, the text is entered in a text box within the picker, running directly in a browser. The text can then be copied into any document/application that supports Unicode. These can be used with any operating system provided the corresponding fonts are available (and smart rendering is available for certain advanced scripts).

For examples, see Richard Ishida's  Unicode character pickers, branah.com's  virtual keyboards or Tomasz Szynalski's  TypeIt where pickers are available per language or script, and laid out in such a way as to help with identifying the characters required. Some of these pickers provide a search feature or allow an existing string of text to be analysed.

Character Pickers

There are various utilities available to search for, copy and paste an extended character from one of the Unicode blocks.

For Windows there is  Unibook, for Ubuntu,  Gucharmap, and for OS X,  Font_Book.

Cross-platform applications such as  Libreoffice.org also provide glyph palettes (or “Insert special characters”) to find, copy and paste the characters you need.

USV entry methods

Some operating systems also provide a way to type in a character directly using its Unicode Scalar Value (USV).

On Windows, this is achieved by holding down the Alt key and entering "+" followed by the USV number using the numeric keypad in a text area. On Ubuntu this is achieved by holding down Shift and Ctrl, and entering 'U' followed by the USV number in a text area.

This method of finding characters is sometimes referred to as “using Alt Codes”. The drawback is that you need to know the numerical value corresponding to the character you are looking for. Making use of a character picker when the existing collection of characters is searchable is usually a more useful solution.

Keyboard Systems comparison charts

These charts are designed to assist with comparison of some of the main systems. There are separate tables for usage (ie what the keyboard can do) and keyboard development.

More systems will be added to the charts as research continues.

Keyboard usage comparison chart

Features MSKLC Keyman Inkey Ekaya KMFL Ukelele
Operating system W W W W L M
Input options
           
a) Map a single key to an output (including the use of modifiers) Y Y Y Y Y Y
b) Use deadkeys (which are not output) Y Y Y Y Y Y
c) Rotors to cycle through options N N Y N N N
d) Mnemonic and/or positional layouts P MP M MP MP P
Output options
             
e) Output multiple values from one input Y Y Y Y Y Y
f) Map to Unicode code points above Plane 0 Y Y Y Y Y Y
g) Replace previously output characters N Y Y Y Y N
h) Context sensitive output N Y Y Y Y N
i) Store in different order from input N Y Y Y Y Y
j) Enforce normalization in keyboard N Y Y Y Y Y
k) Keep track of original keystroke order N Y Y Y Y N
l) Advanced backspace handling N Y Y Y Y N
Other options
           
m) Freely downloadable Y N Y Y Y Y
n) On-screen keyboard available Y Y N N N Y
o) Can include user-selectable options for keyboard N Y Y N N N

Notes:

- The letter at the start of each feature is a link to the fuller Feature Descriptions table. Similarly that table has links back to this chart.
- Operating systems: Microsoft Windows (W), Mac OS X (M), Linux (L), Android (A). See detailed entries about individual systems for operating system versions etc
- For MSKLC and Ukelele this is really a list of what the underlying operating system keyboard system can do since that is what they produce

Feature descriptions

Feature Example
Usage: Input options
 
a) Can map a single key to one of the outputs this system supports. This includes using keys with modifiers like shift and alt 'd' ->  U+0E01
b) Use deadkeys - any key can be designated as a deadkey (which is not displayed on screen) and any single key following the deadkey can be mapped for output '-r' ->  U+024D
c) Rotors - can cycle through a number of possible output variants - for example by repeatedly pressing a key  
d) Is input based on the hardware positon (P) of the key or the mnemonic code (M) transmitted after processing by the operating system keyboard layout (If keyboards can be written both ways, MP is shown)
Usage: Output options
 
e) The output from a single input option can be multiple Unicode values '&' -> U+0E31 U+0E48
f) Can map inputs to Unicode code points above Plane 0 (the application must also be able to handle Plane 0 and higher)  
g) Can replace previously output characters 'r' -> 'r' and 'r-' ->  U+024D
h) The output can be based on the context - eg previously output characters '0' ->  U+02E9 if after another pitch character
i) Can do reordering, for example so that a prevowel is typed before a consonant but stored after it Users want to type  U+1031 before  U+1000 even though they are stored in the opposite order
j) Can enforce normalization in keyboard so that data is stored in a canonical form even if entered in different order  
k) Keep track of original keystroke order so that, even if output is reordered, then system can track keystroke order - eg for backspace handling or double-press detection  
l) Has options for advanced backspace handling With "e" + "'" -> é, can choose if backspace just deletes the accent or whole character
Usage: Other options
 
m) Freely downloadable - there is no cost to use the software  
n) An on-screen keyboard can be displayed to show the keyboard layout and optionally used for input  
o) Can include features to change the behaviour of the keyboard which can be selected by the user after installation  

Keyboard development comparison chart

Features MSKLC Keyman Inkey Ukelele
Operating system W W W M
Keyboard Sources
       
Can use any existing operating system keyboard as a starting point Y N N Y
Can use an existing Keyman keyboard as a starting point. This will require the Keyman source file (.kmn) rather than just a compiled keyboard N Y Y N
Developer GUI facilities
       
A GUI is available for creating the initial keyboard layout Y Y Y Y
Keyboards can be tested within the GUI Y Y N N
A debugger is available to track through the steps taken by the system when creating output from input N Y N N
Can create keyboard packages for distribution Y Y Y Y

Notes:

- Inkey here refers to the combination of the Inkey keyboarding system and the separate Inkey Keyboard Creator

Contributor David Raymond

Comments

0

No comments yet.

Properties

1
Associations
Topics Keyboards and Data Entry
Created 2012-09-12 09:08:04 by davidr
Modified 2013-03-28 11:13:46 by raymondmj
Status approved

Copyright © 2013 SIL International and released under the  Creative Commons Attribution-ShareAlike 3.0 license (CC-BY-SA) unless noted otherwise. Language data includes information from the  Ethnologue. Script information partially from the  ISO 15924 Registration Authority. Some character data from  The Unicode Standard Character Database and locale data from the  Common Locale Data Repository. Used by permission.