GNU Info

Info Node: (screen.info)Character Translation

(screen.info)Character Translation


Prev: Obuflimit Up: Termcap
Enter node , (file) or (file)node

Character Translation
=====================

   `Screen' has a powerful mechanism to translate characters to
arbitrary strings depending on the current font and terminal type.  Use
this feature if you want to work with a common standard character set
(say ISO8851-latin1) even on terminals that scatter the more unusual
characters over several national language font pages.

   Syntax:

         XC=<CHARSET-MAPPING>{,,<CHARSET-MAPPING>}
         <CHARSET-MAPPING> := <DESIGNATOR><TEMPLATE>{,<MAPPING>}
         <MAPPING> := <CHAR-TO-BE-MAPPED><TEMPLATE-ARG>

   The things in braces may be repeated any number of times.

   A <CHARSET-MAPPING> tells screen how to map characters in font
<DESIGNATOR> (`B': Ascii, `A': UK, `K': german, etc.)  to strings.
Every <MAPPING> describes to what string a single character will be
translated. A template mechanism is used, as most of the time the codes
have a lot in common (for example strings to switch to and from another
charset). Each occurrence of `%' in <TEMPLATE> gets substituted with the
TEMPLATE-ARG specified together with the character. If your strings are
not similar at all, then use `%' as a template and place the full
string in <TEMPLATE-ARG>. A quoting mechanism was added to make it
possible to use a real `%'. The `\' character quotes the special
characters `\', `%', and `,'.

   Here is an example:

         termcap hp700 'XC=B\E(K%\E(B,\304[,\326\\\\,\334]'

   This tells `screen', how to translate ISOlatin1 (charset `B') upper
case umlaut characters on a `hp700' terminal that has a german charset.
`\304' gets translated to `\E(K[\E(B' and so on.  Note that this line
gets parsed *three* times before the internal lookup table is built,
therefore a lot of quoting is needed to create a single `\'.

   Another extension was added to allow more emulation: If a mapping
translates the unquoted `%' char, it will be sent to the terminal
whenever screen switches to the corresponding <DESIGNATOR>.  In this
special case the template is assumed to be just `%' because the charset
switch sequence and the character mappings normally haven't much in
common.

   This example shows one use of the extension:
         termcap xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334'

   Here, a part of the german (`K') charset is emulated on an xterm.
If screen has to change to the `K' charset, `\E(B' will be sent to the
terminal, i.e. the ASCII charset is used instead. The template is just
`%', so the mapping is straightforward: `[' to `\304', `\' to `\326',
and `]' to `\334'.


automatically generated by info2www version 1.2.2.9