MAPCHAN(F) UNIX System V
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 additional 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
configure(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'' mapping.
Nulls can be produced with compose sequences or as part of
an output string.
It is recommended that no mapping be enabled on the channel
used to create 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
B C D # x followed by B and C yields D.
output
e f # e is mapped to f.
g h i j # g is mapped to hij - one to many.
k l m n o # k is mapped to lmno.
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 FG are followed by 2 more
unmapped characters
All of the single letters above preceding the ``control''
section must be in one of these formats:
56 # decimal
045 # octal
0xfa # hexadecimal
'b' # quoted char
'\076' # quoted octal
'\x4a' # quoted hex
All of the above formats are translated to single byte
values.
The control sections (which must be the last in the file)
contain specifications of character sequences which should
be passed through to or from the terminal device without
going through the normal mapchan processing. 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 terminal 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 '#' (HASH) character introduces a
comment, 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
CONTROL and x keys together.
\E or \e
The ESCAPE character, octal 033.
\c Where c is one of b, f, l, n, r or t, produces
BACKSPACE , FORM FEED , LINE FEED , NEWLINE , CARRIAGE
RETURN or TAB characters 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 thing.
⊕ 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 mapping and should
be going to 8859.
Files
/etc/default/mapchan
/usr/lib/mapchan/*
See Also
ascii(M), keyboard(HW), lp(C), lpadmin(ADM), mapchan(M),
trchan(M), mapkey(M), parallel(HW), screen(HW), serial(HW),
setkey(M), tty(M)
Notes
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.
Warnings
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 eight bit characters.
Value Added
mapchan is an extension of AT&T System V provided by the
Santa Cruz Operation.
(printed 2/15/90) MAPCHAN(F)