Seven-bit terminals
The seven-bit ASCII code set as defined by ISO 646 is used by many terminals.
Using this code set, support for European languages is limited
and involves
modifying the ISO 646 code set. Some of the "non-essential" characters are
changed to represent specific unsupported characters.
The characters that are replaced are shown in the following table.
The applications
used with these terminals have to use the new character value assignments. The
generic term for such variations of the seven-bit ISO 646 code set is
"seven-bit ISO 646 national variant"
code sets and one exists for each Western European language.
Seven-bit ISO 646 national variants
|
23
|
24
|
40
|
5b
|
5c
|
5d
|
5e
|
60
|
7b
|
7c
|
7d
|
7e
|
|
#
|
$
|
@
|
[
|
\
|
]
|
^
|
`
|
{
|
|
|
}
|
~
|
DE
|
#
|
$
|
§
|
Ä
|
Ö
|
Ü
|
^
|
`
|
ä
|
ö
|
ü
|
ß
|
DK
|
#
|
$
|
@
|
Æ
|
Ø
|
Å
|
^
|
`
|
æ
|
ø
|
å
|
~
|
ES
|
£
|
$
|
§
|
¡
|
Ñ
|
¿
|
^
|
`
|
°
|
ñ
|
ç
|
~
|
FR
|
£
|
$
|
à
|
°
|
ç
|
§
|
^
|
`
|
é
|
ù
|
è
|
¨
|
GB
|
£
|
$
|
@
|
[
|
\
|
]
|
^
|
`
|
{
|
|
|
}
|
~
|
IT
|
£
|
$
|
§
|
°
|
ç
|
é
|
^
|
ù
|
à
|
ò
|
è
|
ì
|
NO
|
#
|
$
|
@
|
Æ
|
Ø
|
Å
|
^
|
`
|
æ
|
ø
|
å
|
~
|
SE
|
#
|
$
|
É
|
Ä
|
Ö
|
Å
|
Ü
|
é
|
ä
|
ö
|
å
|
ü
|
A problem involving terminal control sequences
may be introduced if code set mapping is used to support an
ISO 646 national variant code set on a seven-bit terminal.
It is introduced because the internal (system)
code set can be different from the external code set for the terminal.
The problem arises when the terminal control sequence includes a character
that has a different interpretation to that in the ISO 646 code set.
An ISO 646 national variant code set gives
certain character values new interpretations.
For example, the French ISO 646
national variant associates the value normally reserved for the left brace,
{ with e-acute, é.
The problem manifests itself in the following two ways:
-
On input, the KBD module
converts the external (terminal) code set to the internal
code set (ISO 8859-1). For example,
on a French ISO 646 national variant terminal, the value
normally assigned to the left bracket, [ (0x5b)
is re-assigned to the degree sign, °.
The KBD module maps
this value (0x5b) to the ISO 8859-1 code for degree sign (0xb0). Thus,
the up arrow key on a French vt100 terminal will send the control
sequence "ESC [ A"
(0x1b, 0x5b, 0x41), but the receiving process will receive the sequence
"ESC ° A" (0x1b, 0xb0, 0x41).
-
On output the KBD module converts the internal code set (ISO 8859-1)
to the external code set for the terminal. Some characters are
not valid on some terminals. For example, on a French terminal
the left bracket, [ is not present (it is replaced by
degree sign, ° ). The KBD module recognizes that [
is not a valid character and substitutes a default character (usually
the underscore, _).
Hence, if a process sends the control sequence for up arrow for a
French vt100 terminal, "ESC [ A" (0x1b, 0x5b, 0x41),
the terminal actually receives the sequence:
"ESC _ A" (0x1b, 0x5f, 0x41).
This problem only affects seven-bit terminals using the ISO 646
national variant code sets. The Language
Supplement provides terminfo terminal database
specifications for the ISO 646 national variants shown in
``terminfo entries supported''.
For example, in the French ISO 646 national variant terminal
the up arrow control sequence is defined as (0x1b, 0x5b, 0x41).
Hence, the terminal database entry for
up arrow"should be "\E°A" (0x1b 0xb0 0x41).
The KBD module will then map
0xb0 to 0x5b and the terminal will function correctly.
terminfo entries supported
terminfo Entry
|
Country
|
vt100DK
|
Denmark
|
vt100FR
|
France
|
vt100DE
|
Germany
|
vt100IT
|
Italy
|
vt100NO
|
Norway
|
vt100ES
|
Spain
|
vt100SE
|
Sweden
|
vt100GB
|
Great Britain
|
Next topic:
Changing a serial line VT100 terminfo setting
Previous topic:
Serial line terminals
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 22 April 2004