The low key map provides translation of the key values from hex 00-3F; the
high key map provides translation of key values from hex 40-7F. Key values
from hex 68-7F are not used by the existing keyboards, but this may change
in the future. A raw key value (hex 00-7F) plus hex 80 is the release of
that key. If you need to check for raw key releases do it like this:
if (keyvalue & 0x80) { /* do key up processing */ }
else { /* do key down processing */ }
Raw output from the keyboard for the low key map does not include the
space bar, Tab, Alt, Ctrl, arrow keys, and several other keys.
Table 34-3: High Key Map Hex Values
Key Keycap Legend Key Keycap Legend
Number or Function Number or Function
------ ------------- ------ -------------
40 Space 50-59 Function keys F1-F10
41 Backspace 5A-5E Numeric Pad characters
42 Tab 5F Help
43 Enter 60 Left Shift
44 Return 61 Right Shift
45 Escape 62 Caps Lock
46 Delete 63 Control
4A Numeric Pad character 64 Left Alt
4C Cursor Up 65 Right Alt
4D Cursor Down 66 Left Amiga
4E Cursor Right 67 Right Amiga
4F Cursor Left
The keymap table for the low and high keymaps consists of 4-byte entries,
one per hex key code. These entries are interpreted in one of three
possible ways:
* As four separate bytes, specifying how the key is to be
interpreted when pressed alone, with one qualifier, with another
qualifier, or with both qualifiers (where a qualifier is one of
three possible keys: Ctrl, Alt, or Shift).
* As a longword containing the address of a string descriptor,
where a string of characters is to be output when this key is
pressed. If a string is to be output, any combination of
qualifiers can affect the string that may be transmitted.
* As a longword containing the address of a dead-key descriptor,
where additional data describe the character to be output when
this key is pressed alone or with another dead key.
The keymap tables must be word aligned.
---------------------------------------
The keymap tables must begin aligned on a word boundary. Each
entry is four bytes long, thereby maintaining word alignment
throughout the table. This is necessary because some of the entries
may be longword addresses and must be aligned properly for the
68000.