]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/terminfo.5.html
ncurses 6.0 - patch 20170401
[ncurses.git] / doc / html / man / terminfo.5.html
index becb62195bc697a2d8b2afc53b7fae7f11cbabd0..1f1f78f34c602ecba1701cf0025c883a3ef4da7d 100644 (file)
@@ -5,7 +5,7 @@
   * Note: this must be run through tbl before nroff.
   * The magic cookie on the first line triggers this under some man programs.
   ****************************************************************************
-  * Copyright (c) 1998-2013,2016 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -31,9 +31,9 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: terminfo.head,v 1.22 2016/10/15 17:02:31 tom Exp @
+  * @Id: terminfo.head,v 1.31 2017/03/06 09:58:14 tom Exp @
   * Head of terminfo man page ends here
-  * @Id: terminfo.tail,v 1.75 2016/12/24 22:54:11 tom Exp @
+  * @Id: terminfo.tail,v 1.78 2017/03/04 23:52:35 tom Exp @
   * Beginning of terminfo.tail file
   * This file is part of ncurses.
   * See "terminfo.head" for copyright.
        nals by giving a set of capabilities which they  have,  by
        specifying how to perform screen operations, and by speci-
        fying padding requirements and  initialization  sequences.
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20161224).
-
-       Entries in <EM>terminfo</EM> consist of a sequence of `,' separated
-       fields (embedded commas may be escaped with a backslash or
-       notated  as \054).  White space after the `,' separator is
-       ignored.  The first entry  for  each  terminal  gives  the
-       names  which  are known for the terminal, separated by `|'
-       characters.  The first  name  given  is  the  most  common
-       abbreviation  for the terminal, the last name given should
-       be a long name fully identifying  the  terminal,  and  all
-       others  are  understood as synonyms for the terminal name.
-       All names but the last should be in lower case and contain
-       no  blanks;  the last name may well contain upper case and
-       blanks for readability.
-
-       Lines beginning with a `#' in the first column are treated
-       as  comments.  While comment lines are legal at any point,
-       the output of <STRONG>captoinfo</STRONG> and <STRONG>infotocap</STRONG>  (aliases  for  <STRONG>tic</STRONG>)
-       will move comments so they occur only between entries.
-
-       Newlines  and  leading  tabs  may  be  used for formatting
-       entries for readability.  These are  removed  from  parsed
-       entries.   The  <STRONG>infocmp</STRONG> <STRONG>-f</STRONG> option relies on this to format
-       if-then-else expressions: the result can be read by <STRONG>tic</STRONG>.
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20170401).
+
+
+</PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
+       Entries in <EM>terminfo</EM> consist of a sequence of fields:
+
+       <STRONG>o</STRONG>   Each  field ends with a comma "," (embedded commas may
+           be escaped with a backslash or written as "\054").
+
+       <STRONG>o</STRONG>   White space between fields is ignored.
+
+       <STRONG>o</STRONG>   The first field in a  <EM>terminfo</EM>  entry  begins  in  the
+           first column.
+
+       <STRONG>o</STRONG>   Newlines  and  leading whitespace (spaces or tabs) may
+           be used for formatting entries for readability.  These
+           are removed from parsed entries.
+
+           The  <STRONG>infocmp</STRONG>  <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options rely on this to format
+           if-then-else expressions, or to enforce maximum  line-
+           width.   The  resulting formatted terminal description
+           can be read by <STRONG>tic</STRONG>.
+
+       <STRONG>o</STRONG>   The first field for  each  terminal  gives  the  names
+           which  are  known  for  the terminal, separated by "|"
+           characters.
+
+           The first name given is the most  common  abbreviation
+           for  the  terminal  (its  primary name), the last name
+           given should be a long name fully identifying the ter-
+           minal  (see  <STRONG><A HREF="curs_termattrs.3x.html">longname(3x)</A></STRONG>), and all others are treated
+           as synonyms (aliases) for the primary terminal name.
+
+           X/Open Curses advises that  all  names  but  the  last
+           should  be  in  lower  case and contain no blanks; the
+           last name may well contain upper case and  blanks  for
+           readability.
+
+           This  implementation is not so strict; it allows mixed
+           case in the primary name and  aliases.   If  the  last
+           name has no embedded blanks, it allows that to be both
+           an alias and a verbose name (but will warn about  this
+           ambiguity).
+
+       <STRONG>o</STRONG>   Lines  beginning  with  a  "#" in the first column are
+           treated as comments.
+
+           While comment lines are legal at any point, the output
+           of <STRONG>captoinfo</STRONG> and <STRONG>infotocap</STRONG> (aliases for <STRONG>tic</STRONG>) will move
+           comments so they occur only between entries.
 
        Terminal names (except for the last, verbose entry) should
        be chosen using the following conventions.  The particular
       -rv      Reverse video                            c100-rv
       -s       Enable status line                       vt100-s
       -vb      Use visible bell instead of beep         wy370-vb
-
       -w       Wide mode (&gt; 80 columns, usually 132)    vt100-w
 
        For more on terminal naming conventions, see  the  <STRONG>term(7)</STRONG>
        manual page.
 
 
+</PRE><H3><a name="h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></H3><PRE>
+       The terminfo entry consists of several <EM>capabilities</EM>, i.e.,
+       features that the terminal has, or methods for  exercising
+       the terminal's features.
+
+       After  the first field (giving the name(s) of the terminal
+       entry), there should be one  or  more  <EM>capability</EM>  fields.
+       These  are  boolean,  numeric  or string names with corre-
+       sponding values:
+
+       <STRONG>o</STRONG>   Boolean capabilities are true when present, false when
+           absent.   There is no explicit value for boolean capa-
+           bilities.
+
+       <STRONG>o</STRONG>   Numeric capabilities have a "#"  following  the  name,
+           then an unsigned decimal integer value.
+
+       <STRONG>o</STRONG>   String  capabilities  have  a  "=" following the name,
+           then an string of characters making up the  capability
+           value.
+
+           String  capabilities can be split into multiple lines,
+           just as the fields comprising a terminal entry can  be
+           split  into  multiple  lines.   While  blanks  between
+           fields are ignored, blanks embedded  within  a  string
+           value  are  retained,  except  for leading blanks on a
+           line.
+
+       Any capability can be <EM>canceled</EM>, i.e., suppressed from  the
+       terminal entry, by following its name with "@" rather than
+       a capability value.
+
+
+</PRE><H3><a name="h3-Similar-Terminals">Similar Terminals</a></H3><PRE>
+       If there are two very similar terminals, one (the variant)
+       can  be  defined  as  being just like the other (the base)
+       with certain exceptions.  In the definition of  the  vari-
+       ant,  the string capability <STRONG>use</STRONG> can be given with the name
+       of the base terminal:
+
+       <STRONG>o</STRONG>   The capabilities given before <STRONG>use</STRONG>  override  those  in
+           the base type named by <STRONG>use</STRONG>.
+
+       <STRONG>o</STRONG>   If  there  are  multiple  <STRONG>use</STRONG>  capabilities,  they are
+           merged in reverse order.  That is, the  rightmost  <STRONG>use</STRONG>
+           reference  is  processed  first,  then  the one to its
+           left, and so forth.
+
+       <STRONG>o</STRONG>   Capabilities given explicitly in  the  entry  override
+           those brought in by <STRONG>use</STRONG> references.
+
+       A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of
+       the use reference that imports it, where <EM>xx</EM> is  the  capa-
+       bility.  For example, the entry
+
+              2621-nl, smkx@, rmkx@, use=2621,
+
+       defines  a  2621-nl  that  does  not have the <STRONG>smkx</STRONG> or <STRONG>rmkx</STRONG>
+       capabilities, and hence does not turn on the function  key
+       labels  when in visual mode.  This is useful for different
+       modes for a terminal, or for different user preferences.
+
+       An entry included via <STRONG>use</STRONG> can contain  canceled  capabili-
+       ties,  which have the same effect as if those cancels were
+       inline in the using terminal entry.
+
+
 </PRE><H3><a name="h3-Predefined-Capabilities">Predefined Capabilities</a></H3><PRE>
-       The  following  is  a  complete  table of the capabilities
-       included in a terminfo description block and available  to
+       The following is a  complete  table  of  the  capabilities
+       included  in a terminfo description block and available to
        terminfo-using code.  In each line of the table,
 
-       The  <STRONG>variable</STRONG>  is the name by which the programmer (at the
+       The <STRONG>variable</STRONG> is the name by which the programmer  (at  the
        terminfo level) accesses the capability.
 
-       The <STRONG>capname</STRONG> is the short name used  in  the  text  of  the
-       database,  and  is used by a person updating the database.
-       Whenever possible, capnames are chosen to be the  same  as
+       The  <STRONG>capname</STRONG>  is  the  short  name used in the text of the
+       database, and is used by a person updating  the  database.
+       Whenever  possible,  capnames are chosen to be the same as
        or similar to the ANSI X3.64-1979 standard (now superseded
-       by ECMA-48, which uses identical or very  similar  names).
+       by  ECMA-48,  which uses identical or very similar names).
        Semantics are also intended to match those of the specifi-
        cation.
 
-       The termcap code is the old <STRONG>termcap</STRONG> capability name  (some
+       The  termcap code is the old <STRONG>termcap</STRONG> capability name (some
        capabilities are new, and have names which termcap did not
        originate).
 
-       Capability names have no hard length limit, but an  infor-
-       mal  limit  of  5 characters has been adopted to keep them
-       short and to allow the tabs in the  source  file  <STRONG>Caps</STRONG>  to
+       Capability  names have no hard length limit, but an infor-
+       mal limit of 5 characters has been adopted  to  keep  them
+       short  and  to  allow  the tabs in the source file <STRONG>Caps</STRONG> to
        line up nicely.
 
-       Finally,  the  description  field  attempts  to convey the
-       semantics of the capability.  You may find some  codes  in
+       Finally, the description  field  attempts  to  convey  the
+       semantics  of  the capability.  You may find some codes in
        the description field:
 
        (P)    indicates that padding may be specified
 
-       #[1-9] in  the description field indicates that the string
+       #[1-9] in the description field indicates that the  string
               is passed through tparm with parms as given (#<EM>i</EM>).
 
-       (P*)   indicates that padding may vary  in  proportion  to
+       (P*)   indicates  that  padding  may vary in proportion to
               the number of lines affected
 
        (#<EM>i</EM>)   indicates the <EM>i</EM>th parameter.
                                              by overwriting (hp)
        col_addr_glitch           xhpa   YA   only positive motion
                                              for hpa/mhpa caps
-
-
-
        cpi_changes_res           cpix   YF   changing character
                                              pitch changes reso-
                                              lution
                                              required
        no_esc_ctlc               xsb    xb   beehive (f1=escape,
                                              f2=ctrl C)
+
+
        no_pad_char               npc    NP   pad character does
                                              not exist
        non_dest_scroll_region    ndscr  ND   scrolling region is
                                              on the status line
        tilde_glitch              hz     hz   cannot print ~'s
                                              (Hazeltine)
-
-
        transparent_underline     ul     ul   underline character
                                              overstrikes
        xon_xoff                  xon    xo   terminal uses
        width_status_line         wsl    ws   number of columns in
                                              status line
 
-       The following numeric  capabilities  are  present  in  the
-       SVr4.0  term  structure, but are not yet documented in the
+       The  following  numeric  capabilities  are  present in the
+       SVr4.0 term structure, but are not yet documented  in  the
        man page.  They came in with SVr4's printer support.
 
 
        dot_horz_spacing          spinh  Yc   spacing of dots hor-
                                              izontally in dots
                                              per inch
-
        dot_vert_spacing          spinv  Yb   spacing of pins ver-
                                              tically in pins per
                                              inch
                                              to #1
        change_line_pitch         lpi    ZB   Change number of
                                              lines per inch to #1
+
        change_res_horz           chr    ZC   Change horizontal
                                              resolution to #1
+
+
        change_res_vert           cvr    ZD   Change vertical res-
                                              olution to #1
        change_scroll_region      csr    cs   change region to
                                              home cursor (P*)
        clr_bol                   el1    cb   Clear to beginning
                                              of line
-
-
        clr_eol                   el     ce   clear to end of line
                                              (P)
        clr_eos                   ed     cd   clear to end of
                                              char set
        enter_alt_charset_mode    smacs  as   start alternate
                                              character set (P)
+
        enter_am_mode             smam   SA   turn on automatic
                                              margins
        enter_blink_mode          blink  mb   turn on blinking
+
+
        enter_bold_mode           bold   md   turn on bold (extra
                                              bright) mode
        enter_ca_mode             smcup  ti   string to start pro-
        enter_italics_mode        sitm   ZH   Enter italic mode
        enter_leftward_mode       slm    ZI   Start leftward car-
                                              riage motion
-
        enter_micro_mode          smicm  ZJ   Start micro-motion
                                              mode
        enter_near_letter_quality snlq   ZK   Enter NLQ mode
                                              ter motion
        exit_xon_mode             rmxon  RX   turn off xon/xoff
                                              handshaking
+
+
        fixed_pause               pause  PA   pause for 2-3 sec-
                                              onds
        flash_hook                hook   fh   flash switch hook
                                              string
        init_2string              is2    is   initialization
                                              string
-
        init_3string              is3    i3   initialization
                                              string
        init_file                 if     if   name of initializa-
        key_f1                    kf1    k1   F1 function key
        key_f10                   kf10   k;   F10 function key
        key_f11                   kf11   F1   F11 function key
+
        key_f12                   kf12   F2   F12 function key
        key_f13                   kf13   F3   F13 function key
        key_f14                   kf14   F4   F14 function key
        key_f22                   kf22   FC   F22 function key
        key_f23                   kf23   FD   F23 function key
        key_f24                   kf24   FE   F24 function key
-
        key_f25                   kf25   FF   F25 function key
        key_f26                   kf26   FG   F26 function key
        key_f27                   kf27   FH   F27 function key
        key_ic                    kich1  kI   insert-character key
        key_il                    kil1   kA   insert-line key
        key_left                  kcub1  kl   left-arrow key
+
        key_ll                    kll    kH   lower-left key (home
                                              down)
        key_mark                  kmrk   %2   mark key
        key_previous              kprv   %8   previous key
        key_print                 kprt   %9   print key
        key_redo                  krdo   %0   redo key
-
        key_reference             kref   &amp;1   reference key
        key_refresh               krfr   &amp;2   refresh key
        key_replace               krpl   &amp;3   replace key
                                              board_transmit' mode
        keypad_xmit               smkx   ks   enter 'key-
                                              board_transmit' mode
+
+
        lab_f0                    lf0    l0   label on function
                                              key f0 if not f0
        lab_f1                    lf1    l1   label on function
                                              key f3 if not f3
        lab_f4                    lf4    l4   label on function
                                              key f4 if not f4
-
-
        lab_f5                    lf5    l5   label on function
                                              key f5 if not f5
        lab_f6                    lf6    l6   label on function
                                              to the left (P)
        parm_left_micro           mcub   Zg   Like parm_left_cur-
                                              sor in micro mode
+
+
        parm_right_cursor         cuf    RI   move #1 characters
                                              to the right (P*)
        parm_right_micro          mcuf   Zh   Like parm_right_cur-
                                              in micro mode
        pkey_key                  pfkey  pk   program function key
                                              #1 to type string #2
-
-
        pkey_local                pfloc  pl   program function key
                                              #1 to execute string
                                              #2
                                              pair to #1
        set_foreground            setf   Sf   Set foreground color
                                              #1
+
+
        set_left_margin           smgl   ML   set left soft margin
                                              at current column.
                                              See smgl. (ML is not
                                              umn
        set_right_margin_parm     smgrp  Zn   Set right margin at
                                              column #1
-
        set_tab                   hts    st   set a tab in every
                                              row, current columns
        set_top_margin            smgt   Zo   Set top margin at
        zero_motion               zerom  Zx   No motion for subse-
                                              quent character
 
-       The following  string  capabilities  are  present  in  the
-       SVr4.0  term structure, but were originally not documented
+       The  following  string  capabilities  are  present  in the
+       SVr4.0 term structure, but were originally not  documented
        in the man page.
 
 
                                                of same row
        bit_image_newline         binel    Zz   Move to next row
                                                of the bit image
-
        bit_image_repeat          birep    Xy   Repeat bit image
                                                cell #1 #2 times
        char_set_names            csnm     Zy   Produce #1'th item
                                                ANSI escape
        set_color_band            setcolor Yz   Change to ribbon
                                                color #1
+
        set_lr_margin             smglr    ML   Set both left and
                                                right margins to
                                                #1, #2.  (ML is
                                                cap).
        set_page_length           slines   YZ   Set page length to
                                                #1 lines
-
-
        set_tb_margin             smgtb    MT   Sets both top and
                                                bottom margins to
                                                #1, #2
 
-        The XSI Curses standard added  these  hardcopy  capabili-
+        The  XSI  Curses  standard added these hardcopy capabili-
         ties.  They were used in some post-4.1 versions of System
         V curses, e.g., Solaris 2.5 and IRIX 6.x.  Except for <STRONG>YI</STRONG>,
         the <STRONG>ncurses</STRONG> termcap names for them are invented.  Accord-
-        ing to the XSI Curses  standard,  they  have  no  termcap
+        ing  to  the  XSI  Curses  standard, they have no termcap
         names.  If your compiled terminfo entries use these, they
-        may not  be  binary-compatible  with  System  V  terminfo
+        may  not  be  binary-compatible  with  System  V terminfo
         entries after SVr4.1; beware!
 
 
 
 
 </PRE><H3><a name="h3-User-Defined-Capabilities">User-Defined Capabilities</a></H3><PRE>
-       The  preceding section listed the <EM>predefined</EM> capabilities.
-       They deal with some  special  features  for  terminals  no
-       longer  (or  possibly never) produced.  Occasionally there
-       are special features of newer terminals which are  awkward
+       The preceding section listed the <EM>predefined</EM>  capabilities.
+       They  deal  with  some  special  features for terminals no
+       longer (or possibly never) produced.   Occasionally  there
+       are  special features of newer terminals which are awkward
        or impossible to represent by reusing the predefined capa-
        bilities.
 
        <STRONG>ncurses</STRONG> addresses this limitation by allowing user-defined
        capabilities.  The <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> programs provide the <STRONG>-x</STRONG>
-       option for this purpose.   When  <STRONG>-x</STRONG>  is  set,  <STRONG>tic</STRONG>  treats
-       unknown  capabilities  as  user-defined.   That is, if <STRONG>tic</STRONG>
-       encounters a capability name which it does not  recognize,
-       it  infers  its  type (boolean, number or string) from the
+       option  for  this  purpose.   When  <STRONG>-x</STRONG>  is set, <STRONG>tic</STRONG> treats
+       unknown capabilities as user-defined.   That  is,  if  <STRONG>tic</STRONG>
+       encounters  a capability name which it does not recognize,
+       it infers its type (boolean, number or  string)  from  the
        syntax and makes an extended table entry for that capabil-
-       ity.   The <STRONG>use_extended_names</STRONG> function makes this informa-
+       ity.  The <STRONG>use_extended_names</STRONG> function makes this  informa-
        tion conditionally available to applications.  The ncurses
-       library  provides the data leaving most of the behavior to
+       library provides the data leaving most of the behavior  to
        applications:
 
        <STRONG>o</STRONG>   User-defined capability strings whose name begins with
            "k" are treated as function keys.
 
-       <STRONG>o</STRONG>   The  types (boolean, number, string) determined by <STRONG>tic</STRONG>
+       <STRONG>o</STRONG>   The types (boolean, number, string) determined by  <STRONG>tic</STRONG>
            can be inferred by successful calls on <STRONG>tigetflag</STRONG>, etc.
 
-       <STRONG>o</STRONG>   If the capability name happens to be  two  characters,
-           the  capability  is also available through the termcap
+       <STRONG>o</STRONG>   If  the  capability name happens to be two characters,
+           the capability is also available through  the  termcap
            interface.
 
        While termcap is said to be extensible because it does not
-       use  a  predefined set of capabilities, in practice it has
-       been limited  to  the  capabilities  defined  by  terminfo
-       implementations.   As  a  rule,  user-defined capabilities
+       use a predefined set of capabilities, in practice  it  has
+       been  limited  to  the  capabilities  defined  by terminfo
+       implementations.  As  a  rule,  user-defined  capabilities
        intended for use by termcap applications should be limited
-       to  booleans  and  numbers  to avoid running past the 1023
-       byte limit assumed by termcap  implementations  and  their
-       applications.   In  particular, providing extended sets of
-       function keys (past the 60 numbered keys and  the  handful
+       to booleans and numbers to avoid  running  past  the  1023
+       byte  limit  assumed  by termcap implementations and their
+       applications.  In particular, providing extended  sets  of
+       function  keys  (past the 60 numbered keys and the handful
        of special named keys) is best done using the longer names
        available using terminfo.
 
 
 </PRE><H3><a name="h3-A-Sample-Entry">A Sample Entry</a></H3><PRE>
        The following entry, describing an ANSI-standard terminal,
-       is  representative  of  what a <STRONG>terminfo</STRONG> entry for a modern
+       is representative of what a <STRONG>terminfo</STRONG> entry  for  a  modern
        terminal typically looks like.
 
        ansi|ansi/pc-term compatible with color,
                smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
                u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,
 
-       Entries may continue onto multiple lines by placing  white
-       space  at  the  beginning  of  each line except the first.
-       Comments may be included  on  lines  beginning  with  "#".
+       Entries  may continue onto multiple lines by placing white
+       space at the beginning of  each  line  except  the  first.
+       Comments  may  be  included  on  lines beginning with "#".
        Capabilities in <EM>terminfo</EM> are of three types:
 
-       <STRONG>o</STRONG>   Boolean  capabilities which indicate that the terminal
+       <STRONG>o</STRONG>   Boolean capabilities which indicate that the  terminal
            has some particular feature,
 
-       <STRONG>o</STRONG>   numeric capabilities giving the size of  the  terminal
+       <STRONG>o</STRONG>   numeric  capabilities  giving the size of the terminal
            or the size of particular delays, and
 
-       <STRONG>o</STRONG>   string  capabilities,  which give a sequence which can
+       <STRONG>o</STRONG>   string capabilities, which give a sequence  which  can
            be used to perform particular terminal operations.
 
 
 </PRE><H3><a name="h3-Types-of-Capabilities">Types of Capabilities</a></H3><PRE>
-       All capabilities have names.  For instance, the fact  that
-       ANSI-standard  terminals  have <EM>automatic</EM> <EM>margins</EM> (i.e., an
-       automatic return and line-feed when the end of a  line  is
-       reached)  is  indicated  by  the capability <STRONG>am</STRONG>.  Hence the
+       All  capabilities have names.  For instance, the fact that
+       ANSI-standard terminals have <EM>automatic</EM> <EM>margins</EM>  (i.e.,  an
+       automatic  return  and line-feed when the end of a line is
+       reached) is indicated by the  capability  <STRONG>am</STRONG>.   Hence  the
        description of ansi includes <STRONG>am</STRONG>.  Numeric capabilities are
-       followed  by  the character "#" and then a positive value.
-       Thus <STRONG>cols</STRONG>, which indicates the number of columns the  ter-
-       minal  has,  gives  the  value  "80" for ansi.  Values for
+       followed by the character "#" and then a  positive  value.
+       Thus  <STRONG>cols</STRONG>, which indicates the number of columns the ter-
+       minal has, gives the value  "80"  for  ansi.   Values  for
        numeric capabilities may be specified in decimal, octal or
-       hexadecimal,  using the C programming language conventions
+       hexadecimal, using the C programming language  conventions
        (e.g., 255, 0377 and 0xff or 0xFF).
 
-       Finally, string valued capabilities, such as <STRONG>el</STRONG> (clear  to
+       Finally,  string valued capabilities, such as <STRONG>el</STRONG> (clear to
        end of line sequence) are given by the two-character code,
-       an "=", and then a string ending  at  the  next  following
+       an  "=",  and  then  a string ending at the next following
        ",".
 
-       A  number  of  escape sequences are provided in the string
+       A number of escape sequences are provided  in  the  string
        valued capabilities for easy encoding of characters there.
-       Both  <STRONG>\E</STRONG>  and  <STRONG>\e</STRONG> map to an ESCAPE character, <STRONG>^x</STRONG> maps to a
-       control-x for any appropriate x, and the sequences  <STRONG>\n</STRONG>  <STRONG>\l</STRONG>
-       <STRONG>\r</STRONG>  <STRONG>\t</STRONG>  <STRONG>\b</STRONG>  <STRONG>\f</STRONG>  <STRONG>\s</STRONG> give a newline, line-feed, return, tab,
+       Both <STRONG>\E</STRONG> and <STRONG>\e</STRONG> map to an ESCAPE character, <STRONG>^x</STRONG>  maps  to  a
+       control-x  for  any appropriate x, and the sequences <STRONG>\n</STRONG> <STRONG>\l</STRONG>
+       <STRONG>\r</STRONG> <STRONG>\t</STRONG> <STRONG>\b</STRONG> <STRONG>\f</STRONG> <STRONG>\s</STRONG> give a  newline,  line-feed,  return,  tab,
        backspace, form-feed, and space.  Other escapes include
 
        <STRONG>o</STRONG>   <STRONG>\^</STRONG> for <STRONG>^</STRONG>,
 
        <STRONG>o</STRONG>   and <STRONG>\0</STRONG> for null.
 
-           <STRONG>\0</STRONG> will produce  \200,  which  does  not  terminate  a
-           string  but behaves as a null character on most termi-
+           <STRONG>\0</STRONG>  will  produce  \200,  which  does  not terminate a
+           string but behaves as a null character on most  termi-
            nals, providing CS7 is specified.  See <STRONG>stty(1)</STRONG>.
 
-           The reason for this quirk is to maintain  binary  com-
-           patibility  of  the compiled terminfo files with other
-           implementations, e.g., the SVr4 systems,  which  docu-
-           ment  this.   Compiled  terminfo files use null-termi-
-           nated strings, with no lengths.  Modifying this  would
+           The  reason  for this quirk is to maintain binary com-
+           patibility of the compiled terminfo files  with  other
+           implementations,  e.g.,  the SVr4 systems, which docu-
+           ment this.  Compiled terminfo  files  use  null-termi-
+           nated  strings, with no lengths.  Modifying this would
            require a new binary format, which would not work with
            other implementations.
 
-       Finally, characters may be given  as  three  octal  digits
+       Finally,  characters  may  be  given as three octal digits
        after a <STRONG>\</STRONG>.
 
-       A  delay  in  milliseconds may appear anywhere in a string
-       capability, enclosed in $&lt;..&gt; brackets, as in  <STRONG>el</STRONG>=\EK$&lt;5&gt;,
-       and  padding  characters  are supplied by <STRONG>tputs</STRONG> to provide
-       this delay.
+       A delay in milliseconds may appear anywhere  in  a  string
+       capability,  enclosed in $&lt;..&gt; brackets, as in <STRONG>el</STRONG>=\EK$&lt;5&gt;,
+       and padding characters are supplied by <STRONG><A HREF="curs_terminfo.3x.html">tputs(3x)</A></STRONG>  to  pro-
+       vide this delay.
 
-       <STRONG>o</STRONG>   The delay must be a number with at  most  one  decimal
+       <STRONG>o</STRONG>   The  delay  must  be a number with at most one decimal
            place of precision; it may be followed by suffixes "*"
            or "/" or both.
 
-       <STRONG>o</STRONG>   A "*" indicates that the padding required  is  propor-
-           tional  to  the number of lines affected by the opera-
-           tion, and the amount given  is  the  per-affected-unit
-           padding  required.   (In the case of insert character,
+       <STRONG>o</STRONG>   A  "*"  indicates that the padding required is propor-
+           tional to the number of lines affected by  the  opera-
+           tion,  and  the  amount given is the per-affected-unit
+           padding required.  (In the case of  insert  character,
            the factor is still the number of <EM>lines</EM> affected.)
 
-           Normally, padding is advisory if the  device  has  the
-           <STRONG>xon</STRONG>  capability;  it  is used for cost computation but
+           Normally,  padding  is  advisory if the device has the
+           <STRONG>xon</STRONG> capability; it is used for  cost  computation  but
            does not trigger delays.
 
-       <STRONG>o</STRONG>   A "/" suffix indicates that the padding  is  mandatory
+       <STRONG>o</STRONG>   A  "/"  suffix indicates that the padding is mandatory
            and forces a delay of the given number of milliseconds
-           even on devices for which <STRONG>xon</STRONG> is present  to  indicate
+           even  on  devices for which <STRONG>xon</STRONG> is present to indicate
            flow control.
 
-       Sometimes  individual  capabilities must be commented out.
-       To do this, put a period before the capability name.   For
+       Sometimes individual capabilities must be  commented  out.
+       To  do this, put a period before the capability name.  For
        example, see the second <STRONG>ind</STRONG> in the example above.
 
 
 </PRE><H3><a name="h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></H3><PRE>
-       The  <STRONG>ncurses</STRONG> library searches for terminal descriptions in
+       The <STRONG>ncurses</STRONG> library searches for terminal descriptions  in
        several places.  It uses only the first description found.
-       The  library  has  a  compiled-in list of places to search
-       which can be overridden by environment variables.   Before
-       starting  to  search, <STRONG>ncurses</STRONG> eliminates duplicates in its
+       The library has a compiled-in list  of  places  to  search
+       which  can be overridden by environment variables.  Before
+       starting to search, <STRONG>ncurses</STRONG> eliminates duplicates  in  its
        search list.
 
-       <STRONG>o</STRONG>   If the environment variable TERMINFO  is  set,  it  is
-           interpreted  as the pathname of a directory containing
-           the compiled description you  are  working  on.   Only
+       <STRONG>o</STRONG>   If  the  environment  variable  TERMINFO is set, it is
+           interpreted as the pathname of a directory  containing
+           the  compiled  description  you  are working on.  Only
            that directory is searched.
 
-       <STRONG>o</STRONG>   If  TERMINFO  is not set, <STRONG>ncurses</STRONG> will instead look in
-           the directory <STRONG>$HOME/.terminfo</STRONG> for a compiled  descrip-
+       <STRONG>o</STRONG>   If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead  look  in
+           the  directory <STRONG>$HOME/.terminfo</STRONG> for a compiled descrip-
            tion.
 
-       <STRONG>o</STRONG>   Next,  if  the  environment  variable TERMINFO_DIRS is
+       <STRONG>o</STRONG>   Next, if the  environment  variable  TERMINFO_DIRS  is
            set, <STRONG>ncurses</STRONG> will interpret the contents of that vari-
-           able  as  a  list  of  colon-separated directories (or
+           able as a  list  of  colon-separated  directories  (or
            database files) to be searched.
 
-           An empty directory name (i.e., if the variable  begins
-           or  ends with a colon, or contains adjacent colons) is
-           interpreted as  the  system  location  <EM>/usr/share/ter-</EM>
+           An  empty directory name (i.e., if the variable begins
+           or ends with a colon, or contains adjacent colons)  is
+           interpreted  as  the  system  location <EM>/usr/share/ter-</EM>
            <EM>minfo</EM>.
 
        <STRONG>o</STRONG>   Finally, <STRONG>ncurses</STRONG> searches these compiled-in locations:
 
-           <STRONG>o</STRONG>   a           list           of          directories
+           <STRONG>o</STRONG>   a          list           of           directories
                (/usr/local/ncurses/share/terminfo:/usr/share/ter-
                minfo), and
 
 
 
 </PRE><H3><a name="h3-Preparing-Descriptions">Preparing Descriptions</a></H3><PRE>
-       We now outline how to prepare descriptions  of  terminals.
-       The  most  effective way to prepare a terminal description
-       is by imitating the description of a similar  terminal  in
-       <EM>terminfo</EM>  and  to  build up a description gradually, using
+       We  now  outline how to prepare descriptions of terminals.
+       The most effective way to prepare a  terminal  description
+       is  by  imitating the description of a similar terminal in
+       <EM>terminfo</EM> and to build up a  description  gradually,  using
        partial descriptions with <EM>vi</EM> or some other screen-oriented
-       program  to  check that they are correct.  Be aware that a
+       program to check that they are correct.  Be aware  that  a
        very unusual terminal may expose deficiencies in the abil-
-       ity  of  the  <EM>terminfo</EM>  file to describe it or bugs in the
+       ity of the <EM>terminfo</EM> file to describe it  or  bugs  in  the
        screen-handling code of the test program.
 
-       To get the padding for insert line right (if the  terminal
+       To  get the padding for insert line right (if the terminal
        manufacturer did not document it) a severe test is to edit
-       a large file at 9600 baud, delete 16 or so lines from  the
-       middle  of  the screen, then hit the "u" key several times
-       quickly.  If the terminal messes up, more padding is  usu-
-       ally  needed.  A similar test can be used for insert char-
+       a  large file at 9600 baud, delete 16 or so lines from the
+       middle of the screen, then hit the "u" key  several  times
+       quickly.   If the terminal messes up, more padding is usu-
+       ally needed.  A similar test can be used for insert  char-
        acter.
 
 
 </PRE><H3><a name="h3-Basic-Capabilities">Basic Capabilities</a></H3><PRE>
-       The number of columns on each line  for  the  terminal  is
-       given  by the <STRONG>cols</STRONG> numeric capability.  If the terminal is
-       a CRT, then the number of lines on the screen is given  by
+       The  number  of  columns  on each line for the terminal is
+       given by the <STRONG>cols</STRONG> numeric capability.  If the terminal  is
+       a  CRT, then the number of lines on the screen is given by
        the <STRONG>lines</STRONG> capability.  If the terminal wraps around to the
-       beginning of the next line when it reaches the right  mar-
+       beginning  of the next line when it reaches the right mar-
        gin, then it should have the <STRONG>am</STRONG> capability.  If the termi-
-       nal can clear its screen, leaving the cursor in  the  home
-       position,  then this is given by the <STRONG>clear</STRONG> string capabil-
-       ity.  If the terminal overstrikes (rather than clearing  a
-       position  when  a character is struck over) then it should
-       have the <STRONG>os</STRONG> capability.  If the  terminal  is  a  printing
-       terminal,  with no soft copy unit, give it both <STRONG>hc</STRONG> and <STRONG>os</STRONG>.
-       (<STRONG>os</STRONG> applies to storage scope terminals, such as  TEKTRONIX
-       4010  series, as well as hard copy and APL terminals.)  If
+       nal  can  clear its screen, leaving the cursor in the home
+       position, then this is given by the <STRONG>clear</STRONG> string  capabil-
+       ity.   If the terminal overstrikes (rather than clearing a
+       position when a character is struck over) then  it  should
+       have  the  <STRONG>os</STRONG>  capability.   If the terminal is a printing
+       terminal, with no soft copy unit, give it both <STRONG>hc</STRONG> and  <STRONG>os</STRONG>.
+       (<STRONG>os</STRONG>  applies to storage scope terminals, such as TEKTRONIX
+       4010 series, as well as hard copy and APL terminals.)   If
        there is a code to move the cursor to the left edge of the
        current row, give this as <STRONG>cr</STRONG>.  (Normally this will be car-
-       riage return, control M.)  If there is a code  to  produce
+       riage  return,  control M.)  If there is a code to produce
        an audible signal (bell, beep, etc) give this as <STRONG>bel</STRONG>.
 
-       If  there is a code to move the cursor one position to the
-       left (such as backspace) that capability should  be  given
-       as  <STRONG>cub1</STRONG>.   Similarly, codes to move to the right, up, and
+       If there is a code to move the cursor one position to  the
+       left  (such  as backspace) that capability should be given
+       as <STRONG>cub1</STRONG>.  Similarly, codes to move to the right,  up,  and
        down should be given as <STRONG>cuf1</STRONG>, <STRONG>cuu1</STRONG>, and <STRONG>cud1</STRONG>.  These local
-       cursor  motions  should not alter the text they pass over,
-       for example, you would not normally use  "<STRONG>cuf1</STRONG>= "  because
+       cursor motions should not alter the text they  pass  over,
+       for  example,  you would not normally use "<STRONG>cuf1</STRONG>= " because
        the space would erase the character moved over.
 
-       A  very  important  point  here  is  that the local cursor
-       motions encoded in <EM>terminfo</EM> are undefined at the left  and
-       top  edges  of  a  CRT  terminal.   Programs  should never
-       attempt to backspace around the left edge,  unless  <STRONG>bw</STRONG>  is
+       A very important point  here  is  that  the  local  cursor
+       motions  encoded in <EM>terminfo</EM> are undefined at the left and
+       top edges  of  a  CRT  terminal.   Programs  should  never
+       attempt  to  backspace  around the left edge, unless <STRONG>bw</STRONG> is
        given, and never attempt to go up locally off the top.  In
-       order to scroll text up, a program will go to  the  bottom
+       order  to  scroll text up, a program will go to the bottom
        left corner of the screen and send the <STRONG>ind</STRONG> (index) string.
 
        To scroll text down, a program goes to the top left corner
-       of the screen and sends the  <STRONG>ri</STRONG>  (reverse  index)  string.
-       The  strings  <STRONG>ind</STRONG>  and  <STRONG>ri</STRONG> are undefined when not on their
+       of  the  screen  and  sends the <STRONG>ri</STRONG> (reverse index) string.
+       The strings <STRONG>ind</STRONG> and <STRONG>ri</STRONG> are undefined  when  not  on  their
        respective corners of the screen.
 
        Parameterized versions of the scrolling sequences are <STRONG>indn</STRONG>
        and <STRONG>rin</STRONG> which have the same semantics as <STRONG>ind</STRONG> and <STRONG>ri</STRONG> except
-       that they take one parameter, and scroll that many  lines.
-       They  are also undefined except at the appropriate edge of
+       that  they take one parameter, and scroll that many lines.
+       They are also undefined except at the appropriate edge  of
        the screen.
 
-       The <STRONG>am</STRONG> capability tells whether the cursor sticks  at  the
-       right  edge  of  the  screen when text is output, but this
+       The  <STRONG>am</STRONG>  capability tells whether the cursor sticks at the
+       right edge of the screen when text  is  output,  but  this
        does not necessarily apply to a <STRONG>cuf1</STRONG> from the last column.
-       The  only local motion which is defined from the left edge
-       is if <STRONG>bw</STRONG> is given, then a <STRONG>cub1</STRONG> from  the  left  edge  will
-       move  to the right edge of the previous row.  If <STRONG>bw</STRONG> is not
-       given, the effect is undefined.  This is useful for  draw-
-       ing  a box around the edge of the screen, for example.  If
-       the terminal has switch selectable automatic margins,  the
-       <EM>terminfo</EM>  file  usually assumes that this is on; i.e., <STRONG>am</STRONG>.
-       If the terminal has a command which  moves  to  the  first
-       column  of the next line, that command can be given as <STRONG>nel</STRONG>
-       (newline).  It does not matter if the command  clears  the
-       remainder  of  the current line, so if the terminal has no
-       <STRONG>cr</STRONG> and <STRONG>lf</STRONG> it may still be possible to craft a working  <STRONG>nel</STRONG>
+       The only local motion which is defined from the left  edge
+       is  if  <STRONG>bw</STRONG>  is  given, then a <STRONG>cub1</STRONG> from the left edge will
+       move to the right edge of the previous row.  If <STRONG>bw</STRONG> is  not
+       given,  the effect is undefined.  This is useful for draw-
+       ing a box around the edge of the screen, for example.   If
+       the  terminal has switch selectable automatic margins, the
+       <EM>terminfo</EM> file usually assumes that this is on;  i.e.,  <STRONG>am</STRONG>.
+       If  the  terminal  has  a command which moves to the first
+       column of the next line, that command can be given as  <STRONG>nel</STRONG>
+       (newline).   It  does not matter if the command clears the
+       remainder of the current line, so if the terminal  has  no
+       <STRONG>cr</STRONG>  and <STRONG>lf</STRONG> it may still be possible to craft a working <STRONG>nel</STRONG>
        out of one or both of them.
 
        These  capabilities  suffice  to  describe  hard-copy  and
-       "glass-tty" terminals.  Thus  the  model  33  teletype  is
+       "glass-tty"  terminals.   Thus  the  model  33 teletype is
        described as
 
        33|tty33|tty|model 33 teletype,
 
 
 </PRE><H3><a name="h3-Parameterized-Strings">Parameterized Strings</a></H3><PRE>
-       Cursor  addressing  and other strings requiring parameters
-       in the terminal are described by  a  parameterized  string
-       capability,  with  <EM>printf</EM>-like  escapes  such as <EM>%x</EM> in it.
-       For example, to address the cursor, the <STRONG>cup</STRONG> capability  is
+       Cursor addressing and other strings  requiring  parameters
+       in  the  terminal  are described by a parameterized string
+       capability, with <EM>printf</EM>-like escapes such  as  <EM>%x</EM>  in  it.
+       For  example, to address the cursor, the <STRONG>cup</STRONG> capability is
        given, using two parameters: the row and column to address
        to.  (Rows and columns are numbered from zero and refer to
        the physical screen visible to the user, not to any unseen
-       memory.)  If  the  terminal  has  memory  relative  cursor
+       memory.)   If  the  terminal  has  memory  relative cursor
        addressing, that can be indicated by <STRONG>mrcup</STRONG>.
 
-       The  parameter  mechanism uses a stack and special <STRONG>%</STRONG> codes
-       to manipulate it.  Typically a sequence will push  one  of
-       the  parameters  onto  the stack and then print it in some
-       format.  Print (e.g., "%d")  is  a  special  case.   Other
-       operations,  including  "%t"  pop  their  operand from the
+       The parameter mechanism uses a stack and special  <STRONG>%</STRONG>  codes
+       to  manipulate  it.  Typically a sequence will push one of
+       the parameters onto the stack and then print  it  in  some
+       format.   Print  (e.g.,  "%d")  is  a special case.  Other
+       operations, including "%t"  pop  their  operand  from  the
        stack.  It is noted that more complex operations are often
        necessary, e.g., in the <STRONG>sgr</STRONG> string.
 
        <STRONG>%%</STRONG>   outputs "%"
 
        <STRONG>%</STRONG><EM>[[</EM>:<EM>]flags][width[.precision]][</EM><STRONG>doxXs</STRONG><EM>]</EM>
-            as  in  <STRONG>printf</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>.  Use a ":"
-            to allow the next character to be a "-" flag,  avoid-
+            as in <STRONG>printf</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>.  Use  a  ":"
+            to  allow the next character to be a "-" flag, avoid-
             ing interpreting "%-" as an operator.
 
        %c   print <EM>pop()</EM> like %c in <STRONG>printf</STRONG>
        <STRONG>%g</STRONG><EM>[A-Z]</EM>
             get static variable <EM>[a-z]</EM> and push it
 
-            The  terms  "static"  and  "dynamic"  are misleading.
-            Historically, these are simply two different sets  of
-            variables,  whose  values are not reset between calls
-            to <STRONG>tparm</STRONG>.  However, that fact is  not  documented  in
-            other  implementations.  Relying on it will adversely
-            impact portability to other implementations.
+            The terms  "static"  and  "dynamic"  are  misleading.
+            Historically,  these are simply two different sets of
+            variables, whose values are not reset  between  calls
+            to  <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>.   However, that fact is not documented
+            in  other  implementations.   Relying  on   it   will
+            adversely  impact  portability  to  other implementa-
+            tions.
 
        <STRONG>%'</STRONG><EM>c</EM><STRONG>'</STRONG> char constant <EM>c</EM>
 
        diamond                     ACS_DIAMOND   +         `
        greater-than-or-equal-to    ACS_GEQUAL    &gt;         z
        greek pi                    ACS_PI        *         {
+
        horizontal line             ACS_HLINE     -         q
        lantern symbol              ACS_LANTERN   #         i
        large plus or crossover     ACS_PLUS      +         n
        <STRONG>o</STRONG>   If the terminal supports other escape sequences to set
            background and foreground, they  should  be  coded  as
            <STRONG>setf</STRONG>  and  <STRONG>setb</STRONG>,  respectively.   The  <STRONG>vidputs</STRONG> and the
-           <STRONG>refresh</STRONG> functions use the <STRONG>setaf</STRONG> and <STRONG>setab</STRONG> capabilities
-           if they are defined.
+           <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> functions use the <STRONG>setaf</STRONG> and <STRONG>setab</STRONG> capabil-
+           ities if they are defined.
 
        The  <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>  and <STRONG>setf</STRONG>/<STRONG>setb</STRONG> capabilities take a single
        numeric argument each.  Argument values 0-7 of <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>
        adding more capabilities of the form <STRONG>x</STRONG><EM>x</EM>.
 
 
-</PRE><H3><a name="h3-Similar-Terminals">Similar Terminals</a></H3><PRE>
-       If there are two very similar terminals, one (the variant)
-       can  be  defined  as  being just like the other (the base)
-       with certain exceptions.  In the definition of  the  vari-
-       ant,  the string capability <STRONG>use</STRONG> can be given with the name
-       of the base terminal.  The capabilities given  before  <STRONG>use</STRONG>
-       override  those  in  the base type named by <STRONG>use</STRONG>.  If there
-       are multiple <STRONG>use</STRONG> capabilities, they are merged in  reverse
-       order.   That is, the rightmost <STRONG>use</STRONG> reference is processed
-       first, then the one to its left, and so forth.   Capabili-
-       ties  given explicitly in the entry override those brought
-       in by <STRONG>use</STRONG> references.
-
-       A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of
-       the  use  reference that imports it, where <EM>xx</EM> is the capa-
-       bility.  For example, the entry
-
-              2621-nl, smkx@, rmkx@, use=2621,
-
-       defines a 2621-nl that does not  have  the  <STRONG>smkx</STRONG>  or  <STRONG>rmkx</STRONG>
-       capabilities,  and hence does not turn on the function key
-       labels when in visual mode.  This is useful for  different
-       modes for a terminal, or for different user preferences.
-
-
 </PRE><H3><a name="h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></H3><PRE>
-       Long  terminfo  entries  are  unlikely to be a problem; to
-       date, no entry has even  approached  terminfo's  4096-byte
+       Long terminfo entries are unlikely to  be  a  problem;  to
+       date,  no  entry  has even approached terminfo's 4096-byte
        string-table maximum.  Unfortunately, the termcap transla-
        tions are much more strictly limited (to 1023 bytes), thus
-       termcap  translations  of  long terminfo entries can cause
+       termcap translations of long terminfo  entries  can  cause
        problems.
 
-       The man pages for 4.3BSD and  older  versions  of  <STRONG>tgetent</STRONG>
-       instruct  the  user to allocate a 1024-byte buffer for the
-       termcap entry.  The  entry  gets  null-terminated  by  the
+       The  man  pages  for  4.3BSD and older versions of <STRONG>tgetent</STRONG>
+       instruct the user to allocate a 1024-byte buffer  for  the
+       termcap  entry.   The  entry  gets  null-terminated by the
        termcap library, so that makes the maximum safe length for
-       a termcap entry 1k-1 (1023) bytes.  Depending on what  the
-       application  and  the termcap library being used does, and
-       where in the termcap file the terminal type  that  <STRONG>tgetent</STRONG>
+       a  termcap entry 1k-1 (1023) bytes.  Depending on what the
+       application and the termcap library being used  does,  and
+       where  in  the termcap file the terminal type that <STRONG>tgetent</STRONG>
        is searching for is, several bad things can happen.
 
-       Some  termcap libraries print a warning message or exit if
-       they find an entry that's longer than 1023  bytes;  others
-       do  not;  others truncate the entries to 1023 bytes.  Some
+       Some termcap libraries print a warning message or exit  if
+       they  find  an entry that's longer than 1023 bytes; others
+       do not; others truncate the entries to 1023  bytes.   Some
        application programs allocate more than the recommended 1K
        for the termcap entry; others do not.
 
        Each termcap entry has two important sizes associated with
        it: before "tc" expansion, and after "tc" expansion.  "tc"
-       is  the  capability that tacks on another termcap entry to
-       the end of the current one, to add  on  its  capabilities.
-       If  a termcap entry does not use the "tc" capability, then
+       is the capability that tacks on another termcap  entry  to
+       the  end  of  the current one, to add on its capabilities.
+       If a termcap entry does not use the "tc" capability,  then
        of course the two lengths are the same.
 
-       The "before tc expansion" length  is  the  most  important
-       one,  because it affects more than just users of that par-
-       ticular terminal.  This is the length of the entry  as  it
+       The  "before  tc  expansion"  length is the most important
+       one, because it affects more than just users of that  par-
+       ticular  terminal.   This is the length of the entry as it
        exists in /etc/termcap, minus the backslash-newline pairs,
-       which <STRONG>tgetent</STRONG> strips out while reading it.   Some  termcap
-       libraries  strip  off  the final newline, too (GNU termcap
+       which  <STRONG>tgetent</STRONG>  strips out while reading it.  Some termcap
+       libraries strip off the final newline,  too  (GNU  termcap
        does not).  Now suppose:
 
-       <STRONG>o</STRONG>   a termcap entry before expansion  is  more  than  1023
+       <STRONG>o</STRONG>   a  termcap  entry  before  expansion is more than 1023
            bytes long,
 
        <STRONG>o</STRONG>   and the application has only allocated a 1k buffer,
 
-       <STRONG>o</STRONG>   and  the  termcap  library (like the one in BSD/OS 1.1
-           and GNU) reads the whole entry  into  the  buffer,  no
-           matter  what  its length, to see if it is the entry it
+       <STRONG>o</STRONG>   and the termcap library (like the one  in  BSD/OS  1.1
+           and  GNU)  reads  the  whole entry into the buffer, no
+           matter what its length, to see if it is the  entry  it
            wants,
 
-       <STRONG>o</STRONG>   and <STRONG>tgetent</STRONG> is searching  for  a  terminal  type  that
-           either  is the long entry, appears in the termcap file
-           after the long entry, or does not appear in  the  file
-           at  all (so that <STRONG>tgetent</STRONG> has to search the whole term-
+       <STRONG>o</STRONG>   and  <STRONG>tgetent</STRONG>  is  searching  for  a terminal type that
+           either is the long entry, appears in the termcap  file
+           after  the  long entry, or does not appear in the file
+           at all (so that <STRONG>tgetent</STRONG> has to search the whole  term-
            cap file).
 
        Then <STRONG>tgetent</STRONG> will overwrite memory, perhaps its stack, and
-       probably  core dump the program.  Programs like telnet are
-       particularly vulnerable; modern telnets pass along  values
-       like  the  terminal  type  automatically.  The results are
-       almost as undesirable with a termcap library,  like  SunOS
+       probably core dump the program.  Programs like telnet  are
+       particularly  vulnerable; modern telnets pass along values
+       like the terminal type  automatically.   The  results  are
+       almost  as  undesirable with a termcap library, like SunOS
        4.1.3 and Ultrix 4.4, that prints warning messages when it
-       reads an overly long termcap entry.  If a termcap  library
-       truncates  long  entries,  like OSF/1 3.0, it is immune to
-       dying here but will return incorrect data for  the  termi-
+       reads  an overly long termcap entry.  If a termcap library
+       truncates long entries, like OSF/1 3.0, it  is  immune  to
+       dying  here  but will return incorrect data for the termi-
        nal.
 
        The "after tc expansion" length will have a similar effect
        while searching.
 
        In summary, a termcap entry that is longer than 1023 bytes
-       can cause, on various combinations  of  termcap  libraries
-       and  applications,  a  core  dump,  warnings, or incorrect
-       operation.  If it is too long even before "tc"  expansion,
+       can  cause,  on  various combinations of termcap libraries
+       and applications, a  core  dump,  warnings,  or  incorrect
+       operation.   If it is too long even before "tc" expansion,
        it will have this effect even for users of some other ter-
-       minal types and users whose TERM variable does not have  a
+       minal  types and users whose TERM variable does not have a
        termcap entry.
 
        When in -C (translate to termcap) mode, the <STRONG>ncurses</STRONG> imple-
        mentation of <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> issues warning messages when the pre-
-       tc  length  of  a termcap translation is too long.  The -c
-       (check) option also checks resolved (after  tc  expansion)
+       tc length of a termcap translation is too  long.   The  -c
+       (check)  option  also checks resolved (after tc expansion)
        lengths.
 
 
 </PRE><H3><a name="h3-Binary-Compatibility">Binary Compatibility</a></H3><PRE>
-       It  is not wise to count on portability of binary terminfo
-       entries between commercial UNIX versions.  The problem  is
-       that  there  are  at least two versions of terminfo (under
+       It is not wise to count on portability of binary  terminfo
+       entries  between commercial UNIX versions.  The problem is
+       that there are at least two versions  of  terminfo  (under
        HP-UX and AIX) which diverged from System V terminfo after
-       SVr1,  and have added extension capabilities to the string
-       table that (in the binary format) collide  with  System  V
+       SVr1, and have added extension capabilities to the  string
+       table  that  (in  the binary format) collide with System V
        and XSI Curses extensions.
 
 
        Searching for terminal descriptions in <STRONG>$HOME/.terminfo</STRONG> and
        TERMINFO_DIRS is not supported by older implementations.
 
-       Some SVr4 <STRONG>curses</STRONG>  implementations,  and  all  previous  to
-       SVr4,  do not interpret the %A and %O operators in parame-
+       Some  SVr4  <STRONG>curses</STRONG>  implementations,  and  all previous to
+       SVr4, do not interpret the %A and %O operators in  parame-
        ter strings.
 
-       SVr4/XPG4 do not specify whether  <STRONG>msgr</STRONG>  licenses  movement
-       while  in an alternate-character-set mode (such modes may,
-       among other things, map CR and NL to  characters  that  do
-       not  trigger  local  motions).  The <STRONG>ncurses</STRONG> implementation
-       ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode.  This raises  the  possi-
-       bility  that  an  XPG4  implementation making the opposite
-       interpretation may need terminfo entries made for  <STRONG>ncurses</STRONG>
+       SVr4/XPG4  do  not  specify whether <STRONG>msgr</STRONG> licenses movement
+       while in an alternate-character-set mode (such modes  may,
+       among  other  things,  map CR and NL to characters that do
+       not trigger local motions).   The  <STRONG>ncurses</STRONG>  implementation
+       ignores  <STRONG>msgr</STRONG>  in <STRONG>ALTCHARSET</STRONG> mode.  This raises the possi-
+       bility that an XPG4  implementation  making  the  opposite
+       interpretation  may need terminfo entries made for <STRONG>ncurses</STRONG>
        to have <STRONG>msgr</STRONG> turned off.
 
-       The  <STRONG>ncurses</STRONG>  library handles insert-character and insert-
+       The <STRONG>ncurses</STRONG> library handles insert-character  and  insert-
        character modes in a slightly non-standard way to get bet-
-       ter  update  efficiency.   See the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG>
+       ter update efficiency.  See  the  <STRONG>Insert/Delete</STRONG>  <STRONG>Character</STRONG>
        subsection above.
 
-       The  parameter  substitutions  for  <STRONG>set_clock</STRONG>   and   <STRONG>dis-</STRONG>
-       <STRONG>play_clock</STRONG>  are  not  documented in SVr4 or the XSI Curses
+       The   parameter   substitutions  for  <STRONG>set_clock</STRONG>  and  <STRONG>dis-</STRONG>
+       <STRONG>play_clock</STRONG> are not documented in SVr4 or  the  XSI  Curses
        standard.  They are deduced from the documentation for the
        AT&amp;T 505 terminal.
 
-       Be  careful  assigning  the <STRONG>kmous</STRONG> capability.  The <STRONG>ncurses</STRONG>
-       wants to interpret it as <STRONG>KEY_MOUSE</STRONG>, for use  by  terminals
-       and  emulators  like  xterm that can return mouse-tracking
-       information in the keyboard-input stream.
+       Be careful assigning the <STRONG>kmous</STRONG>  capability.   The  <STRONG>ncurses</STRONG>
+       library  wants  to  interpret  it as <STRONG>KEY_MOUSE</STRONG>, for use by
+       terminals and emulators like xterm that can return  mouse-
+       tracking information in the keyboard-input stream.
 
        X/Open Curses does not mention italics.  Portable applica-
-       tions  must  assume  that  numeric capabilities are signed
-       16-bit values.  This  includes  the  <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM>  (ncv)
-       capability.   The  32768  mask value used for italics with
-       ncv can be confused with an absent or cancelled  ncv.   If
-       italics  should  work with colors, then the ncv value must
+       tions must assume that  numeric  capabilities  are  signed
+       16-bit  values.   This  includes  the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv)
+       capability.  The 32768 mask value used  for  italics  with
+       ncv  can  be confused with an absent or cancelled ncv.  If
+       italics should work with colors, then the ncv  value  must
        be specified, even if it is zero.
 
-       Different commercial ports of terminfo and curses  support
-       different  subsets of the XSI Curses standard and (in some
+       Different  commercial ports of terminfo and curses support
+       different subsets of the XSI Curses standard and (in  some
        cases) different extension sets.  Here is a summary, accu-
        rate as of October 1995:
 
-       <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capabili-
-       ties.
+       <STRONG>o</STRONG>   <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capa-
+           bilities.
 
-       <STRONG>SGI</STRONG> --  Supports  the  SVr4  set,  adds  one  undocumented
-       extended string capability (<STRONG>set_pglen</STRONG>).
+       <STRONG>o</STRONG>   <STRONG>SGI</STRONG>  --  Supports  the SVr4 set, adds one undocumented
+           extended string capability (<STRONG>set_pglen</STRONG>).
 
-       <STRONG>SVr1,</STRONG>  <STRONG>Ultrix</STRONG> -- These support a restricted subset of ter-
-       minfo capabilities.  The booleans end with  <STRONG>xon_xoff</STRONG>;  the
-       numerics  with  <STRONG>width_status_line</STRONG>;  and  the  strings with
-       <STRONG>prtr_non</STRONG>.
+       <STRONG>o</STRONG>   <STRONG>SVr1,</STRONG> <STRONG>Ultrix</STRONG> -- These support a restricted  subset  of
+           terminfo   capabilities.    The   booleans   end  with
+           <STRONG>xon_xoff</STRONG>; the numerics with <STRONG>width_status_line</STRONG>; and the
+           strings with <STRONG>prtr_non</STRONG>.
 
-       <STRONG>HP/UX</STRONG> -- Supports  the  SVr1  subset,  plus  the  SVr[234]
-       numerics <STRONG>num_labels</STRONG>, <STRONG>label_height</STRONG>, <STRONG>label_width</STRONG>, plus func-
-       tion keys 11 through 63,  plus  <STRONG>plab_norm</STRONG>,  <STRONG>label_on</STRONG>,  and
-       <STRONG>label_off</STRONG>, plus some incompatible extensions in the string
-       table.
+       <STRONG>o</STRONG>   <STRONG>HP/UX</STRONG>  --  Supports the SVr1 subset, plus the SVr[234]
+           numerics <STRONG>num_labels</STRONG>, <STRONG>label_height</STRONG>,  <STRONG>label_width</STRONG>,  plus
+           function keys 11 through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>,
+           and <STRONG>label_off</STRONG>, plus some  incompatible  extensions  in
+           the string table.
 
-       <STRONG>AIX</STRONG> -- Supports the SVr1 subset,  plus  function  keys  11
-       through  63,  plus  a  number of incompatible string table
-       extensions.
+       <STRONG>o</STRONG>   <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11
+           through 63, plus a number of incompatible string table
+           extensions.
 
-       <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions.
+       <STRONG>o</STRONG>   <STRONG>OSF</STRONG>  --  Supports both the SVr4 set and the AIX exten-
+           sions.
 
 
 </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
+<li><a href="#h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></li>
+<li><a href="#h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></li>
+<li><a href="#h3-Similar-Terminals">Similar Terminals</a></li>
 <li><a href="#h3-Predefined-Capabilities">Predefined Capabilities</a></li>
 <li><a href="#h3-User-Defined-Capabilities">User-Defined Capabilities</a></li>
 <li><a href="#h3-A-Sample-Entry">A Sample Entry</a></li>
 <li><a href="#h3-Color-Handling">Color Handling</a></li>
 <li><a href="#h3-Miscellaneous">Miscellaneous</a></li>
 <li><a href="#h3-Glitches-and-Braindamage">Glitches and Braindamage</a></li>
-<li><a href="#h3-Similar-Terminals">Similar Terminals</a></li>
 <li><a href="#h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></li>
 <li><a href="#h3-Binary-Compatibility">Binary Compatibility</a></li>
 </ul>