KeyboardTest V3 FAQ
Last updated: 2/February/2015
Q. My License key does not seem to work.
Both the User Name and Registration Key must be correctly entered before the software turns itself into the registered version. See this step by step guide for help.
Q. We manufacturer keyboards. How can we keep a record of each keyboard
There is a new batch mode test option introduced in version 2.1 of KeyboardTest. This mode allows the logging of keyboards tested, errors, serial numbers and other important details. Once in batch mode the program flow is as follows.
The /b command line parameter is used to place KeyboardTest into batch mode. You can add this option to the command line of KeyboardTest by right clicking on the icon for KeyboardTest and selecting properties. Then in the target field add /b at the end. Additional details on batch mode can be found the KeyboardTest help file that comes with the software.
Q. When I press both Shift keys down, only the last released shift
key is registered as coming up. Why ?
When both shift keys (Windows code 0x10 or VK_SHIFT) are depressed, Windows only passes a shift KEYUP message for the last shift key released, to applications such as KeyboardTest. KeyboardTest is hence limited to detecting only the last shift key released.
Only one shift key is registered by KeyboardTest when the key code is set to windows but both are registered when in BIOS mode?
Windows uses the same message when either of the shift keys are used.
Q. Is there a limit on how many custom keyboard I can have?
It is possible to add up to 100 custom keyboards for specialized user requirements.
Q. Are there any additional keyboard layouts available for download
Yes, see the Keyboard layout download page
Q. Can I send you my custom keyboard layout for addition to our web
If you have a keyboard that is not in the list above and have made a new layout file for it. Please send it in. We will include it on this page. Make sure you send in both the layout file (xxxx.kbl) and the image file (xxx.bmp). Mail these files to
Q. How do I add a keyboard layouts?
There are some additional keyboard layouts made by other people on the, Keyboard layout download page, but you can also make your own layout files.
- Create a new keyboard layout file <mylayoutname>.kbl. This file will contain all the information about all the keys on a keyboard. See the three examples (DellPortInt.kbl, DellPortUS.kbl and AT107 + Mouse.kbl) files that are installed as part of the KeyboardTest package in the Program files directory. Kbl files are in csv format. For more information on the structure of .kbl files see "Tell me more about keyboard layout files" below.
- Create a new bitmap file <mylayoutname>.bmp. This should be a 700 pixel x 340 pixel x 256 color close up picture of your new keyboard. Again, see the three examples (files DellPortInt.bmp, DellPortUS.bmp & AT107.bmp). The name of this file should be exactly the same as the .kbl file.
- Make sure both of these files are placed into the KeyboardTest, installation directory. Normally, C:\Program Files\KeyboardTest.
- On startup, KeyboardTest loads the first 20 .kbl files along with
their corresponding bitmaps. A .kbl file with an incorrect format, or
a .kbl file without the corresponding .bmp file will be flagged as an
Q. Tell me more about keyboard layout files.
Kbl files are comma separated variable (csv) text files. Each line of the file corresponds to one key. There should be no unnecessary white space. There are 10 mandatory values per line which define each key. These are followed by 11 optional fields that can be specified to define a compound key. A compound key is a single key on the keyboard that generates multiple key presses. For example, a keyboard generates the keys "W","W","W",".", when the compound key "WWW.", is depressed Thirty compound keys can be defined for each keyboard layout. Each value must be one of the following.
- A number value.
- A single character value. The character must be surrounded by single quotes. The character is converted to its ASCII code value as the file is read.
- A string value. Strings must be surrounded by double quotes.
Comments can be added by using a # as the first character in a line (see
The values in the order they must appear on each line of the .kbl file are as follows.
Windows scan code for this key (After language translation). This can be in 3 formats, a number, a single character, or a string value denoting a predefined constant (ref. Windows key codes reference in help). If the key being defined is a compound key, the string COMPOUND must be used for this field. If the key being defined is a Mouse button, the strings LMOUSE, MMOUSE and "RMOUSE" must be used for the left, middle and right mouse buttons, respectively. For example:
A number value which is the OEM scan code for this key (before language translation).
A string value denoting the name of the key eg "K", "Tab"
A string value. "False" if part of normal keyboard, "True" if part of extended keyboard. Eg Numeric keypad
A string value denoting the test status of the key.
"KTSTATUSNOTEST" = Don't test this key
"KTSTATUSUP" = Test this key (key starts in the up position)
"KTSTATUSFAIL" = This indicator is specific to compound keys. It is used to indicate that the defined compound key should be used for automatic testing of failures such as row and column hardware shorts. Specifically, when this status is used to define a compound key, KeyboardTest will check whether the defined keys (specified by up to 10 compound key characters) are pressed in any order (ie. A hardware short) within the compound key timer limits described below.
Note 1: This compound key will be ignored when testing for the automatic pass condition,
Note 2: This key definition differs to a compound key defined with Status equal to KTSTATUSUP, which matches the keys in the order pressed.
Note 3: This indicator will be ignored when not in batch mode (no automatic failure or pass).
Number value. Not used, but must be present in file and must be set to 0. Reserved for future expansion.
Number values. The X and Y offset of the key on the keyboard image in pixels, (Top Left corner). Note: Getting these values and the width and height values correct can take some time and trial and error.
Number values. The Width and Height the key on the keyboard image in pixels.
COMPOUND KEYS - OPTIONAL PARAMETERS:
The following parameters are required to define a compound key.
If the key being defined is not a compound key, the Height value (described above) must be the last entry on the line.
If the key being defined is a compound key, the Compound key timer must be specified, followed by the characters (specified as Windows ScanCode decimal numbers). At least one character must be defined for a compound key, up to a maximum of 10. Each parameter must be separated by a ",". For example, to define "WWW.", as a compound key, the following should be included in the .kbl file:
Where 500 is the Compound key timer (described below), 87 (Hexadecimal 57) is the Scancode for "W" and 190 the Scancode for ".".
If the key being defined is a compound key for testing for failure due to hardware shorts, the Compound key timer must be specified, followed by the characters (specified as Windows ScanCode decimal numbers). At least one character must be defined for a compound key, up to a maximum of 10. Each parameter must be separated by a ",". For example, to define a short between rows 1 and 2, select one key from each row (eg ESC and `, ie. 27 and 192) and add the following to the .kbl file:
Compound key timer:
Number value. The Compound key timer indicates a maximum value (in ms) between characters generated by the keyboard when a compound key is depressed. For example, the maximum time allowed between one "W" and the next "W" being received. If this timer value is exceeded, the key presses will be treated as individual key presses and not a compound key.
Compound key characters - Windows scan codes:
A comma separated list of between 1 and 10 number values. Windows scan code for each of the compound key characters (after language translation), specified as a decimal number (see above example).
We recommend that the best way to create a custom layout file is to make a copy of one of the three existing sample files and edit the lines as necessary.