Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ keyboard(7) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

stty(1)

vtlmgr(1M)

ioctl(2)

ascii(5)

console(7)

display(7)

termio(7)

keyboard(7)                     (RM400 only)                    keyboard(7)

NAME
     keyboard - system console keyboard

DESCRIPTION
     The system console is composed of two separate pieces: the keyboard
     and the display [see display(7)].

     The keyboard is used to type data, and send certain control signals to
     the computer. Reliant UNIX software performs terminal emulation on the
     console screen and keyboard, and, in doing so, makes use of several
     particular keys and key combinations. These keys and key combinations
     have special names that are unique to the Reliant UNIX system, and may
     or may not correspond to the keytop labels on your keyboard. When you
     press a key, one of the following happens:

     -  An ASCII value is entered.

     -  The meaning of another key, or keys, is changed.

     -  A string is sent to the computer.

     -  A function is initiated.

     When a key is pressed (a keystroke), the keyboard sends a scancode to
     the computer. This scancode is interpreted by the keyboard driver. The
     actual code sequence delivered to the terminal input routine [see
     termio(7)] is defined by a set of internal tables in the driver. These
     tables can be modified by software (see the discussion of ioctl calls
     below). In addition, the driver can be instructed not to do transla-
     tions, delivering the keyboard up/down scan codes directly.

   Changing Meanings

     The action performed by a key can be changed by using certain keys in
     combination. For example, the SHIFT key changes the ASCII values of
     the alphanumeric keys. Holding down the CTRL key while pressing
     another key sends a control code (such as CTRL-D, CTRL-S, and CTRL-Q).
     Holding down the ALT key also modifies a key's value. The SHIFT, CTRL,
     and ALT keys can be used in combination.

   Switching Screens

     To change screens (virtual terminals), first run the vtlmgr command
     [see vtlmgr(1M)]. Switch the current screen by typing ALT-SYSREQ (also
     labeled ALT-PRINTSCRN on some systems) followed by a key which identi-
     fies the desired screen. Any active screen may be selected by follow-
     ing ALT-SYSREQ with Fn, where Fn is one of the function keys. F1
     refers to the first virtual terminal screen, F2 refers to the second
     virtual terminal screen, etc. ALT-SYSREQ "h" refers to the main con-
     sole display (/dev/console). The next active screen can be selected
     with ALT-SYSREQ "n", and the previous screen can be selected with
     ALT-SYSREQ "p".



Page 1                       Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

     The default screen switch enable sequence (ALT-SYSREQ) is configur-
     able. The SYSREQ table entry can be modified by software (see discus-
     sion of ioctl calls below).

   Special Keys

     The following table shows which keys on a typical console correspond
     to Reliant UNIX system keys. In this table, a hyphen (-) between keys
     means you must hold down the first key while pressing the second. The
     mapping between characters which generate signals and the signal actu-
     ally generated is set with stty(1), and may be changed [see stty(1)].











































Page 2                       Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

     ______________________________________________________________________
    | Name        Keytop                             Action               |
    |_____________________________________________________________________|
    | INTR        DEL                  Stops current action and returns to|
    |                                  the shell. This key is also called |
    |                                  the RUB OUT or INTERRUPT key.      |
    |                                                                     |
    | BACKSPACE   <-                   Deletes the first character to the |
    |                                  left of the cursor. Note that the  |
    |                                  "cursor left" key also has a left  |
    |                                  arrow (<-) on its keytop, but you  |
    |                                  cannot backspace using that key.   |
    |                                                                     |
    | CTRL-D      CTRL-D               Signals the end of input from the  |
    |                                  keyboard; also exits current shell.|
    |                                                                     |
    | CTRL-H      CTRL-H               Deletes the first character to the |
    |                                  left of the cursor. Also called the|
    |                                  ERASE key.                         |
    |                                                                     |
    | CTRL-Q      CTRL-Q               Restarts printing after it has been|
    |                                  stopped with CTRL-S.               |
    |                                                                     |
    | CTRL-S      CTRL-S               Suspends printing on the screen    |
    |                                  (does not stop the program).       |
    |                                                                     |
    | CTRL-U      CTRL-U               Deletes all characters on the      |
    |                                  current line. Also called the KILL |
    |                                  key.                               |
    |                                                                     |
    | CTRL-\      CTRL-\               Quits current command and creates a|
    |                                  core file, if allowed. (Recommended|
    |                                  for debugging only.)               |
    |                                                                     |
    | ESCAPE      ESC                  Special code for some programs. For|
    |                                  example, changes from insert mode  |
    |                                  to command mode in the vi(1) text  |
    |                                  editor.                            |
    |                                                                     |
    | RETURN      (down-left arrow     Terminates a command line and ini- |
    |             or ENTER)            tiates an action from the shell.   |
    |_____________________________________________________________________|












Page 3                       Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

     ______________________________________________________________________
    |  Name    Keytop                               Action                |
    |_____________________________________________________________________|
    |  Fn      Fn                     Function key n. F1-F12 are          |
    |                                 unshifted, F13-F24 are shifted F1-  |
    |                                 F12, F25-F36 are CTRL-F1 through    |
    |                                 F12, and F37-F48 are CTRL-SHIFT-F1  |
    |                                 through F12.                        |
    |                                                                     |
    |                                 The next Fn keys (F49-F60) are on   |
    |                                 the number pad (unshifted):         |
    |                                                                     |
    |                                     F49 - 7             F55 - 6     |
    |                                     F50 - 8             F56 - +     |
    |                                     F51 - 9             F57 - 1     |
    |                                     F52 - -             F58 - 2     |
    |                                     F53 - 4             F59 - 3     |
    |                                     F54 - 5             F60 - 0     |
    |_____________________________________________________________________|



































Page 4                       Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

   Keyboard Map
     The keyboard mapping structure is defined in /usr/include/sys/kd.h.
     Each key can have ten states. The first eight states are:

     -  BASE
     -  CTRL-SHIFT
     -  SHIFT
     -  ALT-SHIFT
     -  CTRL
     -  ALT-CTRL
     -  ALT
     -  ALT-CTRL-SHIFT

     The two remaining states are indicated by two special bytes. The first
     byte is a "special state" byte whose bits indicate whether the key is
     "special" in one or more of the first eight states. The second byte is
     one of four codes represented by the characters C, N, B, or O which
     indicate how the lock keys affect the particular key.

     The following table describes the default keyboard mapping. All
     values, except for special keywords (which are described later), are
     ASCII character values.

     Heading   Description

     SCAN CODE This column contains the scan code generated by the keyboard
               hardware when a key is pressed. There are no table entries
               for the scan code generated by releasing a key.

     BASE      This column contains the normal value of a key press.

     SHIFT     This column contains the value of a key press when the SHIFT
               is also being held down.

     LOCK      This column indicates which lock keys affect that particular
               key:

               -  C indicates CAPSLOCK
               -  N indicates NUMLOCK
               -  B indicates both
               -  O indicates "none"

     The remaining columns are the values of key presses when combinations
     of the CTRL, ALT and SHIFT keys are also held down.

     The SRQTAB column entry is included in this table to provide a simple
     index of the default virtual terminal key selectors to the scan code
     to which it is assigned. The actual SRQTAB table is a stand-alone
     table which can be read or written via the KDGKBENT and KDSKBENT ioctl
     calls.




Page 5                       Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

_______________________________________________________________________________
|                                                         ALT                 |
|SCAN                        CTRL          ALT     ALT    CTRL                |
|CODE   BASE  SHIFT   CTRL   SHIFT   ALT   SHIFT   CTRL   SHIFT   LOCK  SRQTAB|
|_____________________________________________________________________________|
|  0    nop   nop     nop    nop     nop   nop     nop    nop     O     nop   |
|  1    esc   esc     esc    esc     esc   esc     esc    esc     O     nop   |
|  2    '1'   '!'     '1'    '1'     escn  escn    nop    nop     O     nop   |
|  3    '2'   '@'     nul    nul     escn  escn    nop    nop     O     nop   |
|  4    '3'   '#'     '3'    '3'     escn  escn    nop    nop     O     nop   |
|  5    '4'   '$'     '4'    '4'     escn  escn    nop    nop     O     nop   |
|  6    '5'   '%'     '5'    '5'     escn  escn    nop    nop     O     nop   |
|  7    '6'   '^'     rs     rs      escn  escn    nop    nop     O     nop   |
|  8    '7'   '&'     '7'    '7'     escn  escn    nop    nop     O     nop   |
|  9    '8'   '*'     '8'    '8'     escn  escn    nop    nop     O     nop   |
| 10    '9'   '('     '9'    '9'     escn  escn    nop    nop     O     nop   |
| 11    '0'   ')'     '0'    '0'     escn  escn    nop    nop     O     nop   |
| 12    '-'   '_'     ns     ns      escn  escn    nop    nop     O     nop   |
| 13    '='   '+'     '='    '+'     escn  escn    nop    nop     O     nop   |
| 14    bs    bs      bs     bs      bs    bs      bs     bs      O     nop   |
| 15    ht    gs      ht     gs      ht    gs      ht     gs      O     nop   |
| 16    'q'   'Q'     dc1    dc1     escn  escn    nop    nop     C     nop   |
| 17    'w'   'W'     etb    etb     escn  escn    nop    nop     C     nop   |
| 18    'e'   'E'     enq    enq     escn  escn    nop    nop     C     nop   |
| 19    'r'   'R'     dc2    dc2     escn  escn    nop    nop     C     nop   |
| 20    't'   'T'     dc4    dc4     escn  escn    nop    nop     C     nop   |
| 21    'y'   'Y'     em     em      escn  escn    nop    nop     C     nop   |
| 22    'u'   'U'     nak    nak     escn  escn    nop    nop     C     nop   |
| 23    'i'   'I'     ht     ht      escn  escn    nop    nop     C     nop   |
|_____________________________________________________________________________|
























Page 6                       Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

________________________________________________________________________________
|                                                        ALT                   |
|SCAN                       CTRL           ALT    ALT    CTRL                  |
|CODE BASE    SHIFT  CTRL   SHIFT  ALT     SHIFT  CTRL   SHIFT  LOCK  SRQTAB   |
|______________________________________________________________________________|
| 24  'o'     'O'    si     si     escn    escn   nop    nop    C     K_PREV   |
| 25  'p'     'P'    dle    dle    escn    escn   nop    nop    C     nop      |
| 26  '['     '{'    esc    esc    escn    escn   nop    nop    O     nop      |
| 27  ']'     '}'    gs     gs     escn    escn   nop    nop    O     nop      |
| 28  cr      cr     cr     cr     cr      cr     cr     cr     O     nop      |
| 29  lctrl   lctrl  lctrl  lctrl  lctrl   lctrl  lctrl  lctrl  O     nop      |
| 30  'a'     'A'    soh    soh    escn    escn   nop    nop    C     nop      |
| 31  's'     'S'    dc3    dc3    escn    escn   nop    nop    C     nop      |
| 32  'd'     'D'    eot    eot    escn    escn   nop    nop    C     K_FRCNEXT|
| 33  'f'     'F'    ack    ack    escn    escn   nop    nop    C     nop      |
| 34  'g'     'G'    bel    bel    escn    escn   nop    nop    C     K_VTF    |
| 35  'h'     'H'    bs     bs     escn    escn   nop    nop    C     nop      |
| 36  'j'     'J'    nl     nl     escn    escn   nop    nop    C     nop      |
| 37  'k'     'K'    vt     vt     escn    escn   nop    nop    C     nop      |
| 38  'l'     'L'    np     np     escn    escn   nop    nop    C     nop      |
| 39  ';'     ':'    ';'    ':'    escn    escn   nop    nop    O     nop      |
| 40  '\''    '"'    '\''   '"'    escn    escn   nop    nop    O     nop      |
| 41  '`'     '~'    '`'    '~'    escn    escn   nop    nop    O     nop      |
| 42  lshift  lshift lshift lshift lshift  lshift lshift lshift O     nop      |
| 43  '\\'    '|'    fs     fs     escn    escn   nop    nop    O     nop      |
| 44  'z'     'Z'    sub    sub    escn    escn   nop    nop    C     nop      |
| 45  'x'     'X'    can    can    escn    escn   nop    nop    C     nop      |
| 46  'c'     'C'    etx    etx    escn    escn   nop    nop    C     nop      |
| 47  'v'     'V'    syn    syn    escn    escn   nop    nop    C     nop      |
| 48  'b'     'B'    stx    stx    escn    escn   nop    nop    C     K_NEXT   |
| 49  'n'     'N'    so     so     escn    escn   nop    nop    C     nop      |
| 50  'm'     'M'    cr     cr     escn    escn   nop    nop    C     nop      |
| 51  ','     '<'    ','    '<'    escn    escn   nop    nop    O     nop      |
| 52  '.'     '>'    '.'    '>'    escn    escn   nop    nop    O     nop      |
| 53  '/'     '?'    '/'    '?'    escn    escn   nop    nop    O     nop      |
| 54  rshift  rshift rshift rshift rshift  rshift rshift rshift O     nop      |
| 55  '*'     '*'    '*'    '*'    escn    escn   escn   escn   O     nop      |
| 56  lalt    lalt   lalt   lalt   lalt    lalt   lalt   lalt   O     nop      |
| 57  ' '     ' '    nul    nul    fkey05  fkey05 nop    nop    O     nop      |
| 58  clock   clock  clock  clock  clock   clock  clock  clock  O     K_VTF+1  |
| 59  fkey00  fkey12 fkey24 fkey36 fkey00  fkey12 fkey24 fkey36 O     K_VTF+2  |
| 60  fkey01  fkey13 fkey25 fkey37 fkey01  fkey13 fkey25 fkey37 O     K_VTF+3  |
| 61  fkey02  fkey14 fkey26 fkey38 fkey02  fkey14 fkey26 fkey38 O     K_VTF+4  |
| 62  fkey03  fkey15 fkey27 fkey39 fkey03  fkey15 fkey27 fkey39 O     K_VTF+5  |
| 63  fkey04  fkey16 fkey28 fkey40 fkey04  fkey16 fkey28 fkey40 O     K_VTF+6  |
|______________________________________________________________________________|








Page 7                       Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

________________________________________________________________________________
|                                                         ALT                  |
|SCAN                        CTRL          ALT     ALT    CTRL                 |
|CODE  BASE   SHIFT  CTRL    SHIFT  ALT    SHIFT   CTRL   SHIFT  LOCK  SRQTAB  |
|______________________________________________________________________________|
|  64  fkey05 fkey17 fkey29  fkey41 fkey05 fkey17  fkey29 fkey41 O     K_VTF+7 |
|  65  fkey06 fkey18 fkey30  fkey42 fkey06 fkey18  fkey30 fkey42 O     K_VTF+8 |
|  66  fkey07 fkey19 fkey31  fkey43 fkey07 fkey19  fkey31 fkey43 O     K_VTF+9 |
|  67  fkey08 fkey20 fkey32  fkey44 fkey08 fkey20  fkey32 fkey44 O     K_VTF+10|
|  68  fkey09 fkey21 fkey33  fkey45 fkey09 fkey21  fkey33 fkey45 O             |
|  69  nlock  nlock  nlock   nlock  nlock  nlock   nlock  nlock  O             |
|  70  ack    ack    '|'     '|'    ack    ack     '|'    '|'    O             |
|  71  fkey48 '7'    fkey48  '7'    fkey48 escn    nop    nop    N             |
|  72  fkey49 '8'    fkey49  '8'    fkey49 escn    nop    nop    N             |
|  73  fkey50 '9'    fkey50  '9'    fkey50 escn    nop    udr    N             |
|  74  fkey51 '-'    fkey51  '-'    fkey51 escn    nop    nop    N             |
|  75  fkey52 '4'    fkey52  '4'    fkey52 escn    nop    nop    N             |
|  76  fkey53 '5'    fkey53  '5'    fkey53 escn    nop    nop    N             |
|  77  fkey54 '6'    fkey54  '6'    fkey54 escn    nop    nop    N             |
|  78  fkey55 '+'    fkey55  '+'    fkey55 escn    nop    nop    N             |
|  79  fkey56 '1'    fkey56  '1'    fkey56 escn    nop    nop    N             |
|  80  fkey57 '2'    fkey57  '2'    fkey57 escn    nop    nop    N             |
|  81  fkey58 '3'    fkey58  '3'    fkey58 escn    nop    debug  N             |
|  82  fkey59 '0'    fkey59  '0'    fkey59 escn    nop    nop    N             |
|  83  del    '.'    del     '.'    del    escn    reboot nop    N             |
|  84  fkey59 fkey25 fkey59  nop    sysreq sysreq  sysreq sysreq O             |
|  85  fkey57 fkey57 fkey57  fkey57 fkey57 fkey57  fkey57 fkey57 O     K_NOP   |
|  86  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  87  fkey10 fkey22 fkey34  fkey46 fkey10 fkey22  fkey34 fkey46 O     K_VTF+11|
|  88  fkey11 fkey23 fkey35  fkey47 fkey11 fkey23  fkey35 fkey47 O     K_VTF+12|
|  89  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  90  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  91  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  92  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  93  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  94  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  95  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  96  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  97  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  98  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|  99  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
| 100  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
| 101  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
| 102  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
| 103  nop    nop    nop     nop    nop    nop     nop    nop    O     K_NOP   |
|______________________________________________________________________________|








Page 8                       Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

_______________________________________________________________________________
|                                                           ALT               |
|SCAN                          CTRL          ALT    ALT     CTRL              |
|CODE    BASE   SHIFT  CTRL    SHIFT  ALT    SHIFT  CTRL    SHIFT  LOCK SRQTAB|
|_____________________________________________________________________________|
| 104    nop    nop    nop     nop    nop    nop    nop     nop    O    K_NOP |
| 105    nop    nop    nop     nop    nop    nop    nop     nop    O    K_NOP |
| 106    nop    nop    nop     nop    nop    nop    nop     nop    O    K_NOP |
| 107    fkey52 fkey52 fkey52  fkey52 fkey52 fkey52 fkey52  fkey52 O    K_NOP |
| 108    nop    nop    nop     nop    nop    nop    nop     nop    O    K_NOP |
| 109    nop    nop    nop     nop    nop    nop    nop     nop    O    K_NOP |
| 110    nop    nop    nop     nop    nop    nop    nop     nop    O    K_NOP |
| 111    fkey50 fkey50 nop     nop    nop    nop    nop     nop    O    K_NOP |
| 112    nop    nop    nop     nop    nop    nop    nop     nop    O    K_NOP |
| 113    nop    nop    nop     nop    nop    nop    nop     nop    O    K_NOP |
| 114    agr    agr    agr     agr    agr    agr    agr     agr    O    K_NOP |
| 115    rctrl  rctrl  rctrl   rctrl  rctrl  rctrl  rctrl   rctrl  O    K_NOP |
| 116    cr     cr     cr      cr     cr     cr     cr      cr     O    K_NOP |
| 117    '/'    '/'    nop     nop    escn   escn   nop     nop    O    K_NOP |
| 118    nop    nop    nop     nop    nop    nop    nop     nop    O    K_NOP |
| 119    brk    brk    brk     brk    brk    brk    brk     brk    O    K_NOP |
| 120    fkey49 fkey49 nop     nop    nop    nop    nop     nop    O    K_NOP |
| 121    del    del    del     del    del    del    del     del    O    K_NOP |
| 122    fkey56 fkey56 nop     nop    nop    nop    nop     nop    O    K_NOP |
| 123    fkey59 fkey59 nop     nop    nop    nop    nop     nop    O    K_NOP |
| 124    nop    nop    nop     nop    nop    nop    nop     nop    O    K_NOP |
| 125    fkey54 fkey54 nop     nop    nop    nop    nop     nop    O    K_NOP |
| 126    fkey58 fkey58 nop     nop    nop    nop    nop     nop    O    K_NOP |
| 127    fkey48 fkey48 nop     nop    nop    nop    nop     nop    O    K_NOP |
|_____________________________________________________________________________|
























Page 9                       Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

     The following table lists the value of each of the special keywords
     used in the preceding tables. The keywords are only used in the
     preceding tables for readability. In the actual keyboard map, a spe-
     cial keyword is represented by its value with the corresponding "spe-
     cial state" bit being set.

     ______________________________________________________________________
    | Name   Value  Meaning                                               |
    |_____________________________________________________________________|
    | nop       0   No operation - no action from keypress                |
    | lshift    2   Left-hand shift                                       |
    | rshift    3   Right-hand shift                                      |
    | clock     4   Caps lock                                             |
    | nlock     5   Numeric lock                                          |
    | slock     6   Scroll lock                                           |
    | alt       7   Alt key                                               |
    | btab      8   Back tab key - generates fixed sequence (ESC[ Z)      |
    | ctrl      9   Control key                                           |
    | lalt     10   Left-hand alt key                                     |
    | ralt     11   right-hand alt key                                    |
    | lctrl    12   Left-hand control key                                 |
    | rctrl    13   Right-hand control key                                |
    | agr      14   ALT-GR key (European keyboards only)                  |
    | fkey1    27   Function key #1                                       |
    | .             .                                                     |
    | .             .                                                     |
    | .             .                                                     |
    | fkey96  122   Function key #96                                      |
    | sysreq  123   System request                                        |
    | brk     124   Break key                                             |
    | escn    125   Generate an ESC N x sequence, where x is the un-alt'ed|
    |               value of the scan code                                |
    | esco    126   Generate an ESC O x sequence, where x is the un-alt'ed|
    |               value of the scan code                                |
    | escl    127   Generate an ESC L x sequence, where x is the un-alt'ed|
    |               value of the scan code                                |
    | rboot   128   Reboot system                                         |
    | debug   129   Invoke kernel debugger                                |
    | NEXT    130   Switch to next virtual terminal on queue              |
    | PREV    131   Switch to previous virtual terminal on queue          |
    | FNEXT   132   Forced switch to next virtual terminal on queue       |
    | FPREV   133   Forced switch to previous virtual terminal on queue   |
    |_____________________________________________________________________|











Page 10                      Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

     ______________________________________________________________________
    | Name  Value   Meaning                                               |
    |_____________________________________________________________________|
    | VTF    134    Virtual Terminal First (VT00)                         |
    | .             .                                                     |
    | .             .                                                     |
    | .             .                                                     |
    | VTL    148    Virtual Terminal Last (VT14)                          |
    | MGRF   149    Virtual Terminal Manager First. Allows assigning spe- |
    |               cial significance to key sequence for actions by vir- |
    |               tual terminal layer manager. Used in SRQTAB table.    |
    | .             .                                                     |
    | .             .                                                     |
    | .             .                                                     |
    | MGRL   179    Virtual Terminal Manager Last. Used in SRQTAB table.  |
    |_____________________________________________________________________|

     The following table lists names and decimal values for ASCII charac-
     ters in the preceding table. Names are used in place of numeric con-
     stants to make it easier to read the scan code table. Only the decimal
     values are placed in the ioctl buffer. These values are taken from
     ascii(5).

          ___________________________________________________________
         | Name   Value|  Name   Value|  Name   Value|  Name   Value|
         |_____________|______________|______________|______________|
         | nul      0  |  ht       9  |  dc2     18  |  esc      27 |
         | soh      1  |  nl      10  |  dc3     19  |  fs       28 |
         | stx      2  |  vt      11  |  dc4     20  |  gs       29 |
         | etx      3  |  np      12  |  nak     21  |  rs       30 |
         | eot      4  |  cr      13  |  syn     22  |  ns       31 |
         | enq      5  |  so      14  |  etb     23  |  del     127 |
         | ack      6  |  si      15  |  can     24  |              |
         | bel      7  |  dle     16  |  em      25  |              |
         | bs       8  |  dc1     17  |  sub     26  |              |
         |_____________|______________|______________|______________|


















Page 11                      Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

   String Key Mapping

     The string mapping table is an array of 512 bytes (typedef strmapt)
     containing null-terminated strings that redefine the function keys.
     The first null-terminated string is assigned to the first function
     key, the second string is assigned to the second function key, etc.

     There is no limit to the length of any particular string as long as
     the whole table does not exceed 512 bytes, including nulls. To make a
     string a null, add extra null characters. The following table contains
     default function key values.

            ________________________________________________________
           |              Default Function Key Values              |
           |_______________________________________________________|
           | Function               Shift       Ctrl     Ctrl Shift|
           |  Key #     Function   Function   Function    Function |
           |_______________________________________________________|
           |     1      ESC OP     ESC Op     ESC OP     ESC Op    |
           |     2      ESC OQ     ESC Oq     ESC OQ     ESC Oq    |
           |     3      ESC OR     ESC Or     ESC OR     ESC Or    |
           |     4      ESC OS     ESC Os     ESC OS     ESC Os    |
           |     5      ESC OT     ESC Ot     ESC OT     ESC Ot    |
           |     6      ESC OU     ESC Ou     ESC OU     ESC Ou    |
           |     7      ESC OV     ESC Ov     ESC OV     ESC Ov    |
           |     8      ESC OW     ESC Ow     ESC OW     ESC Ow    |
           |     9      ESC OX     ESC Ox     ESC OX     ESC Ox    |
           |    10      ESC OY     ESC Oy     ESC OY     ESC Oy    |
           |    11      ESC OZ     ESC Oz     ESC OZ     ESC Oz    |
           |    12      ESC OA     ESC Oa     ESC OA     ESC Oa    |
           |_______________________________________________________|

   ioctl Calls

     KDGKBMODE
          This call gets the current keyboard mode. It returns one of the
          following values, as defined in /usr/include/sys/kd.h:

          #define   KRAW     0x00   /* Send row scan codes */
          #define   KXLATE   0x01   /* Translate to ASCII */

     KDSKBMODE
          This call sets the keyboard mode. The argument to the call is
          either KRAW or KXLATE. By using raw mode, the program can see
          the raw up/down scan codes from the keyboard. In translate mode,
          the translation tables are used to generate the appropriate char-
          acter code.







Page 12                      Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

     KDGKBTYTE
          This call gets the keyboard type. It returns one of the following
          values, as defined in /usr/include/sys/kd.h:

          #define   KB84      0x00   /* 84 key keyboard */
          #define   KB101     0x01   /* 101 key keyboard */
          #define   KBOTHER   0x03   /* Other type keyboard */

     KDGKBENT
          This call reads one of the entries in the translation tables. The
          argument to the call is the address of one of the following
          structures, defined in /usr/include/sys/kd.h, with the first two
          fields filled in:

             struct kbentry
             {
                 unchar kbtable;  /* Table to use */
                 unchar kbindex;  /* Entry in table */
                 ushort kbvalue;  /* Value to get/set */
             };

          Valid values for the kbtable field are:

          #define   KNORMTAB      0x00   /* BASE*/
          #define   KSHIFTTAB     0x01   /* SHIFT*/
          #define   KALTTAB       0x02   /* ALT */
          #define   KALTSHIFTTAB  0x03   /* SHIFT+ALT */
          #define   KSRQTAB       0x04   /* Select SYSREQ table */

          The ioctl will get the indicated entry from the indicated table
          and return it in the third field.

          The KSRQTAB value for the kbtable field allows access to the
          scancode indexed table which allows assignment of a given virtual
          terminal selector (KVTF-KVTL) or the virtual terminal layer
          manager (KMGRF-KMGRL) "specialkey" assignments.

          The virtual terminal selector (KVTF) is normally associated with
          /dev/vt00, on which the user login shell is commonly found. The
          following terminal selectors also are used to select virtual ter-
          minals:

                KVTF+1 for the 1st virtual terminal (/dev/vt01)
                KVTF+2 for the 2nd virtual terminal (/dev/vt02)
                . . .
                KVTF+12 for the 12th virtual terminal (/dev/vt12)








Page 13                      Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

     KDSKBENT
          This call sets an entry in one of the translation tables. It uses
          the same structure as the KDGKBENT ioctl, but with the third
          field filled in with the value that should be placed in the
          translation table. This can be used to partially or completely
          remap the keyboard.

          The kd driver provides support for virtual terminals. The console
          minor device, /dev/vtmon, provides virtual terminal key requests
          from the kd driver to the process that has /dev/vtmon open. Two
          ioctls are provided for virtual terminal support:

     VTGETSTATE
          The VTGETSTATE ioctl returns global virtual terminal state
          information. It returns the active virtual terminal in the
          vactive field, and the number of active virtual terminals and a
          bit mask of the global state in the vtstate field, where bit x
          is the state of vt x (1 indicates that the virtual terminal is
          open).

     VTSENDSIG
          The VTSENDSIG ioctl specifies a signal (in vtsignal) to be sent
          to a bit mask of virtual terminals (in vtstate).

          The data structure used by the VTGETSTATE and VTSENDSIG ioctls
          is:

             struct vtstat
             {
               ushort vactive;  /* active vt */
               ushort vsignal;  /* signal to send (VTSENDSIG) */
               ushort vstate;   /* vt bit mask (VTSENDSIG + VTGETSTATE) */
             };

          and is defined in /usr/include/sys/vt.h.

     VTOPENQRY
          The VTOPENQRY ioctl is used to get the next available virtual
          terminal. This value is set in the last argument of the ioctl(2)
          call.

     GIOKEYMAP
          This call gets the entire keyboard mapping table from the kernel.
          The structure of the argument is given in /usr/include/sys/kd.h.

     PIOKEYMAP
          This call sets the entire keyboard mapping table. The structure
          of the argument is given in /usr/include/sys/kd.h.

     GIOSTRMAP
          This call gets the string key mapping table from the kernel. The
          structure of the argument is given in /usr/include/sys/kd.h.


Page 14                      Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

     PIOSTRMAP
          This call sets the string key mapping table. The structure of the
          argument is given in /usr/include/sys/kd.h.

     TIOCKBOF
          Extended character codes are disabled. This is the default mode.

     TIOCKBON
          Allows extended characters to be transmitted to the user program.
          The extended characters are transmitted as a null byte followed
          by a second byte containing the character's extended code. When a
          true null byte is sent, it is transmitted as two consecutive null
          bytes.

          When the keyboard is fully enabled, an 8-bit character code can
          be obtained by holding down the ALT key and entering the 3-digit
          decimal value of the character from the numeric keypad. The char-
          acter is transmitted when the ALT key is released.

          Some keyboard characters have special meaning. Under default
          operations, pressing the DELETE key generates an interrupt signal
          which is sent to all processes designated with the associated
          control terminal. When the keyboard is fully enabled, holding
          down the ALT key and pressing the 8 key on the home keyboard (not
          on the numeric keypad) returns a null byte followed by 0x7F. This
          will produce the same effect as the DELETE key (0x7F) unless you
          have executed the stty(1) command with the -isig option.

     KBENABLED
          If the keyboard is fully enabled (TIOCKBON), a non-zero value
          will be returned. If the keyboard is not fully enabled
          (TIOCKBOF), a value of zero will be returned.

     GETFKEY
          Obtains the current definition of a function key. The argument to
          the call is the address of one of the following structures
          defined in /usr/include/sys/kd.h:

             struct fkeyarg
             {
                 unsigned int keynum;
                 char keydef [MAXFK];  /* Comes from ioctl.h via comcrt.h */
                 char flen;
             };

          The function key number must be passed in keynum (see arg struc-
          ture above). The string currently assigned to the key will be
          returned in keydef and the length of the string will be returned
          in flen when the ioctl is performed.





Page 15                      Reliant UNIX 5.44                Printed 11/98

keyboard(7)                     (RM400 only)                    keyboard(7)

     SETFKEY
          Assigns a given string to a function key. It uses the same struc-
          ture as the GETFKEY ioctl. The function key number must be passed
          in keynum, the string must be passed in keydef, and the length of
          the string (number of characters) must be passed in flen.

FILES
     /dev/console

     /dev/vt00-n

     /usr/include/sys/kd.h

SEE ALSO
     stty(1), vtlmgr(1M), ioctl(2), ascii(5), console(7), display(7),
     termio(7).






































Page 16                      Reliant UNIX 5.44                Printed 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026