[General Topics] Menneisyys:
1.2.1 A caveat: very important!

When you install ANY language pack, HKEY_LOCAL_MACHINE\ Software\Tegic\eT9\ AvailableLanguages (see section 1.1) will be overridden and the old dictionaries NOT present in the just-installed one will just disappear! Therefore, you MUST for example save the original contents of this entry and, after installing ANY language pack, just concatenate these numbers to the new ones.

For example, if you install the Scandinavian pack on a handheld that previously had the MoDaCo multilingual pack, eT9\AvailableLanguages will contain only the following after the import (that is, four languages; not even English):

011D,0114,010B,0106

instead of the combination of both packs, listing all the languages in both of them; that is,

0109,010C,0107,0110,010A,0113,0105,0108,0118,0115,0116,011B,011F,010E,011D,0114,010B,0106

(I’ve used italic to denote the languages installed by the previously and, by bold, the Scandinavian pack.)

Therefore, you’ll need to re-add the, now, invisible languages to eT9\AvailableLanguages. Should you be aware of this (by manually editing the Registry), just use for example THIS registry import script.

1.2.2 Compatibility

These files worked just great on my HTC Vox. They, however, didn’t work at all on my WM5 AKU3 HTC Oxygen (s310).

2. Redefining the layout of the built-in hardware keyboard (thumbboard)

Unlike on the Pocket PC, where you could quickly swap the keyboard layout by just editing (as is described in the “Change slide-out keyboard layout” section of the related XDA-Dev Wiki page)

With this platform, the situation is a bit more complicated: you must supply the full keyboard mapping file and, in addition, you must also register it in the Registry.

2.1 Keyboard layout files

The recommended (but not compulsory) naming convention for a keyboard mapping file is the following:

eT9.Vox.XXXX.kmap.txt

where XXXX is the official language code (see the already-linked MSDN page for them) and you can change “Vox” to “Excalibur” on the HTC Excalibur (or anythign similar on other, keyboard-enabled devices). Note that, the Smartphone platform (as opposed to Pocket PC) lacking related file name conventions (you must explicitly refer to the keyboard mapping file in the Registry), it can be named anything. I only use this name to be compliant with the naming conventions used by the Vox version of the MoDaCo dictionary installer.

The contents of these files may seem a bit complicated at first but you will soon be able to navigate around. For example, let’s have a look at the following (Greek) configuration file:

As one can see, there are five fields (referred to as {VK VK' CH1 CH2 KeyIndex} by the code samples) in each record defining a button. The first of them just lists what is physically printed on the key and doesn’t need to be touched – it’s only for human consumption, to give you a helping hand when editing the keyboard map file. The second is more important: it’s what you will want to modify when defining a different letter to be input when you press a button. The third and fourth fields define the symbols produced by Fn + key and the symbols entered in 123 mode (the latter two is the same). Finally, you don’t need to touch the last field either.

Note that you can entirely leave the last field (KeyIndex) off (as is in the German layout I provide below). Then, only the first field in the record will be used to determine which key you’re talking about. An example of this (with the German layout):

{Q Q @ @}

{W W ! !}

{E E 0 0}

{R R 1 1}

{T T 2 2}

{Y Z 3 3}

{U U + +}

{I I / /}

{O O ( (}

{P P ) )}

{A A ? ?}

{S S * *}

{D D 4 4}

{F F 5 5}

{G G 6 6}

{H H - -}

{J J _ _}

{K K : :}

{L L ; ;}

{Z Y 0x09 Z}

{X X # #}

{C C 7 7}

{V V 8 8}

{B B 9 9}

{N N 0xFA N} // 0xFA = Launch symbol window

{M M 0xFB M} // 0xFB = Launch SMS

{0xBE . , ,} // 0xBE = VK_PERIOD

{0x26 0x26 0x21 0x26} // 0xF1 = up arrow, 0x21 = page up

{0x28 0x28 0x22 0x28} // 0xF2 = down arrow, 0x22 = page down

{0x25 0x25 0xFD 0x25} // 0xF3 = left arrow, 0xFD = launch pIE

{0x27 0x27 0xDE 0x27} // 0xF4 = right arrow, 0xDE = '

Let’s take a closer look at the Z and the Y records above: that is, the two records you need to modify to get the German layout out of the English one (on limited keyboards not having a number row and non-alphabetic keys):

{Z Y 0x09 Z}

…

{Y Z 3 3}

As you can see, if you need to instruct the handheld to enter a ‘Y’ character when you press the “Z” button, you need to modify the “Z” record.

(Note that this map file is HERE and the accompanying Registry import file – see the next, 2.2 section – HERE)

2.2 Registering keyboard layout files in the Registry

Only providing keyboard layout files (see section 2.1) is insufficient. You must also register these files in the Registry so that the system knows you use a, from English, different keyboard layout.

To do this, you must register they layout file under both HKEY_LOCAL_MACHINE\Software\ Tegic\eT9\IME\ KeyboardLayouDlls and HKEY_LOCAL_MACHINE\Software\ Tegic\eT9\IME\ LanguageKeyboardIDMapping.

With the former, you must create a new value named 000007XX, where XX is the lower byte of the language code (for example, 07 for (the 0407 hexa) German), with the value containing the map file (for example, for a German map, "eT9.Vox.0407.kmap.txt").

With the latter, you must map the language and the keyboard layout together. To do this, you must create a value named after the language ID (with the changes outlined in Section 1.1.1; that is, changing 4 to 1 in the upper byte). Its value must be the lower (16-bit) word of the KeyboardLayouDlls registration – as a String (incidentally, as with, for example, the Pocket PC keyboard language string under HKCU\ControlPanel\ Keybd\Locale).

That is, with the German example, the two new values you must create are the following:

[HKEY_LOCAL_MACHINE\Software\Tegic\eT9\IME\KeyboardLayouDlls]

"00000707"="eT9.Vox.0407.kmap.txt"

[HKEY_LOCAL_MACHINE\Software\Tegic\eT9\IME\LanguageKeyboardIDMapping]

"0107"="0707"

Again, the value of the second value refers back to the first.

Note that, unfortunately, defining a keyboard mapping file to fix the well-known, annoying HTC Vox bug affecting many games / emulators (for example, ScummVM) won’t work. Yes, I’ve tested this (HERE is the file completely switching off numbers in Fn mode) and it didn’t work – pressing the E, R, T, Y, D, F, G, C, V and B keys on the keyboard still resulted in the numbers 0, 1,… 9 being input.

2.3 What about AEKMap?

The well-known AEKMap has gone a LONG way since its first versions (then, only usable with external USB keyboard). This, unfortunately, also means it has gone commercial – at least as far as accessing its advanced features are concerned. The current version is pretty powerful and also supports Smartphones. Unfortunately, very few ready-made Smartphone-related config / layout files are available now, which means you will end up having to write one yourself if you want to use a non-English mapping.

As I find the non-AEKMap way is more system-friendly, I’d, myself, prefer defining your keyboard layout using it, the traditional way. However, you will still want to give AEKMap a try to see whether you can use its advanced capabilities.

3. Tips for ThinkOutstide StowAway keyboard support

Unfortunately, currently, the StowAway keyboards by Mobility Electronics, Inc. (ex- ThinkOutstide) are, officially, not supported by the manufacturer on several Smartphone models. However, this is in no way a problem: if you have a HTC Vox, just download the driver meant for Excalibur (accessible HERE), it’ll work just great. The same may stand for other, officially, not supported models - just give a try to drivers meant for other smartphones (preferably running the same operating system version).

This also means you can safely redefine the keyboard layout by both ThinkOutstide’s official tool (which must be requested by mail as can be read HERE) and, most probably, AEKMap.