C     Include file for extended key codes and control keys

C     ASCII control keys

      INTEGER*4 KEY$NULL, KEY$SOH, KEY$STX, KEY$ETX, KEY$EOT, KEY$ENQ
      INTEGER*4 KEY$ACK, KEY$BELL, KEY$BACK, KEY$SH_BACK, KEY$BS
      INTEGER*4 KEY$HT, KEY$TAB, KEY$LF, KEY$LINEFEED, KEY$VT, KEY$VTAB
      INTEGER*4 KEY$FF, KEY$FORMFEED, KEY$CR, KEY$SO, KEY$SI
      INTEGER*4 KEY$SH_TAB, KEY$DLE, KEY$DC1, KEY$DC2, KEY$DC3, KEY$DC4
      INTEGER*4 KEY$NAK, KEY$SYN, KEY$ETB, KEY$CAN, KEY$EM, KEY$SUB
      INTEGER*4 KEY$ESC, KEY$FS, KEY$GS, KEY$RS, KEY$US, KEY$SPACE
      INTEGER*4 KEY$DEL, KEY$CTL_BACK

      PARAMETER (KEY$NULL     = #00)
      PARAMETER (KEY$SOH      = #01)
      PARAMETER (KEY$STX      = #02)
      PARAMETER (KEY$ETX      = #03)
      PARAMETER (KEY$EOT      = #04)
      PARAMETER (KEY$ENQ      = #05)
      PARAMETER (KEY$ACK      = #06)
      PARAMETER (KEY$BELL     = #07)
      PARAMETER (KEY$BS       = #08)
      PARAMETER (KEY$BACK     = #08)
      PARAMETER (KEY$SH_BACK  = #08)
      PARAMETER (KEY$HT       = #09)
      PARAMETER (KEY$TAB      = #09)
      PARAMETER (KEY$LF       = #0A)
      PARAMETER (KEY$LINEFEED = #0A)
      PARAMETER (KEY$VT       = #0B)
      PARAMETER (KEY$VTAB     = #0B)
      PARAMETER (KEY$FF       = #0C)
      PARAMETER (KEY$FORMFEED = #0C)
      PARAMETER (KEY$CR       = #0D)
      PARAMETER (KEY$ENTER    = #0D)
      PARAMETER (KEY$SO       = #0E)
      PARAMETER (KEY$SI       = #0F)
      PARAMETER (KEY$SH_TAB   = #0F)
      PARAMETER (KEY$DLE      = #10)
      PARAMETER (KEY$DC1      = #11)
      PARAMETER (KEY$DC2      = #12)
      PARAMETER (KEY$DC3      = #13)
      PARAMETER (KEY$DC4      = #14)
      PARAMETER (KEY$NAK      = #15)
      PARAMETER (KEY$SYN      = #16)
      PARAMETER (KEY$ETB      = #17)
      PARAMETER (KEY$CAN      = #18)
      PARAMETER (KEY$EM       = #19)
      PARAMETER (KEY$SUB      = #1A)
      PARAMETER (KEY$ESC      = #1B)
      PARAMETER (KEY$FS       = #1C)
      PARAMETER (KEY$GS       = #1D)
      PARAMETER (KEY$RS       = #1E)
      PARAMETER (KEY$US       = #1F)
      PARAMETER (KEY$SPACE    = #20)

      PARAMETER (KEY$DEL      = #7F)
      PARAMETER (KEY$CTL_BACK = #7F)

      INTEGER*4 KEY$SH_HOME, KEY$SH_UP, KEY$SH_PGUP, KEY$SH_LEFT
      INTEGER*4 KEY$SH_RIGHT, KEY$SH_END, KEY$SH_DOWN, KEY$SH_PGDN
      INTEGER*4 KEY$SH_INS, KEY$SH_DEL

      PARAMETER (KEY$SH_HOME       =  55)    ! '7'
      PARAMETER (KEY$SH_UP         =  56)    ! '8'
      PARAMETER (KEY$SH_PGUP       =  57)    ! '9'
      PARAMETER (KEY$SH_LEFT       =  52)    ! '4'
      PARAMETER (KEY$SH_MIDDLE     =  53)    ! '5'
      PARAMETER (KEY$SH_RIGHT      =  54)    ! '6'
      PARAMETER (KEY$SH_END        =  49)    ! '1'
      PARAMETER (KEY$SH_DOWN       =  50)    ! '2'
      PARAMETER (KEY$SH_PGDN       =  51)    ! '3'
      PARAMETER (KEY$SH_INS        =  48)    ! '0'
      PARAMETER (KEY$SH_DEL        =  46)    ! '.'

C     Keys signaling that the next key is an extended code

      INTEGER*4 KEY$EXTEND, KEY$EXTEND2

      PARAMETER (KEY$EXTEND   = #00) ! On old keyboard and numeric keypad
      PARAMETER (KEY$EXTEND2  = #E0) ! Direction kyes on new keyboard

C     Extended key codes

      INTEGER*4 EXT$ALT_1, EXT$ALT_2, EXT$ALT_3, EXT$ALT_4, EXT$ALT_5
      INTEGER*4 EXT$ALT_6, EXT$ALT_7, EXT$ALT_8, EXT$ALT_9, EXT$ALT_0
      INTEGER*4 EXT$ALT_DASH, EXT$ALT_EQUAL, EXT$CTL_2

      PARAMETER (EXT$ALT_1         = 120)
      PARAMETER (EXT$ALT_2         = 121)
      PARAMETER (EXT$ALT_3         = 122)
      PARAMETER (EXT$ALT_4         = 123)
      PARAMETER (EXT$ALT_5         = 124)
      PARAMETER (EXT$ALT_6         = 125)
      PARAMETER (EXT$ALT_7         = 126)
      PARAMETER (EXT$ALT_8         = 127)
      PARAMETER (EXT$ALT_9         = 128)
      PARAMETER (EXT$ALT_0         = 129)
      PARAMETER (EXT$ALT_DASH      = 130)
      PARAMETER (EXT$ALT_EQUAL     = 131)

      PARAMETER (EXT$CTL_2         =   3)

      INTEGER*4 EXT$ALT_Q, EXT$ALT_W, EXT$ALT_E, EXT$ALT_R, EXT$ALT_T
      INTEGER*4 EXT$ALT_Y, EXT$ALT_U, EXT$ALT_I, EXT$ALT_O, EXT$ALT_P
      INTEGER*4 EXT$ALT_A, EXT$ALT_S, EXT$ALT_D, EXT$ALT_F, EXT$ALT_G
      INTEGER*4 EXT$ALT_H, EXT$ALT_J, EXT$ALT_K, EXT$ALT_L, EXT$ALT_Z
      INTEGER*4 EXT$ALT_X, EXT$ALT_C, EXT$ALT_V, EXT$ALT_B, EXT$ALT_N
      INTEGER*4 EXT$ALT_M

      PARAMETER (EXT$ALT_Q         =  16)
      PARAMETER (EXT$ALT_W         =  17)
      PARAMETER (EXT$ALT_E         =  18)
      PARAMETER (EXT$ALT_R         =  19)
      PARAMETER (EXT$ALT_T         =  20)
      PARAMETER (EXT$ALT_Y         =  21)
      PARAMETER (EXT$ALT_U         =  22)
      PARAMETER (EXT$ALT_I         =  23)
      PARAMETER (EXT$ALT_O         =  24)
      PARAMETER (EXT$ALT_P         =  25)
      PARAMETER (EXT$ALT_A         =  30)
      PARAMETER (EXT$ALT_S         =  31)
      PARAMETER (EXT$ALT_D         =  32)
      PARAMETER (EXT$ALT_F         =  33)
      PARAMETER (EXT$ALT_G         =  34)
      PARAMETER (EXT$ALT_H         =  35)
      PARAMETER (EXT$ALT_J         =  36)
      PARAMETER (EXT$ALT_K         =  37)
      PARAMETER (EXT$ALT_L         =  38)
      PARAMETER (EXT$ALT_Z         =  26)
      PARAMETER (EXT$ALT_X         =  24)
      PARAMETER (EXT$ALT_C         =   3)
      PARAMETER (EXT$ALT_V         =  22)
      PARAMETER (EXT$ALT_B         =   2)
      PARAMETER (EXT$ALT_N         =  14)
      PARAMETER (EXT$ALT_M         =  13)

      INTEGER*4 EXT$F1, EXT$F2, EXT$F3, EXT$F4, EXT$F5, EXT$F6
      INTEGER*4 EXT$F7, EXT$F8, EXT$F9, EXT$F10, EXT$F11, EXT$F12

      PARAMETER (EXT$F1            =  59)
      PARAMETER (EXT$F2            =  60)
      PARAMETER (EXT$F3            =  61)
      PARAMETER (EXT$F4            =  62)
      PARAMETER (EXT$F5            =  63)
      PARAMETER (EXT$F6            =  64)
      PARAMETER (EXT$F7            =  65)
      PARAMETER (EXT$F8            =  66)
      PARAMETER (EXT$F9            =  67)
      PARAMETER (EXT$F10           =  68)
      PARAMETER (EXT$F11           = 133)       ! With KEY$EXTEND2
      PARAMETER (EXT$F12           = 134)       ! With KEY$EXTEND2

      INTEGER*4 EXT$SH_F1, EXT$SH_F2, EXT$SH_F3, EXT$SH_F4, EXT$SH_F5
      INTEGER*4 EXT$SH_F6, EXT$SH_F7, EXT$SH_F8, EXT$SH_F9, EXT$SH_F10
      INTEGER*4 EXT$SH_F11, EXT$SH_F12

      PARAMETER (EXT$SH_F1         =  84)
      PARAMETER (EXT$SH_F2         =  85)
      PARAMETER (EXT$SH_F3         =  86)
      PARAMETER (EXT$SH_F4         =  87)
      PARAMETER (EXT$SH_F5         =  88)
      PARAMETER (EXT$SH_F6         =  89)
      PARAMETER (EXT$SH_F7         =  90)
      PARAMETER (EXT$SH_F8         =  91)
      PARAMETER (EXT$SH_F9         =  92)
      PARAMETER (EXT$SH_F10        =  93)
      PARAMETER (EXT$SH_F11        = 135)         ! With KEY$EXTEND2
      PARAMETER (EXT$SH_F12        = 136)         ! With KEY$EXTEND2

      INTEGER*4 EXT$CTL_F1, EXT$CTL_F2, EXT$CTL_F3, EXT$CTL_F4
      INTEGER*4 EXT$CTL_F5, EXT$CTL_F6, EXT$CTL_F7, EXT$CTL_F8
      INTEGER*4 EXT$CTL_F9, EXT$CTL_F10, EXT$CTL_F11, EXT$CTL_F12

      PARAMETER (EXT$CTL_F1        =  94)
      PARAMETER (EXT$CTL_F2        =  95)
      PARAMETER (EXT$CTL_F3        =  96)
      PARAMETER (EXT$CTL_F4        =  97)
      PARAMETER (EXT$CTL_F5        =  98)
      PARAMETER (EXT$CTL_F6        =  99)
      PARAMETER (EXT$CTL_F7        = 100)
      PARAMETER (EXT$CTL_F8        = 101)
      PARAMETER (EXT$CTL_F9        = 102)
      PARAMETER (EXT$CTL_F10       = 103)
      PARAMETER (EXT$CTL_F11       = 137)          ! With KEY$EXTEND2
      PARAMETER (EXT$CTL_F12       = 138)          ! With KEY$EXTEND2

      INTEGER*4 EXT$ALT_F1, EXT$ALT_F2, EXT$ALT_F3, EXT$ALT_F4
      INTEGER*4 EXT$ALT_F5, EXT$ALT_F6, EXT$ALT_F7, EXT$ALT_F8
      INTEGER*4 EXT$ALT_F9, EXT$ALT_F10, EXT$ALT_F11, EXT$ALT_F12

      PARAMETER (EXT$ALT_F1        = 104)
      PARAMETER (EXT$ALT_F2        = 105)
      PARAMETER (EXT$ALT_F3        = 106)
      PARAMETER (EXT$ALT_F4        = 107)
      PARAMETER (EXT$ALT_F5        = 108)
      PARAMETER (EXT$ALT_F6        = 109)
      PARAMETER (EXT$ALT_F7        = 110)
      PARAMETER (EXT$ALT_F8        = 111)
      PARAMETER (EXT$ALT_F9        = 112)
      PARAMETER (EXT$ALT_F10       = 113)
      PARAMETER (EXT$ALT_F11       = 139)          ! With KEY$EXTEND2
      PARAMETER (EXT$ALT_F12       = 140)          ! With KEY$EXTEND2

C     If they following keys are preceded by KEY$EXTEND2, they
C     come from the cursor/control cluster on a new keyboard.
C     If they are preceded by KEY$EXTEND, they come from the
C     numeric keypad with NUMLOCK off.

      INTEGER*4 EXT$HOME, EXT$UP, EXT$PGUP, EXT$LEFT, EXT$RIGHT
      INTEGER*4 EXT$END, EXT$DOWN, EXT$PGDN, EXT$INS, EXT$DEL

      PARAMETER (EXT$HOME          =  71)
      PARAMETER (EXT$UP            =  72)
      PARAMETER (EXT$PGUP          =  73)
      PARAMETER (EXT$LEFT          =  75)
      PARAMETER (EXT$RIGHT         =  77)
      PARAMETER (EXT$END           =  79)
      PARAMETER (EXT$DOWN          =  80)
      PARAMETER (EXT$PGDN          =  81)
      PARAMETER (EXT$INS           =  82)
      PARAMETER (EXT$DEL           =  83)

      INTEGER*4 EXT$CTL_HOME, EXT$CTL_PGUP, EXT$CTL_LEFT
      INTEGER*4 EXT$CTL_RIGHT, EXT$CTL_END, EXT$CTL_PGDN

      PARAMETER (EXT$CTL_HOME      = 119)
      PARAMETER (EXT$CTL_PGUP      = 132)
      PARAMETER (EXT$CTL_LEFT      = 115)
      PARAMETER (EXT$CTL_RIGHT     = 116)
      PARAMETER (EXT$CTL_END       = 117)
      PARAMETER (EXT$CTL_PGDN      = 118)

C     The following keys can only come from the cursor/control cluster
C     and are always preceded by KEY$EXTEND2.

      INTEGER*4 EXT$SH_HOME, EXT$SH_UP, EXT$SH_PGUP, EXT$SH_LEFT
      INTEGER*4 EXT$SH_RIGHT, EXT$SH_END, EXT$SH_DOWN, EXT$SH_PGDN
      INTEGER*4 EXT$SH_INS, EXT$SH_DEL

      PARAMETER (EXT$SH_HOME       =  71)
      PARAMETER (EXT$SH_UP         =  72)
      PARAMETER (EXT$SH_PGUP       =  73)
      PARAMETER (EXT$SH_LEFT       =  75)
      PARAMETER (EXT$SH_RIGHT      =  77)
      PARAMETER (EXT$SH_END        =  79)
      PARAMETER (EXT$SH_DOWN       =  80)
      PARAMETER (EXT$SH_PGDN       =  81)
      PARAMETER (EXT$SH_INS        =  82)
      PARAMETER (EXT$SH_DEL        =  83)

      INTEGER*4 EXT$ALT_HOME, EXT$ALT_UP, EXT$ALT_PGUP, EXT$ALT_LEFT
      INTEGER*4 EXT$ALT_RIGHT, EXT$ALT_END, EXT$ALT_DOWN, EXT$ALT_PGDN
      INTEGER*4 EXT$ALT_INS, EXT$ALT_DEL

      PARAMETER (EXT$ALT_HOME      = 151)
      PARAMETER (EXT$ALT_UP        = 152)
      PARAMETER (EXT$ALT_PGUP      = 153)
      PARAMETER (EXT$ALT_LEFT      = 155)
      PARAMETER (EXT$ALT_RIGHT     = 157)
      PARAMETER (EXT$ALT_END       = 159)
      PARAMETER (EXT$ALT_DOWN      = 160)
      PARAMETER (EXT$ALT_PGDN      = 161)
      PARAMETER (EXT$ALT_INS       = 162)
      PARAMETER (EXT$ALT_DEL       = 163)
