Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ascii(M)

keyboard(HW)

lp(C)

lpadmin(ADM)

mapchan(M)

mapkey(M)

parallel(HW)

screen(HW)

serial(HW)

setkey(C)

trchan(M)

tty(M)


 mapchan(F)                    06 January 1993                     mapchan(F)


 Name

    mapchan - format of tty device mapping files

 Description

    mapchan configures the mapping of information input and output.

    Each unique channel map requires a multiple of 1024 bytes (a 1K buffer)
    for mapping the input and output of characters. No buffers are required
    if no channels are mapped.  If control sequences are specified, an addi-
    tional 1K buffer is required.

    A method of sharing maps is implemented for channels that have the same
    map in place. Each additional, unique map allocates an additional buffer.
    The maximum number of map buffers available on a system is configured in
    the kernel, and is adjustable via the link kit NEMAP parameter (see con-
    figure(ADM)).  Buffers of maps no longer in use are returned for use by
    other maps.

    Example of a map file

    The internal character set is defined by the right column of the input
    map, and the first column of the output map in place on that line.  The
    default internal character set is the 8-bit ISO 8859/1 character set,
    which is also known as dpANS X3.4.2 and ISO/TC97/SC2.  It supports the
    Latin alphabet and can represent most European languages.

    Any character value not given is assumed to be a straight mapping:  only
    the differences are shown in the mapfile.  The left-hand columns must be
    unique.  More than one occurrence of any entry is an error. Right-hand
    column characters can appear more than once. This is ``many to one'' map-
    ping.  Nulls can be produced with compose sequences or as part of an out-
    put string.

    It is recommended that no mapping be enabled on the channel used to cre-
    ate or modify the mapping files.  This prevents any confusion of the
    actual values being entered due to mapping. It is also recommended that
    numeric rather than character representations be used in most cases, as
    these are not likely to be subject to mapping. Use comments to identify
    the characters represented. Refer to the ascii(M) manual page and the
    hardware reference manual for the device being mapped for the values to
    assign.

    #
    # sharp/pound/cross-hatch is the comment character
    # however, a quoted # ('#') is 0x23, not a comment
    #
    # beep, input, output, dead, compose and
    # control are special keywords and should appear as shown.
    #
    beep                    # sound the bell when errors occur
    input

    'a' 'b'
    'c' 'd'

    dead 'p'
    'q' 'r'                 # p followed by q yields r
    's' 't'                 # p followed by s yields t

    dead 'u'
    'v' 'w'                 # u followed by v yields w

    compose 'x'             # x is the compose key (only one allowed)
    'y' 'z' 'A'             # x followed by y and z yields A
    'B' 'C' 'D'             # x followed by B and C yields D

    output
    'e' 'f'                 # e is mapped to f
    'g' 'h' 'i' 106         # g is mapped to h i j - one to many
    'k' 0x6c 0155 'n'       # k is mapped to l m n

    control                 # the control sections must be last

    input
    E  1                    # the character E is followed by
                            # 1 more unmapped character

    output
    FG 2                    # the characters F G are followed by
                            # 2 more unmapped characters

    All of the single letters above preceding the ``control'' section must be
    in one of these formats:

       'j'     # quoted character
       106     # decimal value
       0x6a    # hexadecimal value
       0152    # octal value

    All of the above formats are translated to single byte values.

    The control sections (which must be the last in the file) contain speci-
    fications of character sequences which should be passed through to or
    from the terminal device without going through the normal mapchan pro-
    cessing.  These specifications consist of two parts:  a fixed sequence of
    one or more defined characters indicating the start of a no-map sequence,
    followed by a number of characters of which the actual values are
    unspecified.

    To illustrate this, consider a cursor-control sequence which should be
    passed directly to the terminal without being mapped.  Such a sequence
    would typically begin with a fixed escape sequence instructing the termi-
    nal to interpret the following two characters as a cursor position; the
    values of the following two characters are variable, and depend on the
    cursor position requested.  Such a control sequence would be specified
    as:

       \E=     2       # Cursor control: escape = <x> <y>

    There are two subsections under control:  the input section is used to
    filter data sent from the terminal to UNIX, and the output section is
    used to filter data sent from UNIX to the terminal.  The two fields in
    each control sequence are separated by white space, that is the Space or
    Tab characters.  Also the ``#'' (number sign) character introduces a com-
    ment, causing the remainder of the line to be ignored.  Therefore, if any
    of these three characters are required in the specification itself, they
    should be entered using one of alternative means of entering characters,
    as follows:

    ^x            The character produced by the terminal on pressing the
                  <Ctrl> and <x> keys together.

    \E or \e      The <Esc> character, octal 033.

    \c            Where c is one of b, f, l, n, r or t, produces Backspace,
                  Formfeed, Linefeed, Newline, Carriage Return, or Tab char-
                  acters respectively.

    \0            Since the NULL character can not be represented, this
                  sequence is stored as the character with octal value 0200,
                  which behaves as a NULL on most terminals.

    \nn or \nnn   Specifies the octal value of the character directly.

    \             followed by any other character is interpreted as that
                  character.  This can be used to enter Space, Tab, or Hash
                  characters.

 Diagnostics

    mapchan performs these error checks when processing the mapfile:

    +  More than one compose key.

    +  Characters mapped to more than one value.

    +  Syntax errors in the byte values.

    +  Missing input or output keywords.

    +  Dead or compose keys also occurring in the input section.

    +  Extra information on a line.

    +  Mapping a character to null.

    +  Starting an output control sequence with a character that is already
       mapped.

    If characters are displayed as the 7-bit value instead of the 8-bit
    value, use stty -a to verify that -istrip is set.  Make sure input is
    mapping to the 8859 character set, output is mapping from the 8859 to the
    device display character set. dead and compose sequences are input map-
    ping and should be going to 8859.

 Warning

    Use of mapping files that specify a different ``internal'' character set
    per-channel, or a set other than the 8-bit ISO 8859 set supplied by
    default can cause strange side effects. It is especially important to
    retain the 7-bit ASCII portion of the character set (see ascii(M)).  UNIX
    utilities and applications assume these values.  Media transported
    between machines with different internal code set mappings may not be
    portable as no mapping is performed on block devices, such as tape and
    floppy drives.  trchan can be used to ``translate'' from one internal
    character set to another.

    Do not set ISTRIP (see stty(C)) on channels that have mapping that
    includes 8-bit characters.

 Limitations

    Some non-U.S. keyboards and display devices do not support characters
    commonly used by UNIX command shells and the C programming language. Do
    not attempt to use such devices for system administration tasks.

    Not all terminals or printers can display all the characters that can be
    represented using this utility. Refer to the device's hardware manual for
    information on the capabilities of the peripheral device.

 Files

    /etc/default/mapchan
    /usr/lib/mapchan/*

 See also

    ascii(M), keyboard(HW), lp(C), lpadmin(ADM), mapchan(M), mapkey(M),
    parallel(HW), screen(HW), serial(HW), setkey(C), trchan(M), tty(M)

 Standards conformance

    mapchan is not part of any currently supported standard; it is an exten-
    sion of AT&T System V provided by The Santa Cruz Operation, Inc.


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