•  Back 
  •  Main 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  %About 
  •  Show info about hypertext 
  •  View a new file 
Topic       : The ATARI Compendium
Author      : Scott Sanders / JAY Software
Version     : 1.25 (20/6/2003)
Subject     : Documentation
Nodes       : 1117
Index Size  : 32614
HCP-Version : 6
Compiled on : Atari
@charset    : UTF-8
@lang       : en
@default    : 
@help       : %About
@options    : +g -i -t4 +y +z
@width      : 100
View Ref-File                                                             Appendix F
                            IKBD Scan Codes


The AES, VDI, and BIOS, all contain functions which return scan codes
from the Intelligent Keyboard Controller (IKBD). These scan codes can be
used to determine exactly which key was struck (not simply the ASCII
value).

One thing that must be considered when relying on scan codes is that they
identify a physical vector on the keyboard, not a key definition. The
scancode for a letter on an American keyboard, for instance, may be
different than the scancode for the same letter on a German keyboard. The
XBIOS function Keytbl() can be used to look up the ASCII value assigned to
a scancode to ensure that keystrokes are correctly processed.

Scancodes for keyboard modifiers (SHIFT, ALT, etc.) are never returned by
an OS call. However, when handling the IKBD directly, the following
scancodes may be encountered:

   Key       Scancode

Left-Shift   42 (0x2A)

Right-Shift  54 (0x36)

Control      29 (0x1D)

Alternate    56 (0x38)

Caps Lock    58 (0x3A)

The values shown in the following table contain the IKBD scancode of each
keyboard key in the high BYTE and the ASCII code in the low BYTE. Keys
with no corresponding ASCII value will always have zero as the low byte.
These values are valid for all Atari computers with US keyboards:


Key            Unshifted   Key    Shifted   w/CTRL    w/ALT


a              0x1E61      A      0x1E41    0x1E01    0x1E00


b              0x3062      B      0x3042    0x3002    0x3000


c              0x2E63      C      0x2E43    0x2E03    0x2E00


d              0x2064      D      0x2044    0x2004    0x2000


e              0x1265      E      0x1245    0x1205    0x1200


f              0x2166      F      0x2146    0x2106    0x2100


g              0x2267      G      0x2247    0x2207    0x2200


h              0x2368      H      0x2348    0x2308    0x2300


i              0x1769      I      0x1749    0x1709    0x1700


j              0x246A      J      0x244A    0x240A    0x2400


k              0x256B      K      0x254B    0x250B    0x2500


l              0x266C      L      0x264C    0x260C    0x2600


m              0x326D      M      0x324D    0x320D    0x3200


n              0x316E      N      0x314E    0x310E    0x3100


o              0x186F      O      0x184F    0x180F    0x1800


p              0x1970      P      0x1950    0x1910    0x1900


q              0x1071      Q      0x1051    0x1011    0x1000


r              0x1372      R      0x1352    0x1312    0x1300


s              0x1F73      S      0x1F53    0x1F13    0x1F00


t              0x1474      T      0x1454    0x1414    0x1400


u              0x1675      U      0x1655    0x1615    0x1600


v              0x2F76      V      0x2F56    0x2F16    0x2F00


w              0x1177      W      0x1157    0x1117    0x1100


x              0x2D78      X      0x2D58    0x2D18    0x2D00


y              0x1579      Y      0x1559    0x1519    0x1500


z              0x2C7A      Z      0x2C5A    0x2C1A    0x2C00


1              0x0231      !      0x0221    0x0211    0x7800


2              0x0332      @      0x0340    0x0300    0x7900


3              0x0433      #      0x0423    0x0413    0x7A00


4              0x0534      $      0x0524    0x0514    0x7B00


5              0x0635      %      0x0625    0x0615    0x7C00


6              0x0736      ^      0x075E    0x071E    0x7D00


7              0x0837      &      0x0826    0x0817    0x7E00


8              0x0938      *      0x092A    0x0918    0x7F00


9              0x0A39      (      0x0A28    0x0A19    0x8000


0              0x0B30      )      0x0B29    0x0B10    0x8100


-              0x0C2D      _      0x0C5F    0x0C1F    0x8200


=              0x0D3D      +      0x0D2B    0x0D1D    0x8300


`              0x2960      ~      0x297E    0x2900    0x2960


\              0x2B5C      |      0x2B7C    0x2B1C    0x2B5C


[              0x1A5B      {      0x1A7B    0x1A1B    0x1A5B


]              0x1B5D      }      0x1B7D    0x1B1D    0x1B5D


;              0x273B      :      0x273A    0x271B    0x273B


'              0x2827      "      0x2822    0x2807    0x2827


,              0x332C      <      0x333C    0x330C    0x332C


.              0x342E      >      0x343E    0x340E    0x342E


/              0x352F      ?      0x353F    0x250F    0x352E


space          0x3920             0x3920    0x3900    0x3920


esc            0x011B             0x011B    0x011B    0x011B


bksp           0x0E08             0x0E08    0x0E08    0x0E08


del            0x537F             0x537F    0x531F    0x537F


return         0x1C0D             0x1C0D    0x1C0A    0x1C0D


tab            0x0F09             0x0F09    0x0F09    0x0F09


Nmpad (        0x6328             0x6328    0x6308    0x6328


Nmpad )        0x6429             0x6429    0x6409    0x6429


Nmpad /        0x652F             0x652F    0x650F    0x652F


Nmpad *        0x662A             0x662A    0x660A    0x662A


Nmpad _        0x4A2D             0x4A2D    0x4A1F    0x4A2D


Nmpad +        0x4E2B             0x4E2B    0x3E0B    0x4E2B


Nmpad .        0x712E             0x712E    0x710E    0x712E


Nmpad enter    0x720D             0x720D    0x720A    0x720D


Nmpad 0        0x7030             0x7030    0x7010    0x7030 Atari computers with TOS 2.0 or higher
do not generate scan codes for the ALT-Numeric
Keypad numbers. Instead they allow the user to
enter any key by holding ALT while typing the
ASCII code number and than releasing ALT to
generate the keypress.



Nmpad 1        0x6D31             0x6D31    0x6D11    0x6D31 Atari computers with TOS 2.0 or higher
do not generate scan codes for the ALT-Numeric
Keypad numbers. Instead they allow the user to
enter any key by holding ALT while typing the
ASCII code number and than releasing ALT to
generate the keypress.



Nmpad 2        0x6E32             0x6E32    0x6E00    0x6E32 Atari computers with TOS 2.0 or higher
do not generate scan codes for the ALT-Numeric
Keypad numbers. Instead they allow the user to
enter any key by holding ALT while typing the
ASCII code number and than releasing ALT to
generate the keypress.



Nmpad 3        0x6F33             0x6F33    0x6F13    0x6F33 Atari computers with TOS 2.0 or higher
do not generate scan codes for the ALT-Numeric
Keypad numbers. Instead they allow the user to
enter any key by holding ALT while typing the
ASCII code number and than releasing ALT to
generate the keypress.



Nmpad 4        0x6A34             0x6A34    0x6A14    0x6A34 Atari computers with TOS 2.0 or higher
do not generate scan codes for the ALT-Numeric
Keypad numbers. Instead they allow the user to
enter any key by holding ALT while typing the
ASCII code number and than releasing ALT to
generate the keypress.



Nmpad 5        0x6B35             0x6B35    0x6B15    0x6B35 Atari computers with TOS 2.0 or higher
do not generate scan codes for the ALT-Numeric
Keypad numbers. Instead they allow the user to
enter any key by holding ALT while typing the
ASCII code number and than releasing ALT to
generate the keypress.



Nmpad 6        0x6C36             0x6C36    0x6C1E    0x6C36 Atari computers with TOS 2.0 or higher
do not generate scan codes for the ALT-Numeric
Keypad numbers. Instead they allow the user to
enter any key by holding ALT while typing the
ASCII code number and than releasing ALT to
generate the keypress.



Nmpad 7        0x6737             0x6737    0x6717    0x6737 Atari computers with TOS 2.0 or higher
do not generate scan codes for the ALT-Numeric
Keypad numbers. Instead they allow the user to
enter any key by holding ALT while typing the
ASCII code number and than releasing ALT to
generate the keypress.



Nmpad 8        0x6838             0x6838    0x6818    0x6838 Atari computers with TOS 2.0 or higher
do not generate scan codes for the ALT-Numeric
Keypad numbers. Instead they allow the user to
enter any key by holding ALT while typing the
ASCII code number and than releasing ALT to
generate the keypress.



Nmpad 9        0x6939             0x6939    0x6919    0x6939 Atari computers with TOS 2.0 or higher
do not generate scan codes for the ALT-Numeric
Keypad numbers. Instead they allow the user to
enter any key by holding ALT while typing the
ASCII code number and than releasing ALT to
generate the keypress.



help           0x6200             0x6200    0x6200    Alt-Help ∙∙This key doesn't generate a keycode, rather
it triggers the screen dump interrupt.



undo           0x6100             0x6100    0x6100    0x6100


insert         0x5200             0x5230    0x5200    Left Mouse Button ∙∙∙These keycodes are mouse-equivalent keys
and generate mouse events rather than keycodes.



clr/ Home      0x4700             0x4737    0x7700    Right Mouse Button∙∙∙These keycodes are mouse-equivalent keys
and generate mouse events rather than keycodes.



up-arrow       0x4800             0x4838    0x4800    Mouse Up ∙∙∙These keycodes are mouse-equivalent keys
and generate mouse events rather than keycodes.



down-arrow     0x5000             0x5032    0x5000    Mouse Down ∙∙∙These keycodes are mouse-equivalent keys
and generate mouse events rather than keycodes.



left-arrow     0x4B00             0x4B34    0x7300    Mouse Left ∙∙∙These keycodes are mouse-equivalent keys
and generate mouse events rather than keycodes.



right-arrow    0x4D00             0x4D36    0x7400    Mouse Right ∙∙∙These keycodes are mouse-equivalent keys
and generate mouse events rather than keycodes.



F1             0x3B00      F11    0x5400    0x3B00    0x3B00


F2             0x3C00      F12    0x5500    0x3C00    0x3C00


F3             0x3D00      F13    0x5600    0x3D00    0x3D00


F4             0x3E00      F14    0x5700    0x3E00    0x3E00


F5             0x3F00      F15    0x5800    0x3F00    0x3F00


F6             0x4000      F16    0x5900    0x4000    0x4000


F7             0x4100      F17    0x5A00    0x4100    0x4100


F8             0x4200      F18    0x5B00    0x4200    0x4200


F9             0x4300      F19    0x5C00    0x4300    0x4300


F10            0x4400      F20    0x5D00    0x4400    0x4400