Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ keyboard(7) — Dell System V Release 4 Issue 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

stty(1)

console(7)

display(7)

termio(7)

ioctl(2)

ascii(5)

vtlmgr(1M)



keyboard(7)                      UNIX System V                      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.  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 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 translations,
      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
      labelled ALT-PRINTSCRN on some systems) followed by a key which
      identifies the desired screen.  Any active screen may be selected by
      following 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 console
      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.'

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


10/89                                                                    Page 1







keyboard(7)                      UNIX System V                      keyboard(7)


   Special Keys
      The following table shows which keys on a typical console correspond to
      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 actually
      generated is set with stty(1), and may be changed [see stty(1)].
















































Page 2                                                                    10/89







keyboard(7)                      UNIX System V                      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 initiates an action   |
|            or ENTER)          from the shell.                                     |
|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'                          |
|___________________________________________________________________________________|















10/89                                                                    Page 3







keyboard(7)                      UNIX System V                      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 locking is off

      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 4                                                                    10/89







keyboard(7)                      UNIX System V                      keyboard(7)


_________________________________________________________________________________________
|                                                               ALT                     |
|SCAN                           CTRL            ALT     ALT     CTRL                    |
|CODE   BASE    SHIFT   CTRL    SHIFT   ALT     SHIFT   CTRL    SHIFT   LOCK   SRQTAB   |
|_______________________________________________________________________________________|
|  1    esc     esc     esc     esc     esc     esc     esc     esc     O      nop      |
|  2    '1'     '!'     '1'     '1'     escn    escn    nop     nop     O      nop      |
|  3    '2'     '@'     '2'     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'     '^'     '6'     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      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      btab    ht      btab    ht      btab    ht      btab    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      |
| 24    'o'     'O'     si      si      escn    escn    nop     nop     C      nop      |
| 25    'p'     'P'     dle     dle     escn    escn    nop     nop     C      K_PREV   |
| 26    '['     '{'     esc     nop     escn    escn    nop     nop     O      nop      |
| 27    ']'     '}'     gs      nop     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      nop      |
| 33    'f'     'F'     ack     ack     escn    escn    nop     nop     C      K_FRCNEXT|
| 34    'g'     'G'     bel     bel     escn    escn    nop     nop     C      nop      |
| 35    'h'     'H'     bs      bs      escn    escn    nop     nop     C      K_VTF    |
| 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      |
|_______________________________________________________________________________________|







10/89                                                                    Page 5







keyboard(7)                      UNIX System V                      keyboard(7)


________________________________________________________________________________________________
|                                                                      ALT                     |
|SCAN                              CTRL              ALT      ALT      CTRL                    |
|CODE   BASE     SHIFT    CTRL     SHIFT    ALT      SHIFT    CTRL     SHIFT    LOCK   SRQTAB  |
|______________________________________________________________________________________________|
| 42    lshift   lshift   lshift   lshift   lshift   lshift   lshift   lshift   O      nop     |
| 43    '\\'     '|'      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      nop     |
| 49    'n'      'N'      so       so       escn     escn     nop      nop      C      K_NEXT  |
| 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    '/'      '?'      '/'      ns       escn     escn     nop      nop      O      nop     |
| 54    rshift   rshift   rshift   rshift   rshift   rshift   rshift   rshift   O      nop     |
| 55    '*'      '*'      '*'      '*'      escn     escn     nop      nop      O      nop     |
| 56    lalt     lalt     lalt     lalt     lalt     lalt     lalt     lalt     O      nop     |
| 57    ' '      ' '      nul      nul      escn     escn     nop      nop      O      nop     |
| 58    clock    clock    clock    clock    clock    clock    clock    clock    O      nop     |
| 59    fkey1    fkey13   fkey25   fkey37   fkey1    fkey13   fkey25   fkey37   O      K_VTF+1 |
| 60    fkey2    fkey14   fkey26   fkey38   fkey2    fkey14   fkey26   fkey38   O      K_VTF+2 |
| 61    fkey3    fkey15   fkey27   fkey39   fkey3    fkey15   fkey27   fkey39   O      K_VTF+3 |
| 62    fkey4    fkey16   fkey28   fkey40   fkey4    fkey16   fkey28   fkey40   O      K_VTF+4 |
| 63    fkey5    fkey17   fkey29   fkey41   fkey5    fkey17   fkey29   fkey41   O      K_VTF+5 |
| 64    fkey6    fkey18   fkey30   fkey42   fkey6    fkey18   fkey30   fkey42   O      K_VTF+6 |
| 65    fkey7    fkey19   fkey31   fkey43   fkey7    fkey19   fkey31   fkey43   O      K_VTF+7 |
| 66    fkey8    fkey20   fkey32   fkey44   fkey8    fkey20   fkey32   fkey44   O      K_VTF+8 |
| 67    fkey9    fkey21   fkey33   fkey45   fkey9    fkey21   fkey33   fkey45   O      K_VTF+9 |
| 68    fkey10   fkey22   fkey34   fkey46   fkey10   fkey22   fkey34   fkey46   O      K_VTF+10|
| 69    nlock    nlock    nlock    nlock    nlock    nlock    nlock    nlock    O              |
| 70    slock    slock    brk      brk      slock    slock    brk      brk      O              |
| 71    fkey49   '7'      fkey49   '7'      fkey49   escn     nop      nop      N              |
| 72    fkey50   '8'      fkey50   '8'      fkey50   escn     nop      nop      N              |
| 73    fkey51   '9'      fkey51   '9'      fkey51   escn     nop      nop      N              |
| 74    fkey52   '-'      fkey52   '-'      fkey52   escn     nop      nop      N              |
| 75    fkey53   '4'      fkey53   '4'      fkey53   escn     nop      nop      N              |
| 76    fkey54   '5'      fkey54   '5'      fkey54   escn     nop      nop      N              |
| 77    fkey55   '6'      fkey55   '6'      fkey55   escn     nop      nop      N              |
| 78    fkey56   '+'      fkey56   '+'      fkey56   escn     nop      nop      N              |
| 79    fkey57   '1'      fkey57   '1'      fkey57   escn     nop      nop      N              |
| 80    fkey58   '2'      fkey58   '2'      fkey58   escn     nop      nop      N              |
| 81    fkey59   '3'      fkey59   '3'      fkey59   escn     nop      nop      N              |
| 82    fkey60   '0'      fkey60   '0'      fkey60   escn     nop      nop      N              |
| 83    del      '.'      del      '.'      del      escn     rboot    nop      N              |
|______________________________________________________________________________________________|






Page 6                                                                    10/89







keyboard(7)                      UNIX System V                      keyboard(7)


________________________________________________________________________________________________
|                                                                      ALT                     |
|SCAN                              CTRL              ALT      ALT      CTRL                    |
|CODE   BASE     SHIFT    CTRL     SHIFT    ALT      SHIFT    CTRL     SHIFT    LOCK   SRQTAB  |
|______________________________________________________________________________________________|
| 84    fkey60   fkey26   fkey60   nop      sysreq   sysreq   sysreq   sysreq   O              |
| 85    fkey58   fkey58   fkey58   fkey58   fkey58   fkey58   fkey58   fkey58   O              |
| 86    fkey53   fkey53   fkey53   fkey53   fkey53   fkey53   fkey53   fkey53   O              |
| 87    fkey11   fkey23   fkey35   fkey47   fkey11   fkey23   fkey35   fkey47   O      K_VTF+11|
| 88    fkey12   fkey24   fkey36   fkey48   fkey12   fkey24   fkey36   fkey48   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   |
|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    fkey53   fkey53   fkey53   fkey53   fkey53   fkey53   fkey53   fkey53   O              |
|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    fkey51   fkey51   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    ralt     ralt     ralt     ralt     ralt     ralt     ralt     ralt     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    fkey50   fkey50   nop      nop      nop      nop      nop      nop      O      K_NOP   |
|121    del      del      del      del      del      del      del      del      O      K_NOP   |
|122    fkey57   fkey57   nop      nop      nop      nop      nop      nop      O      K_NOP   |
|123    fkey60   fkey60   nop      nop      nop      nop      nop      nop      O      K_NOP   |
|______________________________________________________________________________________________|








10/89                                                                    Page 7







keyboard(7)                      UNIX System V                      keyboard(7)


____________________________________________________________________________________
|                                                             ALT                  |
|SCAN                            CTRL          ALT     ALT    CTRL                 |
|CODE   BASE     SHIFT    CTRL   SHIFT   ALT   SHIFT   CTRL   SHIFT   LOCK   SRQTAB|
|__________________________________________________________________________________|
|124    nop      nop      nop    nop     nop   nop     nop    nop     O      K_NOP |
|125    fkey55   fkey55   nop    nop     nop   nop     nop    nop     O      K_NOP |
|126    fkey59   fkey59   nop    nop     nop   nop     nop    nop     O      K_NOP |
|127    fkey49   fkey49   nop    nop     nop   nop     nop    nop     O      K_NOP |
|__________________________________________________________________________________|

      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 special keyword is
      represented by its value with the corresponding ``special 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        |
        |__________________________________________________________________|




Page 8                                                                    10/89







keyboard(7)                      UNIX System V                      keyboard(7)


        _____________________________________________________________________
       | Name    Value   Meaning                                            |
       |____________________________________________________________________|
       | 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|
       | VTF      134    Virtual Terminal First (VT00)                      |
       | .               .                                                  |
       | .               .                                                  |
       | .               .                                                  |
       | VTL      148    Virtual Terminal Last (VT14)                       |
       | MGRF     149    Virtual Terminal Manager First.  Allows assigning  |
       |                 special significance to key sequence for actions by|
       |                 virtual 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 characters
      in the preceding table.  Names are used in place of numeric constants 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    |
                         |_____________|__________________|
                         | nul      0  |  dc1     17      |
                         | soh      1  |  dc2     18      |
                         | stx      2  |  dc3     19      |
                         | etx      3  |  dc4     20      |
                         | eot      4  |  nak     21      |
                         | enq      5  |  syn     22      |
                         | ack      6  |  etb     23      |
                         | bel      7  |  can     24      |
                         | bs       8  |  em      25      |
                         | ht       9  |  sub     26      |
                         | nl      10  |  esc     27      |
                         | vt      11  |  fs      28      |
                         | np      12  |  gs      29      |
                         | cr      13  |  rs      30      |
                         | so      14  |  ns      31      |
                         | si      15  |  del    127      |
                         | dle     16  |                  |
                         |_____________|__________________|

   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


10/89                                                                    Page 9







keyboard(7)                      UNIX System V                      keyboard(7)


      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             |
              |_____________________________________________________|
              |                                               Ctrl  |
              | Function               Shift       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 K_RAW       0x00    /* Send row scan codes */
                #define K_XLATE 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
            character code.

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

                #define KB_84       0x00    /*84 key keyboard*/
                #define KB_101      0x01    /*101 key keyboard*/
                #define KB_OTHER    0x03    /*Other type keyboard*/


Page 10                                                                   10/89







keyboard(7)                      UNIX System V                      keyboard(7)


      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 kb_table field are:

                #define K_NORMTAB       0x00    /* Base */
                #define K_SHIFTTAB      0x01    /* Shifted */
                #define K_ALTTAB        0x02    /* Alt */
                #define K_ALTSHIFTTAB   0x03    /* Shifted alt */
                #define K_SRQTAB        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 kb_table 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/tty00, on which the user login shell is commonly found.  The
            following terminal selectors also are used to select virtual
            terminals:
                 K_VTF+1 for the 1st virtual terminal (/dev/vt01)
                 K_VTF+2 for the 2nd virtual terminal (/dev/vt02)
                               .
                               .
                               .
                 K_VTF+12 for the 12th virtual terminal (/dev/vt12)

      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:



10/89                                                                   Page 11







keyboard(7)                      UNIX System V                      keyboard(7)


      VTGETSTATE
            The VTGETSTATE ioctl returns global virtual terminal state
            information.  It returns the active virtual terminal in the
            v_active field, and the number of active virtual terminals and a
            bit mask of the global state in the vt_state 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 vt_signal) to be sent
            to a bit mask of virtual terminals (in vt_state).

      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 and 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.

      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.





Page 12                                                                   10/89







keyboard(7)                      UNIX System V                      keyboard(7)


      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 character 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 structure
            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.

      SETFKEY
            Assigns a given string to a function key.  It uses the same
            structure 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), console(7), display(7), termio(7).
      ioctl(2), ascii(5) in the Programmer's Reference Manual.
      vtlmgr(1M) in the User's Reference Manual.




10/89                                                                   Page 13





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