Ideazon ZBoard (thing)

The Ideazon ZBoard is an excellent keyboard. There have been many attempts at innovation in this field in, mainly on extending the 98-key layout to include such things as a "Windows key" and a Popup menu key. Also popular are multimedia control keys, to allow the user to control playback of music or video from the keyboard itself, without having to learn any keystrokes.
The ZBoard, however, incorporates these additions with one completely innovative extra; the keys themselves are detachable.

A ZBoard keyset is attached to the base station by slotting it into it, and clipping an attachment on the side onto the base. This results in the keys being attached firmly and in the correct position.

The keyset identifies itself to the base station using a microchip with 6 connectors, contained inside a small box next to the indicator LEDs, and secured by 2 Phillips head screws. This chipset is now common to all Zboards, but was originally limited to the Zboards of the country it was purchased in. For this reason, the Ideazon Neverwinter Nights Keyset will not work on any Zboards save those purchased in the USA.

The layout of the Zboard is stored in a proprietary format XML file, the basic structure of which is outlined here.

All elements are contained within a <m> tag. Inside this you find a <cover> tag, with the attributes id, name and template. The ID is, I assume, transmitted by the keyset, and is a 6 digit hexadecimal number. Each keyset can have multiple layouts assigned to it, by saving the XML in a file called xxxxxx00.xml xxxxxx01.xml, etc. where xxxxxx is the ID. The name attribute is self evident, and template is the known layout that this is based on, usually:

Game4:

Game1:Generic

Keyboard:108

Custom FPS games are based on Game4, the included FPS layout is Game1:Generic and the included Windows layout is based on Keyboard:108. The cover tag should be closed immediately.

Following this is the <ls> tag, which contains multiple <l> tags, which I believe control the toggle switches. They have an id of the form lx, where x is a number, a name, an initial value (init) which is boolean true/false, and an enabled value of the same type. Only the id and name are mandatory.

An L tag may contain an <las> tag, which in turn contains multiple <la> tags. I believe these to set LEDs when the button is pressed. An example is below.

Next the <ls> tag is closed, and the <apps> tag opened. This contains which applications can trigger the keyset to be selected. This is used to make sure that when you play a game, the correct keyset is automatically chosen. Here is the example for the Halo keyset.

Finally comes the <ks> tag, which contains <k> tags, which map physical keys to the keystrokes they perform. These are, I believe, represented by a hexadecimalASCII value of two characters. More than two characters are sometimes included, but never an odd number of hexadecimal digits. The parameters for a k tag are phys, for the physical key, and inside the tag is the hexadecimal.

Finally, the USB version of the Zboard has two USB 1.1 connectors on the back, which together provide 100mA.