The keyboard data is not received in the form of ASCII characters. Instead, for maximum versatility, it is received in the form of keycodes. These codes include both the down and up transitions of the keys. This allows your software to use both sets of information to determine exactly what is happening on the keyboard. Here is a list of the hexadecimal values that are assigned to the keyboard. A downstroke of the key transmits the value shown here. An upstroke of the key transmits this value plus $80. The picture of the keyboard shows the positions that correspond to the description in the sections below. Note that raw keycodes provide positional information only, the legend which is printed on top of the keys changes from country to country. raw keycodes -> 00-3f hex raw keycodes -> 40-5f hex (codes common to all keyboards) raw keycodes -> 60-67 hex (key codes for qualifier keys) f0-ff hex