This document briefly describes the structure of the XML and bitmap files used to define a new keyboard (or new “Language”) for MessagEase Onscreen Keyboard.

The XML file

The XML file configures MessagEase Onscreen Keyboard (MEOK) with a new set of characters. It defines characters for each keyboard location and specifies pairs of characters that can be combined to create a third one.

This file must be called “Keyboard.xml” and must reside inside the folder with the name of the desired keyboard or language. When MEOK finds this file, it will insert the name of the language inside its “Lang” menu and enable you to switch to it.

<Keyboard> is the root element of this keyboard description.

The element <LanguageName> is not currently used.

The characters are specified either for <LetterSide> or <NumberSide> of the keyboard. If any element is left unspecified, the default (English keyboard) value will be used.

The elements of <LetterSide> and <NumberSide> parts are organized as row and columns of the keyboard. <Row1><Col1> refers to top left key (default A) and <Row1><Col2> refers to top middle key, etc.

You can define up to 18 (9x2) characters for each key. One pair for <Tap> and <Circle> and one pair (<Drag> and <DragReturn>) for each of the eight principle directions (E, NE, N, NW, W, SW, S, SE).

For example, the default specification for the middle key is:




You can specify characters directly (e.g. “J”) or by its Unicode code (e.g. “&#169;” for “©”) or by their HTML character sequence (e.g., “&gt;” for “>”)

A flag <LetterPair/> specified for a key location will make the pair sensitive to the shift/caps lock setting: In shift mode, the <Drag> and <DragReturn> letters will be interchanged. This is especially important for accented characters. For example, a key location will correctly implement the accented letter pair ä and Ä as follows:


You can also include this flag for special characters to make them shift-sensitive. This will be particularly useful if you want to create a keyboard with about twice the number of characters showing. You can include one set on the uppercase bitmaps and another on the lowercase one!

The <CombineList> elements following the <letterSide> and <NumberSide> specs defines the letter pairs (<FirstChar> and <SecondChar> that can be combined into a third one(ResultChar>). The format is:

<CombineElement><FirstChar>a</FirstChar><SecondChar>b</SecondChar><ResultChar>c</ResultChar><RotFlag/><AutoCombineFlag/> CombineElement>

<RotFlag/> makes this combination available in a set accessible by dragging on combine only after the first character is specified. For example, given the spec above, entering a single “a” and dragging on combine will eventually enter “c”.

<AutoCombineFlag/> will make the input of the first two to be replaced by the result character without the need of a combine drag. In case this result is not desired, a backspace will restore the first two.

The Bitmaps:

The set up bitmaps with their specified hierarchical order is used to pain different size, mode, and configuration of the keyboard.

There are three shapes: Normal (square), Horizontal, and Vertical, and each have sizes between 1 the smallest, and 6 the largest (smallest vertical keyboard is of size 2).

For Normal key board, there are four configurations for the letter keyboard: Uppercase, Uppercase busy, Lowercase, and Lowercase busy (UCKB, UCbusyKB, LCKB, LCbusyKB). There is one bitmap for each size of normal keyboard.