Each unique channel map requires a 2048-byte buffer for mapping the input and output of characters. No buffers are required if no channels are mapped.
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. Buffers of maps no longer in use are returned for use by other maps.
Any character value not given is assumed to be a straight mapping. Only the differences are shown in the mapfile [see mapchan(1M)]. The left hand column 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(5) manual page and hardware reference manual of the device being mapped for the values to assign.
# #sharp/pound/cross-hatched 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 bell when errors occur input
a b c ddead 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 lmno
control # The control must be last
input E 1 # The character E is followed by 1 or 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 a 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 the control section: the input section, which is used to filter data sent from the terminal to UnixWare, and the output section, which is used to filter data sent from UnixWare 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:
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 [see stty(1)] to verify that -strip is set. Make sure input is mapping to the 8859 character set. Dead and compose sequences are input mapping and should be going to 8859.
/etc/default/mapchan /usr/lib/mapchan/*
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.
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(5)]. UnixWare 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(1)] on channels that have mapping that includes eight bit character set.