
     _  _ ____ _   _ ___  ____ ____ ____ ___     ____ ____ ___ _  _ ___
     |_/  |___  \_/  |__] |  | |__| |__/ |  \    [__  |___  |  |  | |__]
     | \_ |___   |   |__] |__| |  | |  \ |__/    ___] |___  |  |__| |


			   by Shawn Hargreaves



The Allegro keyboard module contains a default set of mapping tables for the 
US keyboard layout. Other keyboard types are supported by loading an 
alternate set of mappings from an external configuration file (either a 
separate file or a member object in keyboard.dat), which is specified by 
setting the "keyboard=" parameter in allegro.cfg. The end user should simply 
be able to place a copy of keyboard.dat into the same directory as their 
program, and then select whichever of the preset layouts they would like to 
use. If there is no mapping table for your keyboard type, though, you will 
have to use this program to create one. Having done so, please send me a 
copy so I can include it in future versions of Allegro!

When you load the keyconf utility, the standard US mappings will be 
selected. If you want to start from one of the other layouts, use the 
grabber to export the mapping you want from keyboard.dat into a .cfg file, 
and then load this file into keyconf.

There are several mapping tables, listing what Unicode characters correspond 
to each hardware scancode for various states of the ctrl/shift/alt keys. 
Select each table in turn from the Edit menu, double-click on the key that 
you want to alter, and then select the Unicode character that it should be 
mapped onto. The top half of the character selection screen lists characters 
from the current page (low byte of the 16 bit Unicode value), while the 
bottom half allows you to switch to a different page (high byte of the 16 
bit Unicode value). If you map a key to 0xFFFF, the current shift state will 
be used in place of any fixed character code, which is useful for things 
like the arrows and function keys. Press ESC to quit back to the previous 
screen without altering the character.

The different mapping tables are:

Normal
   The regular set of ASCII characters for use when no modifier keys are 
   pressed. This table must be set correctly!

Capslock
   Uppercase ASCII characters for use when the capslock function is engaged. 
   This table must be set correctly!

Shifted
   Uppercase ASCII characters and alternate versions of the numeric and 
   punctuation keys, for use when the shift key is held down. This table 
   must be set correctly!

Control
   Control codes, for use when the control key is held down. This should 
   contain the numeric indexes of the ASCII keys, eg. A=1, B=2, C=3, etc. 
   You will not normally need to edit this table, unless some of the 
   alphabetic characters have been mapped onto different keys.

Alt-Gr
   Alternate ASCII codes for use when the Alt-Gr key is held down. Any keys 
   that don't behave specially in this context should be mapped to zero.
   Note that, by default, lowercase and uppercase letters are not 
   differentiated by keyconf when Alt-Gr is being held down. If you do want 
   to specify two different mappings for lowercase and uppercase letters, 
   run keyconf with the option --split-altgr from the command line.

Accent*
   Lists of accented ASCII characters. There are four accent escape keys, 
   which can be selected from the Misc menu (set them to zero if your layout 
   has no accent keys). Each of the accent keys has an activator flags,
   which determines, what additional key must be pressed with the accent
   key to enable the accent. The activator key value can be 0, which means,
   that no other key has to be pressed; it can be 1 for SHIFT, 2 for CONTROL
   or 3 for ALT. The difference from the previous version of Allegro is, 
   that you can use one key for two accents or for one accent and a normal
   ASCII (UNICODE) character, or one key for all four accents, or whatever
   you want. This gives a total of four different accents, which are applied
   on top of whatever character is pressed immediately after the accent. These 
   eight tables list the mapping codes for all accent keys in normal
   (lowercase letter typed after the accent) and caps (uppercase letter typed
   after the accent) forms. Any characters that don't support the accent
   should be mapped onto zero.

When everything is working properly, save your new layout into a .cfg file. 
To use the new mapping, set the "keyboard=" parameter in allegro.cfg to the 
name of this .cfg file (just the basename is enough, without the .cfg 
extension). You can also use the grabber to add your new layout to the 
keyboard.dat file, after which you will be able to delete the original file 
(Allegro will automatically look in keyboard.dat if it doesn't find the 
mapping in a separate file). Then fire up your favourite email program, and 
send me a copy of the new layout...

If you create a keyconf.dat file containing an object named BASE_FONT, the 
keyconf program will use that instead of the default font. This can be 
useful when making a key mapping for character sets that aren't included in 
the default font.
