]> ncurses.scripts.mit.edu Git - ncurses.git/blob - doc/html/man/terminfo.5.html
f4739df9be6fb22e285fa8198de4c3d771ec07df
[ncurses.git] / doc / html / man / terminfo.5.html
1 <!-- 
2   * t
3   * DO NOT EDIT THIS FILE BY HAND!
4   * It is generated from terminfo.head,  ./../include/Caps ./../include/Caps-ncurses, and terminfo.tail.
5   * Note: this must be run through tbl before nroff.
6   * The magic cookie on the first line triggers this under some man programs.
7   ****************************************************************************
8   * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc.              *
9   *                                                                          *
10   * Permission is hereby granted, free of charge, to any person obtaining a  *
11   * copy of this software and associated documentation files (the            *
12   * "Software"), to deal in the Software without restriction, including      *
13   * without limitation the rights to use, copy, modify, merge, publish,      *
14   * distribute, distribute with modifications, sublicense, and/or sell       *
15   * copies of the Software, and to permit persons to whom the Software is    *
16   * furnished to do so, subject to the following conditions:                 *
17   *                                                                          *
18   * The above copyright notice and this permission notice shall be included  *
19   * in all copies or substantial portions of the Software.                   *
20   *                                                                          *
21   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
22   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
23   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
24   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
25   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
26   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
27   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
28   *                                                                          *
29   * Except as contained in this notice, the name(s) of the above copyright   *
30   * holders shall not be used in advertising or otherwise to promote the     *
31   * sale, use or other dealings in this Software without prior written       *
32   * authorization.                                                           *
33   ****************************************************************************
34   * @Id: terminfo.head,v 1.36 2019/07/13 23:17:33 tom Exp @
35   * Head of terminfo man page ends here
36   ****************************************************************************
37   * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc.              *
38   *                                                                          *
39   * Permission is hereby granted, free of charge, to any person obtaining a  *
40   * copy of this software and associated documentation files (the            *
41   * "Software"), to deal in the Software without restriction, including      *
42   * without limitation the rights to use, copy, modify, merge, publish,      *
43   * distribute, distribute with modifications, sublicense, and/or sell       *
44   * copies of the Software, and to permit persons to whom the Software is    *
45   * furnished to do so, subject to the following conditions:                 *
46   *                                                                          *
47   * The above copyright notice and this permission notice shall be included  *
48   * in all copies or substantial portions of the Software.                   *
49   *                                                                          *
50   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
51   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
52   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
53   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
54   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
55   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
56   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
57   *                                                                          *
58   * Except as contained in this notice, the name(s) of the above copyright   *
59   * holders shall not be used in advertising or otherwise to promote the     *
60   * sale, use or other dealings in this Software without prior written       *
61   * authorization.                                                           *
62   ****************************************************************************
63   * @Id: terminfo.tail,v 1.97 2019/07/20 10:20:57 tom Exp @
64   *.in -2
65   *.in +2
66   *.in -2
67   *.in +2
68   *.TH
69 -->
70 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
71 <HTML>
72 <HEAD>
73 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
74 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
75 <TITLE>terminfo 5   File Formats</TITLE>
76 <link rel="author" href="mailto:bug-ncurses@gnu.org">
77 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
78 </HEAD>
79 <BODY>
80 <H1 class="no-header">terminfo 5   File Formats</H1>
81 <PRE>
82 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>                      File Formats                      <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
83
84
85
86
87 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
88        terminfo - terminal capability data base
89
90
91 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
92        /usr/share/terminfo/*/*
93
94
95 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
96        <EM>Terminfo</EM>  is  a data base describing terminals, used by screen-oriented
97        programs such as <STRONG>nvi(1)</STRONG>, <STRONG>rogue(1)</STRONG> and  libraries  such  as  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
98        <EM>Terminfo</EM> describes terminals by giving a set of capabilities which they
99        have, by specifying how to perform screen operations, and by specifying
100        padding  requirements  and  initialization  sequences.   This describes
101        <STRONG>ncurses</STRONG> version 6.1 (patch 20190720).
102
103
104 </PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
105        Entries in <EM>terminfo</EM> consist of a sequence of fields:
106
107        <STRONG>o</STRONG>   Each field ends with a comma "," (embedded commas  may  be  escaped
108            with a backslash or written as "\054").
109
110        <STRONG>o</STRONG>   White space between fields is ignored.
111
112        <STRONG>o</STRONG>   The first field in a <EM>terminfo</EM> entry begins in the first column.
113
114        <STRONG>o</STRONG>   Newlines  and  leading  whitespace (spaces or tabs) may be used for
115            formatting entries for readability.  These are removed from  parsed
116            entries.
117
118            The  <STRONG>infocmp</STRONG>  <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options rely on this to format if-then-else
119            expressions, or to enforce maximum line-width.  The resulting  for-
120            matted terminal description can be read by <STRONG>tic</STRONG>.
121
122        <STRONG>o</STRONG>   The  first  field for each terminal gives the names which are known
123            for the terminal, separated by "|" characters.
124
125            The first name given is the most common abbreviation for the termi-
126            nal  (its  primary name), the last name given should be a long name
127            fully identifying the terminal (see <STRONG><A HREF="curs_termattrs.3x.html">longname(3x)</A></STRONG>), and  all  others
128            are treated as synonyms (aliases) for the primary terminal name.
129
130            X/Open  Curses  advises  that  all  names but the last should be in
131            lower case and contain no blanks; the last name  may  well  contain
132            upper case and blanks for readability.
133
134            This  implementation  is not so strict; it allows mixed case in the
135            primary name and aliases.  If the last name has no embedded blanks,
136            it  allows  that  to  be both an alias and a verbose name (but will
137            warn about this ambiguity).
138
139        <STRONG>o</STRONG>   Lines beginning with a "#" in the first column are treated as  com-
140            ments.
141
142            While comment lines are legal at any point, the output of <STRONG>captoinfo</STRONG>
143            and <STRONG>infotocap</STRONG> (aliases for <STRONG>tic</STRONG>) will move comments  so  they  occur
144            only between entries.
145
146        Terminal  names  (except  for the last, verbose entry) should be chosen
147        using the following conventions.  The particular piece of hardware mak-
148        ing  up the terminal should have a root name, thus "hp2621".  This name
149        should not contain hyphens.  Modes that the hardware can be in, or user
150        preferences,  should be indicated by appending a hyphen and a mode suf-
151        fix.  Thus, a vt100 in 132-column mode would be vt100-w.  The following
152        suffixes should be used where possible:
153
154             <STRONG>Suffix</STRONG>                  <STRONG>Meaning</STRONG>                   <STRONG>Example</STRONG>
155             -<EM>nn</EM>      Number of lines on the screen            aaa-60
156             -<EM>n</EM>p      Number of pages of memory                c100-4p
157             -am      With automargins (usually the default)   vt100-am
158             -m       Mono mode; suppress color                ansi-m
159             -mc      Magic cookie; spaces when highlighting   wy30-mc
160             -na      No arrow keys (leave them in local)      c100-na
161             -nam     Without automatic margins                vt100-nam
162             -nl      No status line                           att4415-nl
163             -ns      No status line                           hp2626-ns
164             -rv      Reverse video                            c100-rv
165             -s       Enable status line                       vt100-s
166             -vb      Use visible bell instead of beep         wy370-vb
167             -w       Wide mode (&gt; 80 columns, usually 132)    vt100-w
168
169        For more on terminal naming conventions, see the <STRONG><A HREF="term.7.html">term(7)</A></STRONG> manual page.
170
171
172 </PRE><H3><a name="h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></H3><PRE>
173        The  terminfo  entry  consists  of several <EM>capabilities</EM>, i.e., features
174        that the terminal has, or methods for exercising  the  terminal's  fea-
175        tures.
176
177        After the first field (giving the name(s) of the terminal entry), there
178        should be one or more <EM>capability</EM> fields.  These are boolean, numeric or
179        string names with corresponding values:
180
181        <STRONG>o</STRONG>   Boolean  capabilities  are  true  when  present, false when absent.
182            There is no explicit value for boolean capabilities.
183
184        <STRONG>o</STRONG>   Numeric capabilities  have  a  "#"  following  the  name,  then  an
185            unsigned decimal integer value.
186
187        <STRONG>o</STRONG>   String  capabilities  have a "=" following the name, then an string
188            of characters making up the capability value.
189
190            String capabilities can be split into multiple lines, just  as  the
191            fields  comprising  a  terminal  entry  can  be split into multiple
192            lines.  While blanks between fields are  ignored,  blanks  embedded
193            within  a string value are retained, except for leading blanks on a
194            line.
195
196        Any capability can be <EM>canceled</EM>,  i.e.,  suppressed  from  the  terminal
197        entry, by following its name with "@" rather than a capability value.
198
199
200 </PRE><H3><a name="h3-Similar-Terminals">Similar Terminals</a></H3><PRE>
201        If  there  are  two  very  similar  terminals, one (the variant) can be
202        defined as being just like the other (the  base)  with  certain  excep-
203        tions.  In the definition of the variant, the string capability <STRONG>use</STRONG> can
204        be given with the name of the base terminal:
205
206        <STRONG>o</STRONG>   The capabilities given before <STRONG>use</STRONG> override those in the  base  type
207            named by <STRONG>use</STRONG>.
208
209        <STRONG>o</STRONG>   If  there are multiple <STRONG>use</STRONG> capabilities, they are merged in reverse
210            order.  That is, the rightmost <STRONG>use</STRONG> reference  is  processed  first,
211            then the one to its left, and so forth.
212
213        <STRONG>o</STRONG>   Capabilities  given  explicitly in the entry override those brought
214            in by <STRONG>use</STRONG> references.
215
216        A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of the use ref-
217        erence  that  imports it, where <EM>xx</EM> is the capability.  For example, the
218        entry
219
220               2621-nl, smkx@, rmkx@, use=2621,
221
222        defines a 2621-nl that does not have the <STRONG>smkx</STRONG> or <STRONG>rmkx</STRONG> capabilities, and
223        hence  does  not  turn  on the function key labels when in visual mode.
224        This is useful for different modes for a  terminal,  or  for  different
225        user preferences.
226
227        An entry included via <STRONG>use</STRONG> can contain canceled capabilities, which have
228        the same effect as if those cancels were inline in the  using  terminal
229        entry.
230
231
232 </PRE><H3><a name="h3-Predefined-Capabilities">Predefined Capabilities</a></H3><PRE>
233        The  following  is  a  complete table of the capabilities included in a
234        terminfo description block and available to  terminfo-using  code.   In
235        each line of the table,
236
237        The  <STRONG>variable</STRONG>  is  the  name  by  which the programmer (at the terminfo
238        level) accesses the capability.
239
240        The <STRONG>capname</STRONG> is the short name used in the text of the database, and  is
241        used  by  a  person updating the database.  Whenever possible, capnames
242        are chosen to be the same as or similar to the ANSI X3.64-1979 standard
243        (now  superseded  by  ECMA-48,  which  uses  identical  or very similar
244        names).  Semantics are also intended to match those of  the  specifica-
245        tion.
246
247        The  termcap code is the old <STRONG>termcap</STRONG> capability name (some capabilities
248        are new, and have names which termcap did not originate).
249
250        Capability names have no hard length limit, but an informal limit of  5
251        characters has been adopted to keep them short and to allow the tabs in
252        the source file <STRONG>Caps</STRONG> to line up nicely.
253
254        Finally, the description field attempts to convey the semantics of  the
255        capability.  You may find some codes in the description field:
256
257        (P)    indicates that padding may be specified
258
259        #[1-9] in  the  description  field  indicates that the string is passed
260               through tparm with parms as given (#<EM>i</EM>).
261
262        (P*)   indicates that padding may vary in proportion to the  number  of
263               lines affected
264
265        (#<EM>i</EM>)   indicates the <EM>i</EM>th parameter.
266
267
268        These are the boolean capabilities:
269
270
271                   <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>      <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
272                   <STRONG>Booleans</STRONG>            <STRONG>name</STRONG>      <STRONG>Code</STRONG>
273           auto_left_margin            bw        bw     cub1 wraps from col-
274                                                        umn 0 to last column
275           auto_right_margin           am        am     terminal has auto-
276                                                        matic margins
277           back_color_erase            bce       ut     screen erased with
278                                                        background color
279           can_change                  ccc       cc     terminal can re-
280                                                        define existing col-
281                                                        ors
282           ceol_standout_glitch        xhp       xs     standout not erased
283                                                        by overwriting (hp)
284           col_addr_glitch             xhpa      YA     only positive motion
285                                                        for hpa/mhpa caps
286
287           cpi_changes_res             cpix      YF     changing character
288                                                        pitch changes reso-
289                                                        lution
290           cr_cancels_micro_mode       crxm      YB     using cr turns off
291                                                        micro mode
292           dest_tabs_magic_smso        xt        xt     tabs destructive,
293                                                        magic so char
294                                                        (t1061)
295           eat_newline_glitch          xenl      xn     newline ignored
296                                                        after 80 cols (con-
297                                                        cept)
298           erase_overstrike            eo        eo     can erase over-
299                                                        strikes with a blank
300           generic_type                gn        gn     generic line type
301           hard_copy                   hc        hc     hardcopy terminal
302           hard_cursor                 chts      HC     cursor is hard to
303                                                        see
304           has_meta_key                km        km     Has a meta key
305                                                        (i.e., sets 8th-bit)
306           has_print_wheel             daisy     YC     printer needs opera-
307                                                        tor to change char-
308                                                        acter set
309           has_status_line             hs        hs     has extra status
310                                                        line
311           hue_lightness_saturation    hls       hl     terminal uses only
312                                                        HLS color notation
313                                                        (Tektronix)
314           insert_null_glitch          in        in     insert mode distin-
315                                                        guishes nulls
316           lpi_changes_res             lpix      YG     changing line pitch
317                                                        changes resolution
318           memory_above                da        da     display may be
319                                                        retained above the
320                                                        screen
321           memory_below                db        db     display may be
322                                                        retained below the
323                                                        screen
324           move_insert_mode            mir       mi     safe to move while
325                                                        in insert mode
326           move_standout_mode          msgr      ms     safe to move while
327                                                        in standout mode
328           needs_xon_xoff              nxon      nx     padding will not
329                                                        work, xon/xoff
330                                                        required
331           no_esc_ctlc                 xsb       xb     beehive (f1=escape,
332                                                        f2=ctrl C)
333           no_pad_char                 npc       NP     pad character does
334                                                        not exist
335           non_dest_scroll_region      ndscr     ND     scrolling region is
336                                                        non-destructive
337           non_rev_rmcup               nrrmc     NR     smcup does not
338                                                        reverse rmcup
339           over_strike                 os        os     terminal can over-
340                                                        strike
341           prtr_silent                 mc5i      5i     printer will not
342                                                        echo on screen
343           row_addr_glitch             xvpa      YD     only positive motion
344                                                        for vpa/mvpa caps
345           semi_auto_right_margin      sam       YE     printing in last
346                                                        column causes cr
347           status_line_esc_ok          eslok     es     escape can be used
348                                                        on the status line
349           tilde_glitch                hz        hz     cannot print ~'s
350                                                        (Hazeltine)
351
352
353           transparent_underline       ul        ul     underline character
354                                                        overstrikes
355           xon_xoff                    xon       xo     terminal uses
356                                                        xon/xoff handshaking
357
358        These are the numeric capabilities:
359
360
361                   <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>      <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
362                    <STRONG>Numeric</STRONG>            <STRONG>name</STRONG>      <STRONG>Code</STRONG>
363           columns                     cols      co     number of columns in
364                                                        a line
365           init_tabs                   it        it     tabs initially every
366                                                        # spaces
367           label_height                lh        lh     rows in each label
368           label_width                 lw        lw     columns in each
369                                                        label
370           lines                       lines     li     number of lines on
371                                                        screen or page
372           lines_of_memory             lm        lm     lines of memory if &gt;
373                                                        line. 0 means varies
374           magic_cookie_glitch         xmc       sg     number of blank
375                                                        characters left by
376                                                        smso or rmso
377           max_attributes              ma        ma     maximum combined
378                                                        attributes terminal
379                                                        can handle
380           max_colors                  colors    Co     maximum number of
381                                                        colors on screen
382           max_pairs                   pairs     pa     maximum number of
383                                                        color-pairs on the
384                                                        screen
385           maximum_windows             wnum      MW     maximum number of
386                                                        definable windows
387           no_color_video              ncv       NC     video attributes
388                                                        that cannot be used
389                                                        with colors
390           num_labels                  nlab      Nl     number of labels on
391                                                        screen
392           padding_baud_rate           pb        pb     lowest baud rate
393                                                        where padding needed
394           virtual_terminal            vt        vt     virtual terminal
395                                                        number (CB/unix)
396           width_status_line           wsl       ws     number of columns in
397                                                        status line
398
399        The following numeric capabilities  are  present  in  the  SVr4.0  term
400        structure,  but  are  not yet documented in the man page.  They came in
401        with SVr4's printer support.
402
403
404                   <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>      <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
405                    <STRONG>Numeric</STRONG>            <STRONG>name</STRONG>      <STRONG>Code</STRONG>
406           bit_image_entwining         bitwin    Yo     number of passes for
407                                                        each bit-image row
408           bit_image_type              bitype    Yp     type of bit-image
409                                                        device
410           buffer_capacity             bufsz     Ya     numbers of bytes
411                                                        buffered before
412                                                        printing
413           buttons                     btns      BT     number of buttons on
414                                                        mouse
415           dot_horz_spacing            spinh     Yc     spacing of dots hor-
416                                                        izontally in dots
417                                                        per inch
418
419           dot_vert_spacing            spinv     Yb     spacing of pins ver-
420                                                        tically in pins per
421                                                        inch
422           max_micro_address           maddr     Yd     maximum value in
423                                                        micro_..._address
424           max_micro_jump              mjump     Ye     maximum value in
425                                                        parm_..._micro
426           micro_col_size              mcs       Yf     character step size
427                                                        when in micro mode
428           micro_line_size             mls       Yg     line step size when
429                                                        in micro mode
430           number_of_pins              npins     Yh     numbers of pins in
431                                                        print-head
432           output_res_char             orc       Yi     horizontal resolu-
433                                                        tion in units per
434                                                        line
435           output_res_horz_inch        orhi      Yk     horizontal resolu-
436                                                        tion in units per
437                                                        inch
438           output_res_line             orl       Yj     vertical resolution
439                                                        in units per line
440           output_res_vert_inch        orvi      Yl     vertical resolution
441                                                        in units per inch
442           print_rate                  cps       Ym     print rate in char-
443                                                        acters per second
444           wide_char_size              widcs     Yn     character step size
445                                                        when in double wide
446                                                        mode
447
448        These are the string capabilities:
449
450
451                   <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>      <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
452                    <STRONG>String</STRONG>             <STRONG>name</STRONG>      <STRONG>Code</STRONG>
453           acs_chars                   acsc      ac     graphics charset
454                                                        pairs, based on
455                                                        vt100
456           back_tab                    cbt       bt     back tab (P)
457           bell                        bel       bl     audible signal
458                                                        (bell) (P)
459           carriage_return             cr        cr     carriage return (P*)
460                                                        (P*)
461           change_char_pitch           cpi       ZA     Change number of
462                                                        characters per inch
463                                                        to #1
464           change_line_pitch           lpi       ZB     Change number of
465                                                        lines per inch to #1
466           change_res_horz             chr       ZC     Change horizontal
467                                                        resolution to #1
468           change_res_vert             cvr       ZD     Change vertical res-
469                                                        olution to #1
470           change_scroll_region        csr       cs     change region to
471                                                        line #1 to line #2
472                                                        (P)
473           char_padding                rmp       rP     like ip but when in
474                                                        insert mode
475           clear_all_tabs              tbc       ct     clear all tab stops
476                                                        (P)
477           clear_margins               mgc       MC     clear right and left
478                                                        soft margins
479           clear_screen                clear     cl     clear screen and
480                                                        home cursor (P*)
481           clr_bol                     el1       cb     Clear to beginning
482                                                        of line
483
484
485           clr_eol                     el        ce     clear to end of line
486                                                        (P)
487           clr_eos                     ed        cd     clear to end of
488                                                        screen (P*)
489           column_address              hpa       ch     horizontal position
490                                                        #1, absolute (P)
491           command_character           cmdch     CC     terminal settable
492                                                        cmd character in
493                                                        prototype !?
494           create_window               cwin      CW     define a window #1
495                                                        from #2,#3 to #4,#5
496           cursor_address              cup       cm     move to row #1 col-
497                                                        umns #2
498           cursor_down                 cud1      do     down one line
499           cursor_home                 home      ho     home cursor (if no
500                                                        cup)
501           cursor_invisible            civis     vi     make cursor invisi-
502                                                        ble
503           cursor_left                 cub1      le     move left one space
504           cursor_mem_address          mrcup     CM     memory relative cur-
505                                                        sor addressing, move
506                                                        to row #1 columns #2
507           cursor_normal               cnorm     ve     make cursor appear
508                                                        normal (undo
509                                                        civis/cvvis)
510           cursor_right                cuf1      nd     non-destructive
511                                                        space (move right
512                                                        one space)
513           cursor_to_ll                ll        ll     last line, first
514                                                        column (if no cup)
515           cursor_up                   cuu1      up     up one line
516           cursor_visible              cvvis     vs     make cursor very
517                                                        visible
518           define_char                 defc      ZE     Define a character
519                                                        #1, #2 dots wide,
520                                                        descender #3
521           delete_character            dch1      dc     delete character
522                                                        (P*)
523           delete_line                 dl1       dl     delete line (P*)
524           dial_phone                  dial      DI     dial number #1
525           dis_status_line             dsl       ds     disable status line
526           display_clock               dclk      DK     display clock
527           down_half_line              hd        hd     half a line down
528           ena_acs                     enacs     eA     enable alternate
529                                                        char set
530           enter_alt_charset_mode      smacs     as     start alternate
531                                                        character set (P)
532           enter_am_mode               smam      SA     turn on automatic
533                                                        margins
534           enter_blink_mode            blink     mb     turn on blinking
535           enter_bold_mode             bold      md     turn on bold (extra
536                                                        bright) mode
537           enter_ca_mode               smcup     ti     string to start pro-
538                                                        grams using cup
539           enter_delete_mode           smdc      dm     enter delete mode
540           enter_dim_mode              dim       mh     turn on half-bright
541                                                        mode
542           enter_doublewide_mode       swidm     ZF     Enter double-wide
543                                                        mode
544           enter_draft_quality         sdrfq     ZG     Enter draft-quality
545                                                        mode
546           enter_insert_mode           smir      im     enter insert mode
547           enter_italics_mode          sitm      ZH     Enter italic mode
548           enter_leftward_mode         slm       ZI     Start leftward car-
549                                                        riage motion
550
551           enter_micro_mode            smicm     ZJ     Start micro-motion
552                                                        mode
553           enter_near_letter_quality   snlq      ZK     Enter NLQ mode
554           enter_normal_quality        snrmq     ZL     Enter normal-quality
555                                                        mode
556           enter_protected_mode        prot      mp     turn on protected
557                                                        mode
558           enter_reverse_mode          rev       mr     turn on reverse
559                                                        video mode
560           enter_secure_mode           invis     mk     turn on blank mode
561                                                        (characters invisi-
562                                                        ble)
563           enter_shadow_mode           sshm      ZM     Enter shadow-print
564                                                        mode
565           enter_standout_mode         smso      so     begin standout mode
566           enter_subscript_mode        ssubm     ZN     Enter subscript mode
567           enter_superscript_mode      ssupm     ZO     Enter superscript
568                                                        mode
569           enter_underline_mode        smul      us     begin underline mode
570           enter_upward_mode           sum       ZP     Start upward car-
571                                                        riage motion
572           enter_xon_mode              smxon     SX     turn on xon/xoff
573                                                        handshaking
574           erase_chars                 ech       ec     erase #1 characters
575                                                        (P)
576           exit_alt_charset_mode       rmacs     ae     end alternate char-
577                                                        acter set (P)
578           exit_am_mode                rmam      RA     turn off automatic
579                                                        margins
580           exit_attribute_mode         sgr0      me     turn off all
581                                                        attributes
582           exit_ca_mode                rmcup     te     strings to end pro-
583                                                        grams using cup
584           exit_delete_mode            rmdc      ed     end delete mode
585           exit_doublewide_mode        rwidm     ZQ     End double-wide mode
586           exit_insert_mode            rmir      ei     exit insert mode
587           exit_italics_mode           ritm      ZR     End italic mode
588           exit_leftward_mode          rlm       ZS     End left-motion mode
589           exit_micro_mode             rmicm     ZT     End micro-motion
590                                                        mode
591           exit_shadow_mode            rshm      ZU     End shadow-print
592                                                        mode
593           exit_standout_mode          rmso      se     exit standout mode
594           exit_subscript_mode         rsubm     ZV     End subscript mode
595           exit_superscript_mode       rsupm     ZW     End superscript mode
596           exit_underline_mode         rmul      ue     exit underline mode
597           exit_upward_mode            rum       ZX     End reverse charac-
598                                                        ter motion
599           exit_xon_mode               rmxon     RX     turn off xon/xoff
600                                                        handshaking
601           fixed_pause                 pause     PA     pause for 2-3 sec-
602                                                        onds
603           flash_hook                  hook      fh     flash switch hook
604           flash_screen                flash     vb     visible bell (may
605                                                        not move cursor)
606           form_feed                   ff        ff     hardcopy terminal
607                                                        page eject (P*)
608           from_status_line            fsl       fs     return from status
609                                                        line
610           goto_window                 wingo     WG     go to window #1
611           hangup                      hup       HU     hang-up phone
612           init_1string                is1       i1     initialization
613                                                        string
614           init_2string                is2       is     initialization
615                                                        string
616
617           init_3string                is3       i3     initialization
618                                                        string
619           init_file                   if        if     name of initializa-
620                                                        tion file
621           init_prog                   iprog     iP     path name of program
622                                                        for initialization
623           initialize_color            initc     Ic     initialize color #1
624                                                        to (#2,#3,#4)
625           initialize_pair             initp     Ip     Initialize color
626                                                        pair #1 to
627                                                        fg=(#2,#3,#4),
628                                                        bg=(#5,#6,#7)
629           insert_character            ich1      ic     insert character (P)
630           insert_line                 il1       al     insert line (P*)
631           insert_padding              ip        ip     insert padding after
632                                                        inserted character
633           key_a1                      ka1       K1     upper left of keypad
634           key_a3                      ka3       K3     upper right of key-
635                                                        pad
636           key_b2                      kb2       K2     center of keypad
637           key_backspace               kbs       kb     backspace key
638           key_beg                     kbeg      @1     begin key
639           key_btab                    kcbt      kB     back-tab key
640           key_c1                      kc1       K4     lower left of keypad
641           key_c3                      kc3       K5     lower right of key-
642                                                        pad
643           key_cancel                  kcan      @2     cancel key
644           key_catab                   ktbc      ka     clear-all-tabs key
645           key_clear                   kclr      kC     clear-screen or
646                                                        erase key
647           key_close                   kclo      @3     close key
648           key_command                 kcmd      @4     command key
649           key_copy                    kcpy      @5     copy key
650           key_create                  kcrt      @6     create key
651           key_ctab                    kctab     kt     clear-tab key
652           key_dc                      kdch1     kD     delete-character key
653           key_dl                      kdl1      kL     delete-line key
654           key_down                    kcud1     kd     down-arrow key
655           key_eic                     krmir     kM     sent by rmir or smir
656                                                        in insert mode
657           key_end                     kend      @7     end key
658           key_enter                   kent      @8     enter/send key
659           key_eol                     kel       kE     clear-to-end-of-line
660                                                        key
661           key_eos                     ked       kS     clear-to-end-of-
662                                                        screen key
663           key_exit                    kext      @9     exit key
664           key_f0                      kf0       k0     F0 function key
665           key_f1                      kf1       k1     F1 function key
666           key_f10                     kf10      k;     F10 function key
667           key_f11                     kf11      F1     F11 function key
668           key_f12                     kf12      F2     F12 function key
669           key_f13                     kf13      F3     F13 function key
670           key_f14                     kf14      F4     F14 function key
671           key_f15                     kf15      F5     F15 function key
672           key_f16                     kf16      F6     F16 function key
673           key_f17                     kf17      F7     F17 function key
674           key_f18                     kf18      F8     F18 function key
675           key_f19                     kf19      F9     F19 function key
676           key_f2                      kf2       k2     F2 function key
677           key_f20                     kf20      FA     F20 function key
678           key_f21                     kf21      FB     F21 function key
679           key_f22                     kf22      FC     F22 function key
680           key_f23                     kf23      FD     F23 function key
681           key_f24                     kf24      FE     F24 function key
682
683           key_f25                     kf25      FF     F25 function key
684           key_f26                     kf26      FG     F26 function key
685           key_f27                     kf27      FH     F27 function key
686           key_f28                     kf28      FI     F28 function key
687           key_f29                     kf29      FJ     F29 function key
688           key_f3                      kf3       k3     F3 function key
689           key_f30                     kf30      FK     F30 function key
690           key_f31                     kf31      FL     F31 function key
691           key_f32                     kf32      FM     F32 function key
692           key_f33                     kf33      FN     F33 function key
693           key_f34                     kf34      FO     F34 function key
694           key_f35                     kf35      FP     F35 function key
695           key_f36                     kf36      FQ     F36 function key
696           key_f37                     kf37      FR     F37 function key
697           key_f38                     kf38      FS     F38 function key
698           key_f39                     kf39      FT     F39 function key
699           key_f4                      kf4       k4     F4 function key
700           key_f40                     kf40      FU     F40 function key
701           key_f41                     kf41      FV     F41 function key
702           key_f42                     kf42      FW     F42 function key
703           key_f43                     kf43      FX     F43 function key
704           key_f44                     kf44      FY     F44 function key
705           key_f45                     kf45      FZ     F45 function key
706           key_f46                     kf46      Fa     F46 function key
707           key_f47                     kf47      Fb     F47 function key
708           key_f48                     kf48      Fc     F48 function key
709           key_f49                     kf49      Fd     F49 function key
710           key_f5                      kf5       k5     F5 function key
711           key_f50                     kf50      Fe     F50 function key
712           key_f51                     kf51      Ff     F51 function key
713           key_f52                     kf52      Fg     F52 function key
714           key_f53                     kf53      Fh     F53 function key
715           key_f54                     kf54      Fi     F54 function key
716           key_f55                     kf55      Fj     F55 function key
717           key_f56                     kf56      Fk     F56 function key
718           key_f57                     kf57      Fl     F57 function key
719           key_f58                     kf58      Fm     F58 function key
720           key_f59                     kf59      Fn     F59 function key
721           key_f6                      kf6       k6     F6 function key
722           key_f60                     kf60      Fo     F60 function key
723           key_f61                     kf61      Fp     F61 function key
724           key_f62                     kf62      Fq     F62 function key
725           key_f63                     kf63      Fr     F63 function key
726           key_f7                      kf7       k7     F7 function key
727           key_f8                      kf8       k8     F8 function key
728           key_f9                      kf9       k9     F9 function key
729           key_find                    kfnd      @0     find key
730           key_help                    khlp      %1     help key
731           key_home                    khome     kh     home key
732           key_ic                      kich1     kI     insert-character key
733           key_il                      kil1      kA     insert-line key
734           key_left                    kcub1     kl     left-arrow key
735           key_ll                      kll       kH     lower-left key (home
736                                                        down)
737           key_mark                    kmrk      %2     mark key
738           key_message                 kmsg      %3     message key
739           key_move                    kmov      %4     move key
740           key_next                    knxt      %5     next key
741           key_npage                   knp       kN     next-page key
742           key_open                    kopn      %6     open key
743           key_options                 kopt      %7     options key
744           key_ppage                   kpp       kP     previous-page key
745           key_previous                kprv      %8     previous key
746           key_print                   kprt      %9     print key
747           key_redo                    krdo      %0     redo key
748
749           key_reference               kref      &amp;1     reference key
750           key_refresh                 krfr      &amp;2     refresh key
751           key_replace                 krpl      &amp;3     replace key
752           key_restart                 krst      &amp;4     restart key
753           key_resume                  kres      &amp;5     resume key
754           key_right                   kcuf1     kr     right-arrow key
755           key_save                    ksav      &amp;6     save key
756           key_sbeg                    kBEG      &amp;9     shifted begin key
757           key_scancel                 kCAN      &amp;0     shifted cancel key
758           key_scommand                kCMD      *1     shifted command key
759           key_scopy                   kCPY      *2     shifted copy key
760           key_screate                 kCRT      *3     shifted create key
761           key_sdc                     kDC       *4     shifted delete-char-
762                                                        acter key
763           key_sdl                     kDL       *5     shifted delete-line
764                                                        key
765           key_select                  kslt      *6     select key
766           key_send                    kEND      *7     shifted end key
767           key_seol                    kEOL      *8     shifted clear-to-
768                                                        end-of-line key
769           key_sexit                   kEXT      *9     shifted exit key
770           key_sf                      kind      kF     scroll-forward key
771           key_sfind                   kFND      *0     shifted find key
772           key_shelp                   kHLP      #1     shifted help key
773           key_shome                   kHOM      #2     shifted home key
774           key_sic                     kIC       #3     shifted insert-char-
775                                                        acter key
776           key_sleft                   kLFT      #4     shifted left-arrow
777                                                        key
778           key_smessage                kMSG      %a     shifted message key
779           key_smove                   kMOV      %b     shifted move key
780           key_snext                   kNXT      %c     shifted next key
781           key_soptions                kOPT      %d     shifted options key
782           key_sprevious               kPRV      %e     shifted previous key
783           key_sprint                  kPRT      %f     shifted print key
784           key_sr                      kri       kR     scroll-backward key
785           key_sredo                   kRDO      %g     shifted redo key
786           key_sreplace                kRPL      %h     shifted replace key
787           key_sright                  kRIT      %i     shifted right-arrow
788                                                        key
789           key_srsume                  kRES      %j     shifted resume key
790           key_ssave                   kSAV      !1     shifted save key
791           key_ssuspend                kSPD      !2     shifted suspend key
792           key_stab                    khts      kT     set-tab key
793           key_sundo                   kUND      !3     shifted undo key
794           key_suspend                 kspd      &amp;7     suspend key
795           key_undo                    kund      &amp;8     undo key
796           key_up                      kcuu1     ku     up-arrow key
797           keypad_local                rmkx      ke     leave 'key-
798                                                        board_transmit' mode
799           keypad_xmit                 smkx      ks     enter 'key-
800                                                        board_transmit' mode
801           lab_f0                      lf0       l0     label on function
802                                                        key f0 if not f0
803           lab_f1                      lf1       l1     label on function
804                                                        key f1 if not f1
805           lab_f10                     lf10      la     label on function
806                                                        key f10 if not f10
807           lab_f2                      lf2       l2     label on function
808                                                        key f2 if not f2
809           lab_f3                      lf3       l3     label on function
810                                                        key f3 if not f3
811           lab_f4                      lf4       l4     label on function
812                                                        key f4 if not f4
813
814
815           lab_f5                      lf5       l5     label on function
816                                                        key f5 if not f5
817           lab_f6                      lf6       l6     label on function
818                                                        key f6 if not f6
819           lab_f7                      lf7       l7     label on function
820                                                        key f7 if not f7
821           lab_f8                      lf8       l8     label on function
822                                                        key f8 if not f8
823           lab_f9                      lf9       l9     label on function
824                                                        key f9 if not f9
825           label_format                fln       Lf     label format
826           label_off                   rmln      LF     turn off soft labels
827           label_on                    smln      LO     turn on soft labels
828           meta_off                    rmm       mo     turn off meta mode
829           meta_on                     smm       mm     turn on meta mode
830                                                        (8th-bit on)
831           micro_column_address        mhpa      ZY     Like column_address
832                                                        in micro mode
833           micro_down                  mcud1     ZZ     Like cursor_down in
834                                                        micro mode
835           micro_left                  mcub1     Za     Like cursor_left in
836                                                        micro mode
837           micro_right                 mcuf1     Zb     Like cursor_right in
838                                                        micro mode
839           micro_row_address           mvpa      Zc     Like row_address #1
840                                                        in micro mode
841           micro_up                    mcuu1     Zd     Like cursor_up in
842                                                        micro mode
843           newline                     nel       nw     newline (behave like
844                                                        cr followed by lf)
845           order_of_pins               porder    Ze     Match software bits
846                                                        to print-head pins
847           orig_colors                 oc        oc     Set all color pairs
848                                                        to the original ones
849           orig_pair                   op        op     Set default pair to
850                                                        its original value
851           pad_char                    pad       pc     padding char
852                                                        (instead of null)
853           parm_dch                    dch       DC     delete #1 characters
854                                                        (P*)
855           parm_delete_line            dl        DL     delete #1 lines (P*)
856           parm_down_cursor            cud       DO     down #1 lines (P*)
857           parm_down_micro             mcud      Zf     Like parm_down_cur-
858                                                        sor in micro mode
859           parm_ich                    ich       IC     insert #1 characters
860                                                        (P*)
861           parm_index                  indn      SF     scroll forward #1
862                                                        lines (P)
863           parm_insert_line            il        AL     insert #1 lines (P*)
864           parm_left_cursor            cub       LE     move #1 characters
865                                                        to the left (P)
866           parm_left_micro             mcub      Zg     Like parm_left_cur-
867                                                        sor in micro mode
868           parm_right_cursor           cuf       RI     move #1 characters
869                                                        to the right (P*)
870           parm_right_micro            mcuf      Zh     Like parm_right_cur-
871                                                        sor in micro mode
872           parm_rindex                 rin       SR     scroll back #1 lines
873                                                        (P)
874           parm_up_cursor              cuu       UP     up #1 lines (P*)
875           parm_up_micro               mcuu      Zi     Like parm_up_cursor
876                                                        in micro mode
877           pkey_key                    pfkey     pk     program function key
878                                                        #1 to type string #2
879
880
881           pkey_local                  pfloc     pl     program function key
882                                                        #1 to execute string
883                                                        #2
884           pkey_xmit                   pfx       px     program function key
885                                                        #1 to transmit
886                                                        string #2
887           plab_norm                   pln       pn     program label #1 to
888                                                        show string #2
889           print_screen                mc0       ps     print contents of
890                                                        screen
891           prtr_non                    mc5p      pO     turn on printer for
892                                                        #1 bytes
893           prtr_off                    mc4       pf     turn off printer
894           prtr_on                     mc5       po     turn on printer
895           pulse                       pulse     PU     select pulse dialing
896           quick_dial                  qdial     QD     dial number #1 with-
897                                                        out checking
898           remove_clock                rmclk     RC     remove clock
899           repeat_char                 rep       rp     repeat char #1 #2
900                                                        times (P*)
901           req_for_input               rfi       RF     send next input char
902                                                        (for ptys)
903           reset_1string               rs1       r1     reset string
904           reset_2string               rs2       r2     reset string
905           reset_3string               rs3       r3     reset string
906           reset_file                  rf        rf     name of reset file
907           restore_cursor              rc        rc     restore cursor to
908                                                        position of last
909                                                        save_cursor
910           row_address                 vpa       cv     vertical position #1
911                                                        absolute (P)
912           save_cursor                 sc        sc     save current cursor
913                                                        position (P)
914           scroll_forward              ind       sf     scroll text up (P)
915           scroll_reverse              ri        sr     scroll text down (P)
916           select_char_set             scs       Zj     Select character
917                                                        set, #1
918           set_attributes              sgr       sa     define video
919                                                        attributes #1-#9
920                                                        (PG9)
921           set_background              setb      Sb     Set background color
922                                                        #1
923           set_bottom_margin           smgb      Zk     Set bottom margin at
924                                                        current line
925           set_bottom_margin_parm      smgbp     Zl     Set bottom margin at
926                                                        line #1 or (if smgtp
927                                                        is not given) #2
928                                                        lines from bottom
929           set_clock                   sclk      SC     set clock, #1 hrs #2
930                                                        mins #3 secs
931           set_color_pair              scp       sp     Set current color
932                                                        pair to #1
933           set_foreground              setf      Sf     Set foreground color
934                                                        #1
935           set_left_margin             smgl      ML     set left soft margin
936                                                        at current col-
937                                                        umn.     See smgl.
938                                                        (ML is not in BSD
939                                                        termcap).
940           set_left_margin_parm        smglp     Zm     Set left (right)
941                                                        margin at column #1
942           set_right_margin            smgr      MR     set right soft mar-
943                                                        gin at current col-
944                                                        umn
945
946
947           set_right_margin_parm       smgrp     Zn     Set right margin at
948                                                        column #1
949           set_tab                     hts       st     set a tab in every
950                                                        row, current columns
951           set_top_margin              smgt      Zo     Set top margin at
952                                                        current line
953           set_top_margin_parm         smgtp     Zp     Set top (bottom)
954                                                        margin at row #1
955           set_window                  wind      wi     current window is
956                                                        lines #1-#2 cols
957                                                        #3-#4
958           start_bit_image             sbim      Zq     Start printing bit
959                                                        image graphics
960           start_char_set_def          scsd      Zr     Start character set
961                                                        definition #1, with
962                                                        #2 characters in the
963                                                        set
964           stop_bit_image              rbim      Zs     Stop printing bit
965                                                        image graphics
966           stop_char_set_def           rcsd      Zt     End definition of
967                                                        character set #1
968           subscript_characters        subcs     Zu     List of subscript-
969                                                        able characters
970           superscript_characters      supcs     Zv     List of superscript-
971                                                        able characters
972           tab                         ht        ta     tab to next 8-space
973                                                        hardware tab stop
974           these_cause_cr              docr      Zw     Printing any of
975                                                        these characters
976                                                        causes CR
977           to_status_line              tsl       ts     move to status line,
978                                                        column #1
979           tone                        tone      TO     select touch tone
980                                                        dialing
981           underline_char              uc        uc     underline char and
982                                                        move past it
983           up_half_line                hu        hu     half a line up
984           user0                       u0        u0     User string #0
985           user1                       u1        u1     User string #1
986           user2                       u2        u2     User string #2
987           user3                       u3        u3     User string #3
988           user4                       u4        u4     User string #4
989           user5                       u5        u5     User string #5
990           user6                       u6        u6     User string #6
991           user7                       u7        u7     User string #7
992           user8                       u8        u8     User string #8
993           user9                       u9        u9     User string #9
994           wait_tone                   wait      WA     wait for dial-tone
995           xoff_character              xoffc     XF     XOFF character
996           xon_character               xonc      XN     XON character
997           zero_motion                 zerom     Zx     No motion for subse-
998                                                        quent character
999
1000        The following string capabilities are present in the SVr4.0 term struc-
1001        ture, but were originally not documented in the man page.
1002
1003
1004                   <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>       <STRONG>TCap</STRONG>      <STRONG>Description</STRONG>
1005                    <STRONG>String</STRONG>             <STRONG>name</STRONG>       <STRONG>Code</STRONG>
1006           alt_scancode_esc            scesa      S8     Alternate escape
1007                                                         for scancode emu-
1008                                                         lation
1009           bit_image_carriage_return   bicr       Yv     Move to beginning
1010                                                         of same row
1011
1012
1013           bit_image_newline           binel      Zz     Move to next row
1014                                                         of the bit image
1015           bit_image_repeat            birep      Xy     Repeat bit image
1016                                                         cell #1 #2 times
1017           char_set_names              csnm       Zy     Produce #1'th item
1018                                                         from list of char-
1019                                                         acter set names
1020           code_set_init               csin       ci     Init sequence for
1021                                                         multiple codesets
1022           color_names                 colornm    Yw     Give name for
1023                                                         color #1
1024           define_bit_image_region     defbi      Yx     Define rectangular
1025                                                         bit image region
1026           device_type                 devt       dv     Indicate lan-
1027                                                         guage/codeset sup-
1028                                                         port
1029           display_pc_char             dispc      S1     Display PC charac-
1030                                                         ter #1
1031           end_bit_image_region        endbi      Yy     End a bit-image
1032                                                         region
1033           enter_pc_charset_mode       smpch      S2     Enter PC character
1034                                                         display mode
1035           enter_scancode_mode         smsc       S4     Enter PC scancode
1036                                                         mode
1037           exit_pc_charset_mode        rmpch      S3     Exit PC character
1038                                                         display mode
1039           exit_scancode_mode          rmsc       S5     Exit PC scancode
1040                                                         mode
1041           get_mouse                   getm       Gm     Curses should get
1042                                                         button events,
1043                                                         parameter #1 not
1044                                                         documented.
1045           key_mouse                   kmous      Km     Mouse event has
1046                                                         occurred
1047           mouse_info                  minfo      Mi     Mouse status
1048                                                         information
1049           pc_term_options             pctrm      S6     PC terminal
1050                                                         options
1051           pkey_plab                   pfxl       xl     Program function
1052                                                         key #1 to type
1053                                                         string #2 and show
1054                                                         string #3
1055           req_mouse_pos               reqmp      RQ     Request mouse
1056                                                         position
1057           scancode_escape             scesc      S7     Escape for scan-
1058                                                         code emulation
1059           set0_des_seq                s0ds       s0     Shift to codeset 0
1060                                                         (EUC set 0, ASCII)
1061           set1_des_seq                s1ds       s1     Shift to codeset 1
1062           set2_des_seq                s2ds       s2     Shift to codeset 2
1063           set3_des_seq                s3ds       s3     Shift to codeset 3
1064           set_a_background            setab      AB     Set background
1065                                                         color to #1, using
1066                                                         ANSI escape
1067           set_a_foreground            setaf      AF     Set foreground
1068                                                         color to #1, using
1069                                                         ANSI escape
1070           set_color_band              setcolor   Yz     Change to ribbon
1071                                                         color #1
1072           set_lr_margin               smglr      ML     Set both left and
1073                                                         right margins to
1074                                                         #1, #2.  (ML is
1075                                                         not in BSD term-
1076                                                         cap).
1077
1078
1079           set_page_length             slines     YZ     Set page length to
1080                                                         #1 lines
1081           set_tb_margin               smgtb      MT     Sets both top and
1082                                                         bottom margins to
1083                                                         #1, #2
1084
1085         The XSI Curses standard added these hardcopy capabilities.  They  were
1086         used  in  some post-4.1 versions of System V curses, e.g., Solaris 2.5
1087         and IRIX 6.x.  Except for <STRONG>YI</STRONG>, the <STRONG>ncurses</STRONG> termcap names for  them  are
1088         invented.   According to the XSI Curses standard, they have no termcap
1089         names.  If your compiled terminfo entries use these, they may  not  be
1090         binary-compatible with System V terminfo entries after SVr4.1; beware!
1091
1092
1093                   <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>      <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
1094                    <STRONG>String</STRONG>             <STRONG>name</STRONG>      <STRONG>Code</STRONG>
1095           enter_horizontal_hl_mode    ehhlm     Xh     Enter horizontal
1096                                                        highlight mode
1097           enter_left_hl_mode          elhlm     Xl     Enter left highlight
1098                                                        mode
1099           enter_low_hl_mode           elohlm    Xo     Enter low highlight
1100                                                        mode
1101           enter_right_hl_mode         erhlm     Xr     Enter right high-
1102                                                        light mode
1103           enter_top_hl_mode           ethlm     Xt     Enter top highlight
1104                                                        mode
1105           enter_vertical_hl_mode      evhlm     Xv     Enter vertical high-
1106                                                        light mode
1107           set_a_attributes            sgr1      sA     Define second set of
1108                                                        video attributes
1109                                                        #1-#6
1110           set_pglen_inch              slength   YI     Set page length to
1111                                                        #1 hundredth of an
1112                                                        inch (some implemen-
1113                                                        tations use sL for
1114                                                        termcap).
1115
1116
1117 </PRE><H3><a name="h3-User-Defined-Capabilities">User-Defined Capabilities</a></H3><PRE>
1118        The  preceding  section  listed the <EM>predefined</EM> capabilities.  They deal
1119        with some special features for terminals no longer (or possibly  never)
1120        produced.   Occasionally  there are special features of newer terminals
1121        which are awkward or impossible to represent by reusing the  predefined
1122        capabilities.
1123
1124        <STRONG>ncurses</STRONG>  addresses  this  limitation by allowing user-defined capabili-
1125        ties.  The <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> programs provide the <STRONG>-x</STRONG> option for this pur-
1126        pose.  When <STRONG>-x</STRONG> is set, <STRONG>tic</STRONG> treats unknown capabilities as user-defined.
1127        That is, if <STRONG>tic</STRONG> encounters a capability name which it does  not  recog-
1128        nize,  it  infers  its type (boolean, number or string) from the syntax
1129        and  makes  an  extended  table  entry  for   that   capability.    The
1130        <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG>  function  makes  this information conditionally
1131        available to applications.  The ncurses library provides the data leav-
1132        ing most of the behavior to applications:
1133
1134        <STRONG>o</STRONG>   User-defined  capability  strings  whose  name  begins with "k" are
1135            treated as function keys.
1136
1137        <STRONG>o</STRONG>   The types (boolean,  number,  string)  determined  by  <STRONG>tic</STRONG>  can  be
1138            inferred by successful calls on <STRONG>tigetflag</STRONG>, etc.
1139
1140        <STRONG>o</STRONG>   If the capability name happens to be two characters, the capability
1141            is also available through the termcap interface.
1142
1143        While termcap is said to be extensible because it does not use a prede-
1144        fined set of capabilities, in practice it has been limited to the capa-
1145        bilities defined by terminfo implementations.  As a rule,  user-defined
1146        capabilities intended for use by termcap applications should be limited
1147        to booleans and numbers to avoid  running  past  the  1023  byte  limit
1148        assumed by termcap implementations and their applications.  In particu-
1149        lar, providing extended sets of function keys  (past  the  60  numbered
1150        keys  and  the  handful  of  special named keys) is best done using the
1151        longer names available using terminfo.
1152
1153
1154 </PRE><H3><a name="h3-A-Sample-Entry">A Sample Entry</a></H3><PRE>
1155        The following entry, describing an ANSI-standard terminal, is represen-
1156        tative  of  what a <STRONG>terminfo</STRONG> entry for a modern terminal typically looks
1157        like.
1158
1159        ansi|ansi/pc-term compatible with color,
1160                am, mc5i, mir, msgr,
1161                colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
1162                acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260
1163                     j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303
1164                     u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
1165                bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
1166                cr=^M, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
1167                cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
1168                cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
1169                dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
1170                el1=\E[1K, home=\E[H, hpa=\E[%i%p1%dG, ht=\E[I, hts=\EH,
1171                ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
1172                indn=\E[%p1%dS, invis=\E[8m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
1173                kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L,
1174                mc4=\E[4i, mc5=\E[5i, nel=\r\E[S, op=\E[39;49m,
1175                rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, rin=\E[%p1%dT,
1176                rmacs=\E[10m, rmpch=\E[10m, rmso=\E[m, rmul=\E[m,
1177                s0ds=\E(B, s1ds=\E)B, s2ds=\E*B, s3ds=\E+B,
1178                setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
1179                sgr=\E[0;10%?%p1%t;7%;
1180                           %?%p2%t;4%;
1181                           %?%p3%t;7%;
1182                           %?%p4%t;5%;
1183                           %?%p6%t;1%;
1184                           %?%p7%t;8%;
1185                           %?%p9%t;11%;m,
1186                sgr0=\E[0;10m, smacs=\E[11m, smpch=\E[11m, smso=\E[7m,
1187                smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
1188                u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,
1189
1190        Entries may continue onto multiple lines by placing white space at  the
1191        beginning  of  each line except the first.  Comments may be included on
1192        lines beginning with "#".  Capabilities in <EM>terminfo</EM> are of three types:
1193
1194        <STRONG>o</STRONG>   Boolean capabilities which indicate that the terminal has some par-
1195            ticular feature,
1196
1197        <STRONG>o</STRONG>   numeric capabilities giving the size of the terminal or the size of
1198            particular delays, and
1199
1200        <STRONG>o</STRONG>   string capabilities, which give a sequence which  can  be  used  to
1201            perform particular terminal operations.
1202
1203
1204 </PRE><H3><a name="h3-Types-of-Capabilities">Types of Capabilities</a></H3><PRE>
1205        All capabilities have names.  For instance, the fact that ANSI-standard
1206        terminals have <EM>automatic</EM> <EM>margins</EM> (i.e., an automatic return  and  line-
1207        feed  when the end of a line is reached) is indicated by the capability
1208        <STRONG>am</STRONG>.  Hence the description of ansi includes <STRONG>am</STRONG>.   Numeric  capabilities
1209        are  followed  by  the  character  "#" and then a positive value.  Thus
1210        <STRONG>cols</STRONG>, which indicates the number of columns the terminal has, gives the
1211        value  "80" for ansi.  Values for numeric capabilities may be specified
1212        in decimal, octal or hexadecimal, using the C programming language con-
1213        ventions (e.g., 255, 0377 and 0xff or 0xFF).
1214
1215        Finally,  string  valued capabilities, such as <STRONG>el</STRONG> (clear to end of line
1216        sequence) are given by the two-character  code,  an  "=",  and  then  a
1217        string ending at the next following ",".
1218
1219        A number of escape sequences are provided in the string valued capabil-
1220        ities for easy encoding of characters there:
1221
1222        <STRONG>o</STRONG>   Both <STRONG>\E</STRONG> and <STRONG>\e</STRONG> map to an ESCAPE character,
1223
1224        <STRONG>o</STRONG>   <STRONG>^x</STRONG> maps to a control-x for any appropriate <EM>x</EM>, and
1225
1226        <STRONG>o</STRONG>   the sequences
1227
1228              <STRONG>\n</STRONG>, <STRONG>\l</STRONG>, <STRONG>\r</STRONG>, <STRONG>\t</STRONG>, <STRONG>\b</STRONG>, <STRONG>\f</STRONG>, and <STRONG>\s</STRONG>
1229
1230            produce
1231
1232              <EM>newline</EM>, <EM>line-feed</EM>, <EM>return</EM>, <EM>tab</EM>, <EM>backspace</EM>, <EM>form-feed</EM>, and <EM>space</EM>,
1233
1234            respectively.
1235
1236        X/Open Curses does not say what "appropriate <EM>x</EM>" might be.  In practice,
1237        that  is a printable ASCII graphic character.  The special case "^?" is
1238        interpreted as DEL (127).  In all other cases, the character  value  is
1239        AND'd  with 0x1f, mapping to ASCII control codes in the range 0 through
1240        31.
1241
1242        Other escapes include
1243
1244        <STRONG>o</STRONG>   <STRONG>\^</STRONG> for <STRONG>^</STRONG>,
1245
1246        <STRONG>o</STRONG>   <STRONG>\\</STRONG> for <STRONG>\</STRONG>,
1247
1248        <STRONG>o</STRONG>   <STRONG>\</STRONG>, for comma,
1249
1250        <STRONG>o</STRONG>   <STRONG>\:</STRONG> for <STRONG>:</STRONG>,
1251
1252        <STRONG>o</STRONG>   and <STRONG>\0</STRONG> for null.
1253
1254            <STRONG>\0</STRONG> will produce \200, which does not terminate a string but behaves
1255            as  a null character on most terminals, providing CS7 is specified.
1256            See <STRONG>stty(1)</STRONG>.
1257
1258            The reason for this quirk is to maintain  binary  compatibility  of
1259            the  compiled  terminfo files with other implementations, e.g., the
1260            SVr4 systems, which document this.   Compiled  terminfo  files  use
1261            null-terminated  strings,  with  no  lengths.  Modifying this would
1262            require a new binary format, which would not work with other imple-
1263            mentations.
1264
1265        Finally, characters may be given as three octal digits after a <STRONG>\</STRONG>.
1266
1267        A  delay  in  milliseconds  may appear anywhere in a string capability,
1268        enclosed in $&lt;..&gt; brackets, as in <STRONG>el</STRONG>=\EK$&lt;5&gt;,  and  padding  characters
1269        are supplied by <STRONG><A HREF="curs_terminfo.3x.html">tputs(3x)</A></STRONG> to provide this delay.
1270
1271        <STRONG>o</STRONG>   The delay must be a number with at most one decimal place of preci-
1272            sion; it may be followed by suffixes "*" or "/" or both.
1273
1274        <STRONG>o</STRONG>   A "*" indicates that the padding required is  proportional  to  the
1275            number  of lines affected by the operation, and the amount given is
1276            the per-affected-unit padding required.  (In  the  case  of  insert
1277            character, the factor is still the number of <EM>lines</EM> affected.)
1278
1279            Normally, padding is advisory if the device has the <STRONG>xon</STRONG> capability;
1280            it is used for cost computation but does not trigger delays.
1281
1282        <STRONG>o</STRONG>   A "/" suffix indicates that the padding is mandatory and  forces  a
1283            delay of the given number of milliseconds even on devices for which
1284            <STRONG>xon</STRONG> is present to indicate flow control.
1285
1286        Sometimes individual capabilities must be commented out.  To  do  this,
1287        put  a  period before the capability name.  For example, see the second
1288        <STRONG>ind</STRONG> in the example above.
1289
1290
1291 </PRE><H3><a name="h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></H3><PRE>
1292        The <STRONG>ncurses</STRONG> library  searches  for  terminal  descriptions  in  several
1293        places.   It  uses only the first description found.  The library has a
1294        compiled-in list of places to search which can be overridden  by  envi-
1295        ronment  variables.   Before  starting  to  search,  <STRONG>ncurses</STRONG> eliminates
1296        duplicates in its search list.
1297
1298        <STRONG>o</STRONG>   If the environment variable TERMINFO is set, it is  interpreted  as
1299            the pathname of a directory containing the compiled description you
1300            are working on.  Only that directory is searched.
1301
1302        <STRONG>o</STRONG>   If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead look in the  directory
1303            <STRONG>$HOME/.terminfo</STRONG> for a compiled description.
1304
1305        <STRONG>o</STRONG>   Next,  if  the  environment  variable TERMINFO_DIRS is set, <STRONG>ncurses</STRONG>
1306            will interpret the contents of that variable as a  list  of  colon-
1307            separated directories (or database files) to be searched.
1308
1309            An  empty directory name (i.e., if the variable begins or ends with
1310            a colon, or contains adjacent colons) is interpreted as the  system
1311            location <EM>/usr/share/terminfo</EM>.
1312
1313        <STRONG>o</STRONG>   Finally, <STRONG>ncurses</STRONG> searches these compiled-in locations:
1314
1315            <STRONG>o</STRONG>   a    list    of    directories   (/usr/local/ncurses/share/ter-
1316                minfo:/usr/share/terminfo), and
1317
1318            <STRONG>o</STRONG>   the system terminfo directory,  <EM>/usr/share/terminfo</EM>  (the  com-
1319                piled-in default).
1320
1321
1322 </PRE><H3><a name="h3-Preparing-Descriptions">Preparing Descriptions</a></H3><PRE>
1323        We  now  outline  how  to  prepare descriptions of terminals.  The most
1324        effective way to prepare a terminal description  is  by  imitating  the
1325        description  of  a  similar  terminal  in  <EM>terminfo</EM>  and  to build up a
1326        description gradually, using partial descriptions with <EM>vi</EM> or some other
1327        screen-oriented  program to check that they are correct.  Be aware that
1328        a very unusual terminal may expose deficiencies in the ability  of  the
1329        <EM>terminfo</EM> file to describe it or bugs in the screen-handling code of the
1330        test program.
1331
1332        To get the padding for insert line right (if the terminal  manufacturer
1333        did  not  document  it)  a  severe test is to edit a large file at 9600
1334        baud, delete 16 or so lines from the middle of the screen, then hit the
1335        "u" key several times quickly.  If the terminal messes up, more padding
1336        is usually needed.  A similar test can be used for insert character.
1337
1338
1339 </PRE><H3><a name="h3-Basic-Capabilities">Basic Capabilities</a></H3><PRE>
1340        The number of columns on each line for the terminal  is  given  by  the
1341        <STRONG>cols</STRONG>  numeric capability.  If the terminal is a CRT, then the number of
1342        lines on the screen is given by the <STRONG>lines</STRONG> capability.  If the  terminal
1343        wraps  around  to  the  beginning  of the next line when it reaches the
1344        right margin, then it should have the <STRONG>am</STRONG> capability.  If  the  terminal
1345        can  clear  its  screen,  leaving the cursor in the home position, then
1346        this is given by the <STRONG>clear</STRONG> string capability.  If  the  terminal  over-
1347        strikes  (rather  than  clearing  a position when a character is struck
1348        over) then it should have the <STRONG>os</STRONG> capability.   If  the  terminal  is  a
1349        printing terminal, with no soft copy unit, give it both <STRONG>hc</STRONG> and <STRONG>os</STRONG>.  (<STRONG>os</STRONG>
1350        applies to storage scope terminals, such as TEKTRONIX 4010  series,  as
1351        well  as  hard copy and APL terminals.)  If there is a code to move the
1352        cursor to the left edge of the current row, give this as <STRONG>cr</STRONG>.  (Normally
1353        this  will  be carriage return, control/M.)  If there is a code to pro-
1354        duce an audible signal (bell, beep, etc) give this as <STRONG>bel</STRONG>.
1355
1356        If there is a code to move the cursor one position to the left (such as
1357        backspace)  that  capability should be given as <STRONG>cub1</STRONG>.  Similarly, codes
1358        to move to the right, up, and down should be given as <STRONG>cuf1</STRONG>,  <STRONG>cuu1</STRONG>,  and
1359        <STRONG>cud1</STRONG>.   These  local cursor motions should not alter the text they pass
1360        over, for example, you would not  normally  use  "<STRONG>cuf1</STRONG>= "  because  the
1361        space would erase the character moved over.
1362
1363        A very important point here is that the local cursor motions encoded in
1364        <EM>terminfo</EM> are undefined at the left and top edges  of  a  CRT  terminal.
1365        Programs should never attempt to backspace around the left edge, unless
1366        <STRONG>bw</STRONG> is given, and never attempt to go up locally off the top.  In  order
1367        to  scroll  text up, a program will go to the bottom left corner of the
1368        screen and send the <STRONG>ind</STRONG> (index) string.
1369
1370        To scroll text down, a program goes to  the  top  left  corner  of  the
1371        screen and sends the <STRONG>ri</STRONG> (reverse index) string.  The strings <STRONG>ind</STRONG> and <STRONG>ri</STRONG>
1372        are undefined when not on their respective corners of the screen.
1373
1374        Parameterized versions of the scrolling  sequences  are  <STRONG>indn</STRONG>  and  <STRONG>rin</STRONG>
1375        which  have  the same semantics as <STRONG>ind</STRONG> and <STRONG>ri</STRONG> except that they take one
1376        parameter, and scroll that many lines.  They are also undefined  except
1377        at the appropriate edge of the screen.
1378
1379        The  <STRONG>am</STRONG> capability tells whether the cursor sticks at the right edge of
1380        the screen when text is output, but this does not necessarily apply  to
1381        a  <STRONG>cuf1</STRONG>  from  the last column.  The only local motion which is defined
1382        from the left edge is if <STRONG>bw</STRONG> is given, then a <STRONG>cub1</STRONG> from  the  left  edge
1383        will  move  to the right edge of the previous row.  If <STRONG>bw</STRONG> is not given,
1384        the effect is undefined.  This is useful for drawing a box  around  the
1385        edge of the screen, for example.  If the terminal has switch selectable
1386        automatic margins, the <EM>terminfo</EM> file usually assumes that this  is  on;
1387        i.e.,  <STRONG>am</STRONG>.  If the terminal has a command which moves to the first col-
1388        umn of the next line, that command can be given as <STRONG>nel</STRONG>  (newline).   It
1389        does  not  matter  if  the  command clears the remainder of the current
1390        line, so if the terminal has no <STRONG>cr</STRONG> and <STRONG>lf</STRONG> it may still be  possible  to
1391        craft a working <STRONG>nel</STRONG> out of one or both of them.
1392
1393        These capabilities suffice to describe hard-copy and "glass-tty" termi-
1394        nals.  Thus the model 33 teletype is described as
1395
1396        33|tty33|tty|model 33 teletype,
1397                bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,
1398
1399        while the Lear Siegler ADM-3 is described as
1400
1401        adm3|3|lsi adm3,
1402                am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
1403                ind=^J, lines#24,
1404
1405
1406 </PRE><H3><a name="h3-Parameterized-Strings">Parameterized Strings</a></H3><PRE>
1407        Cursor addressing and other strings requiring parameters in the  termi-
1408        nal  are  described  by a parameterized string capability, with <EM>printf</EM>-
1409        like escapes such as <EM>%x</EM> in it.  For example, to address the cursor, the
1410        <STRONG>cup</STRONG>  capability  is  given, using two parameters: the row and column to
1411        address to.  (Rows and columns are numbered from zero and refer to  the
1412        physical screen visible to the user, not to any unseen memory.)  If the
1413        terminal has memory relative cursor addressing, that can  be  indicated
1414        by <STRONG>mrcup</STRONG>.
1415
1416        The  parameter mechanism uses a stack and special <STRONG>%</STRONG> codes to manipulate
1417        it.  Typically a sequence will push one  of  the  parameters  onto  the
1418        stack  and  then print it in some format.  Print (e.g., "%d") is a spe-
1419        cial case.  Other operations, including "%t" pop their operand from the
1420        stack.   It  is noted that more complex operations are often necessary,
1421        e.g., in the <STRONG>sgr</STRONG> string.
1422
1423        The <STRONG>%</STRONG> encodings have the following meanings:
1424
1425        <STRONG>%%</STRONG>   outputs "%"
1426
1427        <STRONG>%</STRONG><EM>[[</EM>:<EM>]flags][width[.precision]][</EM><STRONG>doxXs</STRONG><EM>]</EM>
1428             as in <STRONG>printf(3)</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>.  Use a  ":"  to  allow
1429             the next character to be a "-" flag, avoiding interpreting "%-" as
1430             an operator.
1431
1432        %c   print <EM>pop()</EM> like %c in <STRONG>printf</STRONG>
1433
1434        <STRONG>%s</STRONG>   print <EM>pop()</EM> like %s in <STRONG>printf</STRONG>
1435
1436        <STRONG>%p</STRONG><EM>[1-9]</EM>
1437             push <EM>i</EM>'th parameter
1438
1439        <STRONG>%P</STRONG><EM>[a-z]</EM>
1440             set dynamic variable <EM>[a-z]</EM> to <EM>pop()</EM>
1441
1442        <STRONG>%g</STRONG><EM>[a-z]/</EM>
1443             get dynamic variable <EM>[a-z]</EM> and push it
1444
1445        <STRONG>%P</STRONG><EM>[A-Z]</EM>
1446             set static variable <EM>[a-z]</EM> to <EM>pop()</EM>
1447
1448        <STRONG>%g</STRONG><EM>[A-Z]</EM>
1449             get static variable <EM>[a-z]</EM> and push it
1450
1451             The terms "static" and "dynamic"  are  misleading.   Historically,
1452             these are simply two different sets of variables, whose values are
1453             not reset between calls to <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>.  However, that fact  is  not
1454             documented in other implementations.  Relying on it will adversely
1455             impact portability to other implementations.
1456
1457        <STRONG>%'</STRONG><EM>c</EM><STRONG>'</STRONG> char constant <EM>c</EM>
1458
1459        <STRONG>%{</STRONG><EM>nn</EM><STRONG>}</STRONG>
1460             integer constant <EM>nn</EM>
1461
1462        <STRONG>%l</STRONG>   push strlen(pop)
1463
1464        <STRONG>%+</STRONG>, <STRONG>%-</STRONG>, <STRONG>%*</STRONG>, <STRONG>%/</STRONG>, <STRONG>%m</STRONG>
1465             arithmetic (%m is <EM>mod</EM>): <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
1466
1467        <STRONG>%&amp;</STRONG>, <STRONG>%|</STRONG>, <STRONG>%^</STRONG>
1468             bit operations (AND, OR and exclusive-OR): <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
1469
1470        <STRONG>%=</STRONG>, <STRONG>%&gt;</STRONG>, <STRONG>%&lt;</STRONG>
1471             logical operations: <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
1472
1473        <STRONG>%A</STRONG>, <STRONG>%O</STRONG>
1474             logical AND and OR operations (for conditionals)
1475
1476        <STRONG>%!</STRONG>, <STRONG>%~</STRONG>
1477             unary operations (logical and bit complement): <EM>push(op</EM> <EM>pop())</EM>
1478
1479        <STRONG>%i</STRONG>   add 1 to first two parameters (for ANSI terminals)
1480
1481        <STRONG>%?</STRONG> <EM>expr</EM> <STRONG>%t</STRONG> <EM>thenpart</EM> <STRONG>%e</STRONG> <EM>elsepart</EM> <STRONG>%;</STRONG>
1482             This forms an if-then-else.  The <STRONG>%e</STRONG> <EM>elsepart</EM> is optional.  Usually
1483             the  <STRONG>%?</STRONG>  <EM>expr</EM>  part  pushes a value onto the stack, and <STRONG>%t</STRONG> pops it
1484             from the stack, testing if it is nonzero (true).  If  it  is  zero
1485             (false), control passes to the <STRONG>%e</STRONG> (else) part.
1486
1487             It is possible to form else-if's a la Algol 68:
1488             <STRONG>%?</STRONG> c1 <STRONG>%t</STRONG> b1 <STRONG>%e</STRONG> c2 <STRONG>%t</STRONG> b2 <STRONG>%e</STRONG> c3 <STRONG>%t</STRONG> b3 <STRONG>%e</STRONG> c4 <STRONG>%t</STRONG> b4 <STRONG>%e</STRONG> <STRONG>%;</STRONG>
1489
1490             where ci are conditions, bi are bodies.
1491
1492             Use  the  <STRONG>-f</STRONG>  option of <STRONG>tic</STRONG> or <STRONG>infocmp</STRONG> to see the structure of if-
1493             then-else's.  Some strings, e.g., <STRONG>sgr</STRONG> can be very complicated when
1494             written  on  one line.  The <STRONG>-f</STRONG> option splits the string into lines
1495             with the parts indented.
1496
1497        Binary operations are in postfix form with the operands  in  the  usual
1498        order.  That is, to get x-5 one would use "%gx%{5}%-".  <STRONG>%P</STRONG> and <STRONG>%g</STRONG> vari-
1499        ables are persistent across escape-string evaluations.
1500
1501        Consider the HP2645, which, to get to row 3 and column 12, needs to  be
1502        sent  \E&amp;a12c03Y padded for 6 milliseconds.  Note that the order of the
1503        rows and columns is inverted here, and that  the  row  and  column  are
1504        printed    as    two    digits.     Thus    its   <STRONG>cup</STRONG>   capability   is
1505        "cup=6\E&amp;%p2%2dc%p1%2dY".
1506
1507        The Microterm ACT-IV needs the current row and column sent preceded  by
1508        a   <STRONG>^T</STRONG>,   with   the   row   and   column  simply  encoded  in  binary,
1509        "cup=^T%p1%c%p2%c".  Terminals which  use  "%c"  need  to  be  able  to
1510        backspace  the cursor (<STRONG>cub1</STRONG>), and to move the cursor up one line on the
1511        screen (<STRONG>cuu1</STRONG>).  This is necessary because it  is  not  always  safe  to
1512        transmit  <STRONG>\n</STRONG> <STRONG>^D</STRONG> and <STRONG>\r</STRONG>, as the system may change or discard them.  (The
1513        library routines dealing with terminfo set tty modes so that  tabs  are
1514        never  expanded, so \t is safe to send.  This turns out to be essential
1515        for the Ann Arbor 4080.)
1516
1517        A final example is the LSI ADM-3a, which uses row and column offset  by
1518        a blank character, thus "cup=\E=%p1%' '%+%c%p2%' '%+%c".  After sending
1519        "\E=", this pushes the first parameter, pushes the ASCII  value  for  a
1520        space (32), adds them (pushing the sum on the stack in place of the two
1521        previous values) and outputs that value as a character.  Then the  same
1522        is  done for the second parameter.  More complex arithmetic is possible
1523        using the stack.
1524
1525
1526 </PRE><H3><a name="h3-Cursor-Motions">Cursor Motions</a></H3><PRE>
1527        If the terminal has a fast way to home the cursor (to very  upper  left
1528        corner  of screen) then this can be given as <STRONG>home</STRONG>; similarly a fast way
1529        of getting to the lower left-hand corner can be given as <STRONG>ll</STRONG>;  this  may
1530        involve going up with <STRONG>cuu1</STRONG> from the home position, but a program should
1531        never do this itself (unless <STRONG>ll</STRONG> does) because it can make no assumption
1532        about  the  effect  of moving up from the home position.  Note that the
1533        home position is the same as addressing to (0,0): to the top left  cor-
1534        ner of the screen, not of memory.  (Thus, the \EH sequence on HP termi-
1535        nals cannot be used for <STRONG>home</STRONG>.)
1536
1537        If the terminal has row or column absolute cursor addressing, these can
1538        be  given  as  single  parameter  capabilities <STRONG>hpa</STRONG> (horizontal position
1539        absolute) and <STRONG>vpa</STRONG> (vertical position absolute).   Sometimes  these  are
1540        shorter  than  the  more  general  two  parameter sequence (as with the
1541        hp2645) and can be used in preference to <STRONG>cup</STRONG>.  If there are  parameter-
1542        ized  local  motions  (e.g.,  move  <EM>n</EM> spaces to the right) these can be
1543        given as <STRONG>cud</STRONG>, <STRONG>cub</STRONG>, <STRONG>cuf</STRONG>, and <STRONG>cuu</STRONG> with a single parameter indicating  how
1544        many  spaces  to move.  These are primarily useful if the terminal does
1545        not have <STRONG>cup</STRONG>, such as the TEKTRONIX 4025.
1546
1547        If the terminal needs to be in a special mode when  running  a  program
1548        that uses these capabilities, the codes to enter and exit this mode can
1549        be given as <STRONG>smcup</STRONG> and <STRONG>rmcup</STRONG>.  This arises, for example, from  terminals
1550        like  the  Concept  with more than one page of memory.  If the terminal
1551        has only memory relative cursor addressing and not screen relative cur-
1552        sor addressing, a one screen-sized window must be fixed into the termi-
1553        nal for cursor addressing to work properly.  This is also used for  the
1554        TEKTRONIX  4025,  where  <STRONG>smcup</STRONG> sets the command character to be the one
1555        used by terminfo.  If the <STRONG>smcup</STRONG> sequence will not  restore  the  screen
1556        after  an  <STRONG>rmcup</STRONG>  sequence  is output (to the state prior to outputting
1557        <STRONG>rmcup</STRONG>), specify <STRONG>nrrmc</STRONG>.
1558
1559
1560 </PRE><H3><a name="h3-Area-Clears">Area Clears</a></H3><PRE>
1561        If the terminal can clear from the current position to the end  of  the
1562        line,  leaving  the cursor where it is, this should be given as <STRONG>el</STRONG>.  If
1563        the terminal can clear from the beginning of the line  to  the  current
1564        position  inclusive,  leaving  the  cursor  where it is, this should be
1565        given as <STRONG>el1</STRONG>.  If the terminal can clear from the current  position  to
1566        the  end  of  the display, then this should be given as <STRONG>ed</STRONG>.  <STRONG>Ed</STRONG> is only
1567        defined from the first column of a line.  (Thus, it can be simulated by
1568        a request to delete a large number of lines, if a true <STRONG>ed</STRONG> is not avail-
1569        able.)
1570
1571
1572 </PRE><H3><a name="h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></H3><PRE>
1573        If the terminal can open a new blank line before  the  line  where  the
1574        cursor  is,  this  should  be  given as <STRONG>il1</STRONG>; this is done only from the
1575        first position of a line.  The cursor must then  appear  on  the  newly
1576        blank  line.   If  the terminal can delete the line which the cursor is
1577        on, then this should be given as <STRONG>dl1</STRONG>; this is done only from the  first
1578        position on the line to be deleted.  Versions of <STRONG>il1</STRONG> and <STRONG>dl1</STRONG> which take
1579        a single parameter and insert or delete that many lines can be given as
1580        <STRONG>il</STRONG> and <STRONG>dl</STRONG>.
1581
1582        If  the  terminal  has a settable scrolling region (like the vt100) the
1583        command to set this can be described with  the  <STRONG>csr</STRONG>  capability,  which
1584        takes two parameters: the top and bottom lines of the scrolling region.
1585        The cursor position is, alas, undefined after using this command.
1586
1587        It is possible to get the effect of insert or delete line using <STRONG>csr</STRONG>  on
1588        a  properly chosen region; the <STRONG>sc</STRONG> and <STRONG>rc</STRONG> (save and restore cursor) com-
1589        mands may be useful for ensuring that  your  synthesized  insert/delete
1590        string  does  not  move the cursor.  (Note that the <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> library
1591        does  this  synthesis  automatically,   so   you   need   not   compose
1592        insert/delete strings for an entry with <STRONG>csr</STRONG>).
1593
1594        Yet another way to construct insert and delete might be to use a combi-
1595        nation of index with the memory-lock feature found  on  some  terminals
1596        (like the HP-700/90 series, which however also has insert/delete).
1597
1598        Inserting  lines  at  the  top or bottom of the screen can also be done
1599        using <STRONG>ri</STRONG> or <STRONG>ind</STRONG> on many terminals without a  true  insert/delete  line,
1600        and is often faster even on terminals with those features.
1601
1602        The boolean <STRONG>non_dest_scroll_region</STRONG> should be set if each scrolling win-
1603        dow is effectively a view port on a screen-sized canvas.  To  test  for
1604        this capability, create a scrolling region in the middle of the screen,
1605        write something to the bottom line, move the cursor to the top  of  the
1606        region, and do <STRONG>ri</STRONG> followed by <STRONG>dl1</STRONG> or <STRONG>ind</STRONG>.  If the data scrolled off the
1607        bottom of the region by the  <STRONG>ri</STRONG>  re-appears,  then  scrolling  is  non-
1608        destructive.   System  V  and XSI Curses expect that <STRONG>ind</STRONG>, <STRONG>ri</STRONG>, <STRONG>indn</STRONG>, and
1609        <STRONG>rin</STRONG> will simulate destructive scrolling; their  documentation  cautions
1610        you  not to define <STRONG>csr</STRONG> unless this is true.  This <STRONG>curses</STRONG> implementation
1611        is more liberal and will do explicit erases after scrolling if <STRONG>ndsrc</STRONG> is
1612        defined.
1613
1614        If  the  terminal has the ability to define a window as part of memory,
1615        which all commands affect, it should  be  given  as  the  parameterized
1616        string  <STRONG>wind</STRONG>.  The four parameters are the starting and ending lines in
1617        memory and the starting and ending columns in memory, in that order.
1618
1619        If the terminal can retain display memory above, then the <STRONG>da</STRONG> capability
1620        should  be  given;  if  display  memory  can be retained below, then <STRONG>db</STRONG>
1621        should be given.  These indicate that deleting a line or scrolling  may
1622        bring  non-blank lines up from below or that scrolling back with <STRONG>ri</STRONG> may
1623        bring down non-blank lines.
1624
1625
1626 </PRE><H3><a name="h3-Insert_Delete-Character">Insert/Delete Character</a></H3><PRE>
1627        There are two basic kinds of  intelligent  terminals  with  respect  to
1628        insert/delete  character  which  can  be described using <EM>terminfo.</EM>  The
1629        most common insert/delete character operations affect only the  charac-
1630        ters  on  the current line and shift characters off the end of the line
1631        rigidly.  Other terminals, such as the Concept 100 and the Perkin Elmer
1632        Owl, make a distinction between typed and untyped blanks on the screen,
1633        shifting upon an insert or delete only  to  an  untyped  blank  on  the
1634        screen which is either eliminated, or expanded to two untyped blanks.
1635
1636        You  can determine the kind of terminal you have by clearing the screen
1637        and then typing text separated by cursor  motions.   Type  "abc    def"
1638        using  local  cursor  motions  (not  spaces)  between the "abc" and the
1639        "def".  Then position the cursor before the "abc" and put the  terminal
1640        in  insert  mode.   If typing characters causes the rest of the line to
1641        shift rigidly and characters to fall off the end,  then  your  terminal
1642        does  not  distinguish  between  blanks  and untyped positions.  If the
1643        "abc" shifts over to the "def" which then move together around the  end
1644        of  the current line and onto the next as you insert, you have the sec-
1645        ond type of terminal, and should give the capability <STRONG>in</STRONG>,  which  stands
1646        for "insert null".
1647
1648        While  these  are  two  logically  separate attributes (one line versus
1649        multi-line insert mode, and special treatment  of  untyped  spaces)  we
1650        have  seen  no terminals whose insert mode cannot be described with the
1651        single attribute.
1652
1653        Terminfo can describe both terminals which have  an  insert  mode,  and
1654        terminals  which send a simple sequence to open a blank position on the
1655        current line.  Give as <STRONG>smir</STRONG> the sequence to get into insert mode.  Give
1656        as  <STRONG>rmir</STRONG>  the  sequence  to  leave  insert  mode.  Now give as <STRONG>ich1</STRONG> any
1657        sequence needed to be sent just before  sending  the  character  to  be
1658        inserted.   Most  terminals with a true insert mode will not give <STRONG>ich1</STRONG>;
1659        terminals which send a sequence to open a screen position  should  give
1660        it here.
1661
1662        If  your  terminal has both, insert mode is usually preferable to <STRONG>ich1</STRONG>.
1663        Technically, you should not give  both  unless  the  terminal  actually
1664        requires  both to be used in combination.  Accordingly, some non-curses
1665        applications get confused if both are present; the symptom  is  doubled
1666        characters  in  an  update using insert.  This requirement is now rare;
1667        most <STRONG>ich</STRONG> sequences do not require previous smir, and most  smir  insert
1668        modes  do  not  require <STRONG>ich1</STRONG> before each character.  Therefore, the new
1669        <STRONG>curses</STRONG> actually assumes this is the case and uses either  <STRONG>rmir</STRONG>/<STRONG>smir</STRONG>  or
1670        <STRONG>ich</STRONG>/<STRONG>ich1</STRONG>  as appropriate (but not both).  If you have to write an entry
1671        to be used under new curses for a terminal old  enough  to  need  both,
1672        include the <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> sequences in <STRONG>ich1</STRONG>.
1673
1674        If post insert padding is needed, give this as a number of milliseconds
1675        in <STRONG>ip</STRONG> (a string option).  Any other sequence which may need to be  sent
1676        after an insert of a single character may also be given in <STRONG>ip</STRONG>.  If your
1677        terminal needs both to be placed into an "insert mode"  and  a  special
1678        code  to  precede each inserted character, then both <STRONG>smir</STRONG>/<STRONG>rmir</STRONG> and <STRONG>ich1</STRONG>
1679        can be given, and both will be used.   The  <STRONG>ich</STRONG>  capability,  with  one
1680        parameter, <EM>n</EM>, will repeat the effects of <STRONG>ich1</STRONG> <EM>n</EM> times.
1681
1682        If  padding  is  necessary between characters typed while not in insert
1683        mode, give this as a number of milliseconds padding in <STRONG>rmp</STRONG>.
1684
1685        It is occasionally necessary to move around while  in  insert  mode  to
1686        delete  characters  on the same line (e.g., if there is a tab after the
1687        insertion position).  If your terminal allows motion  while  in  insert
1688        mode  you  can  give  the  capability <STRONG>mir</STRONG> to speed up inserting in this
1689        case.  Omitting <STRONG>mir</STRONG> will affect only speed.   Some  terminals  (notably
1690        Datamedia's)  must  not  have  <STRONG>mir</STRONG> because of the way their insert mode
1691        works.
1692
1693        Finally, you can specify <STRONG>dch1</STRONG> to delete a single  character,  <STRONG>dch</STRONG>  with
1694        one  parameter,  <EM>n</EM>,  to  delete <EM>n</EM> <EM>characters,</EM> and delete mode by giving
1695        <STRONG>smdc</STRONG> and <STRONG>rmdc</STRONG> to enter and exit delete  mode  (any  mode  the  terminal
1696        needs to be placed in for <STRONG>dch1</STRONG> to work).
1697
1698        A  command  to  erase  <EM>n</EM>  characters (equivalent to outputting <EM>n</EM> blanks
1699        without moving the cursor) can be given as <STRONG>ech</STRONG> with one parameter.
1700
1701
1702 </PRE><H3><a name="h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></H3><PRE>
1703        If your terminal has one or more kinds of display attributes, these can
1704        be  represented  in  a number of different ways.  You should choose one
1705        display form as <EM>standout</EM> <EM>mode</EM>,  representing  a  good,  high  contrast,
1706        easy-on-the-eyes,  format  for  highlighting  error  messages and other
1707        attention getters.  (If you have a choice,  reverse  video  plus  half-
1708        bright  is  good,  or reverse video alone.)  The sequences to enter and
1709        exit standout mode are given as <STRONG>smso</STRONG> and <STRONG>rmso</STRONG>,  respectively.   If  the
1710        code  to  change  into  or  out of standout mode leaves one or even two
1711        blank spaces on the screen, as the TVI 912 and Teleray  1061  do,  then
1712        <STRONG>xmc</STRONG> should be given to tell how many spaces are left.
1713
1714        Codes to begin underlining and end underlining can be given as <STRONG>smul</STRONG> and
1715        <STRONG>rmul</STRONG> respectively.  If the terminal has a code to underline the current
1716        character  and  move  the  cursor  one  space to the right, such as the
1717        Microterm Mime, this can be given as <STRONG>uc</STRONG>.
1718
1719        Other capabilities to enter various highlighting  modes  include  <STRONG>blink</STRONG>
1720        (blinking)  <STRONG>bold</STRONG>  (bold or extra bright) <STRONG>dim</STRONG> (dim or half-bright) <STRONG>invis</STRONG>
1721        (blanking or invisible text) <STRONG>prot</STRONG> (protected) <STRONG>rev</STRONG> (reverse video)  <STRONG>sgr0</STRONG>
1722        (turn  off  <EM>all</EM>  attribute  modes) <STRONG>smacs</STRONG> (enter alternate character set
1723        mode) and <STRONG>rmacs</STRONG> (exit alternate character set mode).  Turning on any of
1724        these modes singly may or may not turn off other modes.
1725
1726        If  there  is  a  sequence to set arbitrary combinations of modes, this
1727        should be given as <STRONG>sgr</STRONG> (set attributes),  taking  9  parameters.   Each
1728        parameter  is either 0 or nonzero, as the corresponding attribute is on
1729        or off.  The 9 parameters are, in order: standout, underline,  reverse,
1730        blink,  dim,  bold,  blank,  protect, alternate character set.  Not all
1731        modes need be supported by <STRONG>sgr</STRONG>, only those for which corresponding sep-
1732        arate attribute commands exist.
1733
1734        For example, the DEC vt220 supports most of the modes:
1735
1736                <STRONG>tparm</STRONG> <STRONG>parameter</STRONG>      <STRONG>attribute</STRONG>        <STRONG>escape</STRONG> <STRONG>sequence</STRONG>
1737
1738                none                 none             \E[0m
1739                p1                   standout         \E[0;1;7m
1740                p2                   underline        \E[0;4m
1741                p3                   reverse          \E[0;7m
1742                p4                   blink            \E[0;5m
1743                p5                   dim              not available
1744                p6                   bold             \E[0;1m
1745                p7                   invis            \E[0;8m
1746                p8                   protect          not used
1747                p9                   altcharset       ^O (off) ^N (on)
1748
1749        We  begin each escape sequence by turning off any existing modes, since
1750        there is no quick way to determine whether they are  active.   Standout
1751        is  set up to be the combination of reverse and bold.  The vt220 termi-
1752        nal has a protect mode, though it is not commonly used in  sgr  because
1753        it  protects  characters  on  the screen from the host's erasures.  The
1754        altcharset mode also is different in  that  it  is  either  ^O  or  ^N,
1755        depending  on whether it is off or on.  If all modes are turned on, the
1756        resulting sequence is \E[0;1;4;5;7;8m^N.
1757
1758        Some sequences are common to different modes.  For example, ;7 is  out-
1759        put  when  either  p1  or  p3  is  true, that is, if either standout or
1760        reverse modes are turned on.
1761
1762        Writing out the above sequences, along with their dependencies yields
1763
1764             <STRONG>sequence</STRONG>             <STRONG>when</STRONG> <STRONG>to</STRONG> <STRONG>output</STRONG>      <STRONG>terminfo</STRONG> <STRONG>translation</STRONG>
1765
1766             \E[0                 always              \E[0
1767             ;1                   if p1 or p6         %?%p1%p6%|%t;1%;
1768             ;4                   if p2               %?%p2%|%t;4%;
1769             ;5                   if p4               %?%p4%|%t;5%;
1770             ;7                   if p1 or p3         %?%p1%p3%|%t;7%;
1771             ;8                   if p7               %?%p7%|%t;8%;
1772             m                    always              m
1773             ^N or ^O             if p9 ^N, else ^O   %?%p9%t^N%e^O%;
1774
1775        Putting this all together into the sgr sequence gives:
1776
1777            sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%;
1778                %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
1779
1780        Remember that if you specify sgr, you must also  specify  sgr0.   Also,
1781        some  implementations  rely on sgr being given if sgr0 is, Not all ter-
1782        minfo entries necessarily have an sgr string, however.   Many  terminfo
1783        entries are derived from termcap entries which have no sgr string.  The
1784        only drawback to adding an sgr string is that termcap also assumes that
1785        sgr0 does not exit alternate character set mode.
1786
1787        Terminals  with  the "magic cookie" glitch (<STRONG>xmc</STRONG>) deposit special "cook-
1788        ies" when they receive mode-setting sequences, which affect the display
1789        algorithm  rather than having extra bits for each character.  Some ter-
1790        minals, such as the HP 2621, automatically  leave  standout  mode  when
1791        they  move  to  a  new line or the cursor is addressed.  Programs using
1792        standout mode should exit standout mode before  moving  the  cursor  or
1793        sending  a  newline,  unless  the <STRONG>msgr</STRONG> capability, asserting that it is
1794        safe to move in standout mode, is present.
1795
1796        If the terminal has a way of flashing the screen to indicate  an  error
1797        quietly  (a  bell replacement) then this can be given as <STRONG>flash</STRONG>; it must
1798        not move the cursor.
1799
1800        If the cursor needs to be made more visible than normal when it is  not
1801        on the bottom line (to make, for example, a non-blinking underline into
1802        an easier to find block or blinking underline) give  this  sequence  as
1803        <STRONG>cvvis</STRONG>.  If there is a way to make the cursor completely invisible, give
1804        that as <STRONG>civis</STRONG>.  The capability <STRONG>cnorm</STRONG> should be given which  undoes  the
1805        effects of both of these modes.
1806
1807        If  your  terminal  correctly  generates underlined characters (with no
1808        special codes needed) even though it  does  not  overstrike,  then  you
1809        should  give  the  capability  <STRONG>ul</STRONG>.  If a character overstriking another
1810        leaves both characters on the screen, specify the  capability  <STRONG>os</STRONG>.   If
1811        overstrikes are erasable with a blank, then this should be indicated by
1812        giving <STRONG>eo</STRONG>.
1813
1814
1815 </PRE><H3><a name="h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></H3><PRE>
1816        If the terminal has a keypad that transmits codes  when  the  keys  are
1817        pressed,  this  information can be given.  Note that it is not possible
1818        to handle terminals where the keypad only works in local (this applies,
1819        for  example, to the unshifted HP 2621 keys).  If the keypad can be set
1820        to transmit or not transmit, give these codes as <STRONG>smkx</STRONG> and <STRONG>rmkx</STRONG>.  Other-
1821        wise the keypad is assumed to always transmit.
1822
1823        The  codes  sent  by the left arrow, right arrow, up arrow, down arrow,
1824        and home keys can be given as <STRONG>kcub1,</STRONG> <STRONG>kcuf1,</STRONG>  <STRONG>kcuu1,</STRONG>  <STRONG>kcud1,</STRONG>  and  <STRONG>khome</STRONG>
1825        respectively.  If there are function keys such as f0, f1, ..., f10, the
1826        codes they send can be given as <STRONG>kf0,</STRONG> <STRONG>kf1,</STRONG> <STRONG>...,</STRONG>  <STRONG>kf10</STRONG>.   If  these  keys
1827        have  labels  other  than the default f0 through f10, the labels can be
1828        given as <STRONG>lf0,</STRONG> <STRONG>lf1,</STRONG> <STRONG>...,</STRONG> <STRONG>lf10</STRONG>.
1829
1830        The codes transmitted by certain other special keys can be given:
1831
1832        <STRONG>o</STRONG>   <STRONG>kll</STRONG> (home down),
1833
1834        <STRONG>o</STRONG>   <STRONG>kbs</STRONG> (backspace),
1835
1836        <STRONG>o</STRONG>   <STRONG>ktbc</STRONG> (clear all tabs),
1837
1838        <STRONG>o</STRONG>   <STRONG>kctab</STRONG> (clear the tab stop in this column),
1839
1840        <STRONG>o</STRONG>   <STRONG>kclr</STRONG> (clear screen or erase key),
1841
1842        <STRONG>o</STRONG>   <STRONG>kdch1</STRONG> (delete character),
1843
1844        <STRONG>o</STRONG>   <STRONG>kdl1</STRONG> (delete line),
1845
1846        <STRONG>o</STRONG>   <STRONG>krmir</STRONG> (exit insert mode),
1847
1848        <STRONG>o</STRONG>   <STRONG>kel</STRONG> (clear to end of line),
1849
1850        <STRONG>o</STRONG>   <STRONG>ked</STRONG> (clear to end of screen),
1851
1852        <STRONG>o</STRONG>   <STRONG>kich1</STRONG> (insert character or enter insert mode),
1853
1854        <STRONG>o</STRONG>   <STRONG>kil1</STRONG> (insert line),
1855
1856        <STRONG>o</STRONG>   <STRONG>knp</STRONG> (next page),
1857
1858        <STRONG>o</STRONG>   <STRONG>kpp</STRONG> (previous page),
1859
1860        <STRONG>o</STRONG>   <STRONG>kind</STRONG> (scroll forward/down),
1861
1862        <STRONG>o</STRONG>   <STRONG>kri</STRONG> (scroll backward/up),
1863
1864        <STRONG>o</STRONG>   <STRONG>khts</STRONG> (set a tab stop in this column).
1865
1866        In addition, if the keypad has a 3 by 3 array  of  keys  including  the
1867        four  arrow  keys,  the  other five keys can be given as <STRONG>ka1</STRONG>, <STRONG>ka3</STRONG>, <STRONG>kb2</STRONG>,
1868        <STRONG>kc1</STRONG>, and <STRONG>kc3</STRONG>.  These keys are useful when the  effects  of  a  3  by  3
1869        directional pad are needed.
1870
1871        Strings to program function keys can be given as <STRONG>pfkey</STRONG>, <STRONG>pfloc</STRONG>, and <STRONG>pfx</STRONG>.
1872        A string to program screen labels should be specified as <STRONG>pln</STRONG>.  Each  of
1873        these  strings takes two parameters: the function key number to program
1874        (from 0 to 10) and the string to program it with.  Function key numbers
1875        out  of  this  range may program undefined keys in a terminal dependent
1876        manner.  The difference between the capabilities is that  <STRONG>pfkey</STRONG>  causes
1877        pressing  the  given  key  to  be the same as the user typing the given
1878        string; <STRONG>pfloc</STRONG> causes the string to  be  executed  by  the  terminal  in
1879        local; and <STRONG>pfx</STRONG> causes the string to be transmitted to the computer.
1880
1881        The  capabilities  <STRONG>nlab</STRONG>,  <STRONG>lw</STRONG>  and  <STRONG>lh</STRONG> define the number of programmable
1882        screen labels and their width and height.  If  there  are  commands  to
1883        turn  the  labels on and off, give them in <STRONG>smln</STRONG> and <STRONG>rmln</STRONG>.  <STRONG>smln</STRONG> is nor-
1884        mally output after one or more pln sequences  to  make  sure  that  the
1885        change becomes visible.
1886
1887
1888 </PRE><H3><a name="h3-Tabs-and-Initialization">Tabs and Initialization</a></H3><PRE>
1889        A few capabilities are used only for tabs:
1890
1891        <STRONG>o</STRONG>   If  the  terminal  has hardware tabs, the command to advance to the
1892            next tab stop can be given as <STRONG>ht</STRONG> (usually control/I).
1893
1894        <STRONG>o</STRONG>   A "back-tab" command which moves leftward to the preceding tab stop
1895            can be given as <STRONG>cbt</STRONG>.
1896
1897            By  convention,  if the teletype modes indicate that tabs are being
1898            expanded by the computer rather than being sent  to  the  terminal,
1899            programs  should  not use <STRONG>ht</STRONG> or <STRONG>cbt</STRONG> even if they are present, since
1900            the user may not have the tab stops properly set.
1901
1902        <STRONG>o</STRONG>   If the terminal has hardware tabs which are initially set  every  <EM>n</EM>
1903            spaces when the terminal is powered up, the numeric parameter <STRONG>it</STRONG> is
1904            given, showing the number of spaces the tabs are set to.
1905
1906            The <STRONG>it</STRONG> capability is normally used by the <STRONG>tset</STRONG> command to determine
1907            whether  to set the mode for hardware tab expansion, and whether to
1908            set the tab stops.  If the terminal has tab stops that can be saved
1909            in  non-volatile  memory,  the terminfo description can assume that
1910            they are properly set.
1911
1912        Other capabilities include
1913
1914        <STRONG>o</STRONG>   <STRONG>is1</STRONG>, <STRONG>is2</STRONG>, and <STRONG>is3</STRONG>, initialization strings for the terminal,
1915
1916        <STRONG>o</STRONG>   <STRONG>iprog</STRONG>, the path name of a program to be run to initialize the  ter-
1917            minal,
1918
1919        <STRONG>o</STRONG>   and <STRONG>if</STRONG>, the name of a file containing long initialization strings.
1920
1921        These  strings  are  expected to set the terminal into modes consistent
1922        with the rest of the terminfo description.  They are normally  sent  to
1923        the  terminal,  by  the  <EM>init</EM> option of the <STRONG>tput</STRONG> program, each time the
1924        user logs in.  They will be printed in the following order:
1925
1926               run the program
1927                      <STRONG>iprog</STRONG>
1928
1929               output
1930                      <STRONG>is1</STRONG> and
1931                      <STRONG>is2</STRONG>
1932
1933               set the margins using
1934                      <STRONG>mgc</STRONG> or
1935                      <STRONG>smglp</STRONG> and <STRONG>smgrp</STRONG> or
1936                      <STRONG>smgl</STRONG> and <STRONG>smgr</STRONG>
1937
1938               set tabs using
1939                      <STRONG>tbc</STRONG> and <STRONG>hts</STRONG>
1940
1941               print the file
1942                      <STRONG>if</STRONG>
1943
1944               and finally output
1945                      <STRONG>is3</STRONG>.
1946
1947        Most initialization is done with <STRONG>is2</STRONG>.  Special terminal  modes  can  be
1948        set  up  without duplicating strings by putting the common sequences in
1949        <STRONG>is2</STRONG> and special cases in <STRONG>is1</STRONG> and <STRONG>is3</STRONG>.
1950
1951        A set of sequences that does a harder  reset  from  a  totally  unknown
1952        state can be given as <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rf</STRONG> and <STRONG>rs3</STRONG>, analogous to <STRONG>is1</STRONG> <STRONG>,</STRONG> <STRONG>is2</STRONG> <STRONG>,</STRONG> <STRONG>if</STRONG>
1953        and <STRONG>is3</STRONG> respectively.  These strings are  output  by  <EM>reset</EM>  option  of
1954        <STRONG>tput</STRONG>,  or  by  the <STRONG>reset</STRONG> program (an alias of <STRONG>tset</STRONG>), which is used when
1955        the terminal gets into a wedged state.  Commands are normally placed in
1956        <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG> <STRONG>rs3</STRONG> and <STRONG>rf</STRONG> only if they produce annoying effects on the screen
1957        and are not necessary when logging in.  For example, the command to set
1958        the  vt100  into  80-column  mode would normally be part of <STRONG>is2</STRONG>, but it
1959        causes an annoying glitch of the screen  and  is  not  normally  needed
1960        since the terminal is usually already in 80-column mode.
1961
1962        The  <STRONG>reset</STRONG>  program  writes  strings including <STRONG>iprog</STRONG>, etc., in the same
1963        order as the <EM>init</EM> program, using <STRONG>rs1</STRONG>, etc., instead of  <STRONG>is1</STRONG>,  etc.   If
1964        any  of  <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, or <STRONG>rf</STRONG> reset capability strings are missing, the
1965        <STRONG>reset</STRONG> program falls back upon the corresponding initialization capabil-
1966        ity string.
1967
1968        If  there are commands to set and clear tab stops, they can be given as
1969        <STRONG>tbc</STRONG> (clear all tab stops) and <STRONG>hts</STRONG> (set a tab stop in the current column
1970        of  every  row).   If a more complex sequence is needed to set the tabs
1971        than can be described by this, the sequence can be placed in <STRONG>is2</STRONG> or <STRONG>if</STRONG>.
1972
1973        The <STRONG>tput</STRONG> <STRONG>reset</STRONG> command uses the same capability strings  as  the  <STRONG>reset</STRONG>
1974        command,  although  the two programs (<STRONG>tput</STRONG> and <STRONG>reset</STRONG>) provide different
1975        command-line options.
1976
1977        In practice, these terminfo capabilities are not often used in initial-
1978        ization of tabs (though they are required for the <STRONG>tabs</STRONG> program):
1979
1980        <STRONG>o</STRONG>   Almost all hardware terminals (at least those which supported tabs)
1981            initialized those to every <EM>eight</EM> columns:
1982
1983            The only exception was the AT&amp;T 2300  series,  which  set  tabs  to
1984            every <EM>five</EM> columns.
1985
1986        <STRONG>o</STRONG>   In  particular, developers of the hardware terminals which are com-
1987            monly used as models for modern terminal emulators  provided  docu-
1988            mentation demonstrating that <EM>eight</EM> columns were the standard.
1989
1990        <STRONG>o</STRONG>   Because of this, the terminal initialization programs <STRONG>tput</STRONG> and <STRONG>tset</STRONG>
1991            use  the  <STRONG>tbc</STRONG>  (<STRONG>clear_all_tabs</STRONG>)  and  <STRONG>hts</STRONG>  (<STRONG>set_tab</STRONG>)   capabilities
1992            directly  only when the <STRONG>it</STRONG> (<STRONG>init_tabs</STRONG>) capability is set to a value
1993            other than <EM>eight</EM>.
1994
1995
1996 </PRE><H3><a name="h3-Delays-and-Padding">Delays and Padding</a></H3><PRE>
1997        Many older and slower terminals do not support either XON/XOFF  or  DTR
1998        handshaking,  including  hard copy terminals and some very archaic CRTs
1999        (including, for example, DEC VT100s).  These may require padding  char-
2000        acters after certain cursor motions and screen changes.
2001
2002        If the terminal uses xon/xoff handshaking for flow control (that is, it
2003        automatically emits ^S back to the host  when  its  input  buffers  are
2004        close  to  full),  set <STRONG>xon</STRONG>.  This capability suppresses the emission of
2005        padding.  You can also set it for memory-mapped console devices  effec-
2006        tively  that  do  not  have  a speed limit.  Padding information should
2007        still be included so that routines can make better decisions about rel-
2008        ative costs, but actual pad characters will not be transmitted.
2009
2010        If <STRONG>pb</STRONG> (padding baud rate) is given, padding is suppressed at baud rates
2011        below the value of <STRONG>pb</STRONG>.  If the entry has no  padding  baud  rate,  then
2012        whether padding is emitted or not is completely controlled by <STRONG>xon</STRONG>.
2013
2014        If  the  terminal requires other than a null (zero) character as a pad,
2015        then this can be given as <STRONG>pad</STRONG>.  Only the first  character  of  the  <STRONG>pad</STRONG>
2016        string is used.
2017
2018
2019 </PRE><H3><a name="h3-Status-Lines">Status Lines</a></H3><PRE>
2020        Some  terminals  have an extra "status line" which is not normally used
2021        by software (and thus not counted in the terminal's <STRONG>lines</STRONG> capability).
2022
2023        The simplest case is a status line which is cursor-addressable but  not
2024        part of the main scrolling region on the screen; the Heathkit H19 has a
2025        status line of this kind, as would  a  24-line  VT100  with  a  23-line
2026        scrolling region set up on initialization.  This situation is indicated
2027        by the <STRONG>hs</STRONG> capability.
2028
2029        Some terminals with status lines need special sequences to  access  the
2030        status  line.  These may be expressed as a string with single parameter
2031        <STRONG>tsl</STRONG> which takes the cursor to a given zero-origin column on the  status
2032        line.   The  capability <STRONG>fsl</STRONG> must return to the main-screen cursor posi-
2033        tions before the last <STRONG>tsl</STRONG>.  You may need to embed the string values  of
2034        <STRONG>sc</STRONG>  (save  cursor) and <STRONG>rc</STRONG> (restore cursor) in <STRONG>tsl</STRONG> and <STRONG>fsl</STRONG> to accomplish
2035        this.
2036
2037        The status line is normally assumed to be the same width as  the  width
2038        of  the  terminal.   If  this  is  untrue,  you can specify it with the
2039        numeric capability <STRONG>wsl</STRONG>.
2040
2041        A command to erase or blank the status line may be specified as <STRONG>dsl</STRONG>.
2042
2043        The boolean capability <STRONG>eslok</STRONG> specifies  that  escape  sequences,  tabs,
2044        etc., work ordinarily in the status line.
2045
2046        The  <STRONG>ncurses</STRONG> implementation does not yet use any of these capabilities.
2047        They are documented here in case they ever become important.
2048
2049
2050 </PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE>
2051        Many terminals have alternate character sets useful for  forms-drawing.
2052        Terminfo and <STRONG>curses</STRONG> have built-in support for most of the drawing char-
2053        acters supported by the VT100,  with  some  characters  from  the  AT&amp;T
2054        4410v1  added.   This  alternate  character set may be specified by the
2055        <STRONG>acsc</STRONG> capability.
2056
2057          <STRONG>Glyph</STRONG>                       <STRONG>ACS</STRONG>            <STRONG>Ascii</STRONG>     <STRONG>acsc</STRONG>     <STRONG>acsc</STRONG>
2058          <STRONG>Name</STRONG>                        <STRONG>Name</STRONG>           <STRONG>Default</STRONG>   <STRONG>Char</STRONG>     <STRONG>Value</STRONG>
2059          --------------------------------------------------------------------
2060          arrow pointing right        ACS_RARROW     &gt;         +        0x2b
2061          arrow pointing left         ACS_LARROW     &lt;         ,        0x2c
2062          arrow pointing up           ACS_UARROW     ^         -        0x2d
2063          arrow pointing down         ACS_DARROW     v         .        0x2e
2064          solid square block          ACS_BLOCK      #         0        0x30
2065          diamond                     ACS_DIAMOND    +         `        0x60
2066          checker board (stipple)     ACS_CKBOARD    :         a        0x61
2067          degree symbol               ACS_DEGREE     \         f        0x66
2068          plus/minus                  ACS_PLMINUS    #         g        0x67
2069          board of squares            ACS_BOARD      #         h        0x68
2070          lantern symbol              ACS_LANTERN    #         i        0x69
2071          lower right corner          ACS_LRCORNER   +         j        0x6a
2072          upper right corner          ACS_URCORNER   +         k        0x6b
2073          upper left corner           ACS_ULCORNER   +         l        0x6c
2074          lower left corner           ACS_LLCORNER   +         m        0x6d
2075          large plus or crossover     ACS_PLUS       +         n        0x6e
2076          scan line 1                 ACS_S1         ~         o        0x6f
2077          scan line 3                 ACS_S3         -         p        0x70
2078          horizontal line             ACS_HLINE      -         q        0x71
2079          scan line 7                 ACS_S7         -         r        0x72
2080          scan line 9                 ACS_S9         _         s        0x73
2081          tee pointing right          ACS_LTEE       +         t        0x74
2082          tee pointing left           ACS_RTEE       +         u        0x75
2083          tee pointing up             ACS_BTEE       +         v        0x76
2084          tee pointing down           ACS_TTEE       +         w        0x77
2085          vertical line               ACS_VLINE      |         x        0x78
2086          less-than-or-equal-to       ACS_LEQUAL     &lt;         y        0x79
2087          greater-than-or-equal-to    ACS_GEQUAL     &gt;         z        0x7a
2088          greek pi                    ACS_PI         *         {        0x7b
2089          not-equal                   ACS_NEQUAL     !         |        0x7c
2090          UK pound sign               ACS_STERLING   f         }        0x7d
2091          bullet                      ACS_BULLET     o         ~        0x7e
2092
2093        A few notes apply to the table itself:
2094
2095        <STRONG>o</STRONG>   X/Open Curses incorrectly states that the mapping  for  <EM>lantern</EM>  is
2096            uppercase  "I"  although Unix implementations use the lowercase "i"
2097            mapping.
2098
2099        <STRONG>o</STRONG>   The DEC VT100 implemented graphics using  the  alternate  character
2100            set  feature, temporarily switching <EM>modes</EM> and sending characters in
2101            the range 0x60 (96) to 0x7e (126) (the <STRONG>acsc</STRONG> <STRONG>Value</STRONG> column in the ta-
2102            ble).
2103
2104        <STRONG>o</STRONG>   The AT&amp;T terminal added graphics characters outside that range.
2105
2106            Some  of  the  characters  within the range do not match the VT100;
2107            presumably they were used in the AT&amp;T terminal:  <EM>board</EM>  <EM>of</EM>  <EM>squares</EM>
2108            replaces  the  VT100  <EM>newline</EM> symbol, while <EM>lantern</EM> <EM>symbol</EM> replaces
2109            the VT100 <EM>vertical</EM> <EM>tab</EM> symbol.  The other VT100 symbols for control
2110            characters  (<EM>horizontal</EM> <EM>tab</EM>, <EM>carriage</EM> <EM>return</EM> and <EM>line-feed</EM>) are not
2111            (re)used in curses.
2112
2113        The best way to define a new device's graphics set is to add  a  column
2114        to  a  copy of this table for your terminal, giving the character which
2115        (when emitted between <STRONG>smacs</STRONG>/<STRONG>rmacs</STRONG> switches) will  be  rendered  as  the
2116        corresponding graphic.  Then read off the VT100/your terminal character
2117        pairs right to left in sequence; these become the ACSC string.
2118
2119
2120 </PRE><H3><a name="h3-Color-Handling">Color Handling</a></H3><PRE>
2121        The curses library functions <STRONG>init_pair</STRONG> and  <STRONG>init_color</STRONG>  manipulate  the
2122        <EM>color</EM>   <EM>pairs</EM>   and   <EM>color</EM>  <EM>values</EM>  discussed  in  this  section  (see
2123        <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> for details on these and related functions).
2124
2125        Most color terminals are either "Tektronix-like" or "HP-like":
2126
2127        <STRONG>o</STRONG>   Tektronix-like terminals have a predefined set of <EM>N</EM> colors (where <EM>N</EM>
2128            is usually 8), and can set character-cell foreground and background
2129            characters independently, mixing them into <EM>N</EM> * <EM>N</EM> color-pairs.
2130
2131        <STRONG>o</STRONG>   On HP-like terminals, the user must set each color  pair  up  sepa-
2132            rately  (foreground and background are not independently settable).
2133            Up to <EM>M</EM> color-pairs may be set up from 2*<EM>M</EM> different colors.  ANSI-
2134            compatible terminals are Tektronix-like.
2135
2136        Some basic color capabilities are independent of the color method.  The
2137        numeric capabilities <STRONG>colors</STRONG> and <STRONG>pairs</STRONG> specify the  maximum  numbers  of
2138        colors  and  color-pairs  that can be displayed simultaneously.  The <STRONG>op</STRONG>
2139        (original pair) string resets foreground and background colors to their
2140        default  values  for  the terminal.  The <STRONG>oc</STRONG> string resets all colors or
2141        color-pairs to their default values for the terminal.   Some  terminals
2142        (including many PC terminal emulators) erase screen areas with the cur-
2143        rent background color rather  than  the  power-up  default  background;
2144        these should have the boolean capability <STRONG>bce</STRONG>.
2145
2146        While the curses library works with <EM>color</EM> <EM>pairs</EM> (reflecting the inabil-
2147        ity of some devices to set foreground and  background  colors  indepen-
2148        dently), there are separate capabilities for setting these features:
2149
2150        <STRONG>o</STRONG>   To  change  the  current  foreground  or background color on a Tek-
2151            tronix-type terminal, use <STRONG>setaf</STRONG> (set  ANSI  foreground)  and  <STRONG>setab</STRONG>
2152            (set  ANSI background) or <STRONG>setf</STRONG> (set foreground) and <STRONG>setb</STRONG> (set back-
2153            ground).  These take one parameter, the  color  number.   The  SVr4
2154            documentation  describes only <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>; the XPG4 draft says that
2155            "If the terminal supports ANSI escape sequences to  set  background
2156            and  foreground,  they  should be coded as <STRONG>setaf</STRONG> and <STRONG>setab</STRONG>, respec-
2157            tively.
2158
2159        <STRONG>o</STRONG>   If the terminal supports other escape sequences to  set  background
2160            and  foreground,  they  should  be  coded as <STRONG>setf</STRONG> and <STRONG>setb</STRONG>, respec-
2161            tively.  The <STRONG>vidputs</STRONG> and the <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> functions  use  the  <STRONG>setaf</STRONG>
2162            and <STRONG>setab</STRONG> capabilities if they are defined.
2163
2164        The  <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> and <STRONG>setf</STRONG>/<STRONG>setb</STRONG> capabilities take a single numeric argu-
2165        ment each.  Argument values 0-7 of <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> are portably defined  as
2166        follows  (the  middle  column  is the symbolic #define available in the
2167        header for the <STRONG>curses</STRONG> or <STRONG>ncurses</STRONG> libraries).  The terminal hardware  is
2168        free to map these as it likes, but the RGB values indicate normal loca-
2169        tions in color space.
2170
2171                     <STRONG>Color</STRONG>       <STRONG>#define</STRONG>       <STRONG>Value</STRONG>       <STRONG>RGB</STRONG>
2172                     black     <STRONG>COLOR_BLACK</STRONG>       0     0, 0, 0
2173                     red       <STRONG>COLOR_RED</STRONG>         1     max,0,0
2174                     green     <STRONG>COLOR_GREEN</STRONG>       2     0,max,0
2175                     yellow    <STRONG>COLOR_YELLOW</STRONG>      3     max,max,0
2176                     blue      <STRONG>COLOR_BLUE</STRONG>        4     0,0,max
2177                     magenta   <STRONG>COLOR_MAGENTA</STRONG>     5     max,0,max
2178                     cyan      <STRONG>COLOR_CYAN</STRONG>        6     0,max,max
2179                     white     <STRONG>COLOR_WHITE</STRONG>       7     max,max,max
2180
2181        The argument values of <STRONG>setf</STRONG>/<STRONG>setb</STRONG> historically correspond to a different
2182        mapping, i.e.,
2183
2184                     <STRONG>Color</STRONG>       <STRONG>#define</STRONG>       <STRONG>Value</STRONG>       <STRONG>RGB</STRONG>
2185                     black     <STRONG>COLOR_BLACK</STRONG>       0     0, 0, 0
2186                     blue      <STRONG>COLOR_BLUE</STRONG>        1     0,0,max
2187                     green     <STRONG>COLOR_GREEN</STRONG>       2     0,max,0
2188                     cyan      <STRONG>COLOR_CYAN</STRONG>        3     0,max,max
2189                     red       <STRONG>COLOR_RED</STRONG>         4     max,0,0
2190                     magenta   <STRONG>COLOR_MAGENTA</STRONG>     5     max,0,max
2191                     yellow    <STRONG>COLOR_YELLOW</STRONG>      6     max,max,0
2192                     white     <STRONG>COLOR_WHITE</STRONG>       7     max,max,max
2193
2194        It is important to not confuse the two sets of color capabilities; oth-
2195        erwise red/blue will be interchanged on the display.
2196
2197        On an HP-like terminal, use <STRONG>scp</STRONG> with a color-pair number  parameter  to
2198        set which color pair is current.
2199
2200        Some terminals allow the <EM>color</EM> <EM>values</EM> to be modified:
2201
2202        <STRONG>o</STRONG>   On  a Tektronix-like terminal, the capability <STRONG>ccc</STRONG> may be present to
2203            indicate that colors can be modified.  If so, the <STRONG>initc</STRONG>  capability
2204            will take a color number (0 to <STRONG>colors</STRONG> - 1)and three more parameters
2205            which describe the color.  These three parameters default to  being
2206            interpreted as RGB (Red, Green, Blue) values.  If the boolean capa-
2207            bility <STRONG>hls</STRONG> is present, they are instead  as  HLS  (Hue,  Lightness,
2208            Saturation) indices.  The ranges are terminal-dependent.
2209
2210        <STRONG>o</STRONG>   On  an HP-like terminal, <STRONG>initp</STRONG> may give a capability for changing a
2211            color-pair value.  It will take seven parameters; a color-pair num-
2212            ber  (0  to  <STRONG>max_pairs</STRONG> - 1), and two triples describing first back-
2213            ground and then foreground colors.  These parameters must be  (Red,
2214            Green, Blue) or (Hue, Lightness, Saturation) depending on <STRONG>hls</STRONG>.
2215
2216        On  some color terminals, colors collide with highlights.  You can reg-
2217        ister these collisions with the <STRONG>ncv</STRONG> capability.  This is a bit-mask  of
2218        attributes  not to be used when colors are enabled.  The correspondence
2219        with the attributes understood by <STRONG>curses</STRONG> is as follows:
2220
2221                   <STRONG>Attribute</STRONG>              <STRONG>Bit</STRONG>   <STRONG>Decimal</STRONG>      <STRONG>Set</STRONG> <STRONG>by</STRONG>
2222                   A_STANDOUT             0     1            sgr
2223                   A_UNDERLINE            1     2            sgr
2224                   A_REVERSE              2     4            sgr
2225                   A_BLINK                3     8            sgr
2226                   A_DIM                  4     16           sgr
2227                   A_BOLD                 5     32           sgr
2228                   A_INVIS                6     64           sgr
2229                   A_PROTECT              7     128          sgr
2230                   A_ALTCHARSET           8     256          sgr
2231                   A_HORIZONTAL           9     512          sgr1
2232                   A_LEFT                 10    1024         sgr1
2233                   A_LOW                  11    2048         sgr1
2234                   A_RIGHT                12    4096         sgr1
2235                   A_TOP                  13    8192         sgr1
2236                   A_VERTICAL             14    16384        sgr1
2237                   A_ITALIC               15    32768        sitm
2238
2239        For example, on many IBM PC consoles, the underline attribute  collides
2240        with  the  foreground  color  blue  and is not available in color mode.
2241        These should have an <STRONG>ncv</STRONG> capability of 2.
2242
2243        SVr4 curses does nothing with <STRONG>ncv</STRONG>, ncurses recognizes it and  optimizes
2244        the output in favor of colors.
2245
2246
2247 </PRE><H3><a name="h3-Miscellaneous">Miscellaneous</a></H3><PRE>
2248        If  the  terminal requires other than a null (zero) character as a pad,
2249        then this can be given as pad.  Only the first  character  of  the  pad
2250        string is used.  If the terminal does not have a pad character, specify
2251        npc.  Note that ncurses implements the termcap-compatible <STRONG>PC</STRONG>  variable;
2252        though  the  application  may  set this value to something other than a
2253        null, ncurses will test <STRONG>npc</STRONG> first and use napms if the terminal has  no
2254        pad character.
2255
2256        If  the terminal can move up or down half a line, this can be indicated
2257        with <STRONG>hu</STRONG> (half-line up) and <STRONG>hd</STRONG> (half-line down).  This is primarily use-
2258        ful for superscripts and subscripts on hard-copy terminals.  If a hard-
2259        copy terminal can eject to the next page (form feed), give this  as  <STRONG>ff</STRONG>
2260        (usually control/L).
2261
2262        If  there  is  a  command to repeat a given character a given number of
2263        times (to save time transmitting a large number  of  identical  charac-
2264        ters)  this  can  be  indicated with the parameterized string <STRONG>rep</STRONG>.  The
2265        first parameter is the character to be repeated and the second  is  the
2266        number of times to repeat it.  Thus, tparm(repeat_char, 'x', 10) is the
2267        same as "xxxxxxxxxx".
2268
2269        If the terminal has a settable command character, such as the TEKTRONIX
2270        4025,  this can be indicated with <STRONG>cmdch</STRONG>.  A prototype command character
2271        is chosen which is used in all capabilities.  This character  is  given
2272        in  the  <STRONG>cmdch</STRONG>  capability to identify it.  The following convention is
2273        supported on some UNIX systems: The environment is to be searched for a
2274        <STRONG>CC</STRONG>  variable,  and if found, all occurrences of the prototype character
2275        are replaced with the character in the environment variable.
2276
2277        Terminal descriptions that do not represent a specific  kind  of  known
2278        terminal,  such  as  <EM>switch</EM>, <EM>dialup</EM>, <EM>patch</EM>, and <EM>network</EM>, should include
2279        the <STRONG>gn</STRONG> (generic) capability so that programs can complain that they  do
2280        not  know how to talk to the terminal.  (This capability does not apply
2281        to <EM>virtual</EM> terminal descriptions for which  the  escape  sequences  are
2282        known.)
2283
2284        If the terminal has a "meta key" which acts as a shift key, setting the
2285        8th bit of any character transmitted, this fact can be  indicated  with
2286        <STRONG>km</STRONG>.   Otherwise, software will assume that the 8th bit is parity and it
2287        will usually be cleared.  If strings exist to turn this "meta mode"  on
2288        and off, they can be given as <STRONG>smm</STRONG> and <STRONG>rmm</STRONG>.
2289
2290        If the terminal has more lines of memory than will fit on the screen at
2291        once, the number of lines of memory can be indicated with <STRONG>lm</STRONG>.  A  value
2292        of <STRONG>lm</STRONG>#0 indicates that the number of lines is not fixed, but that there
2293        is still more memory than fits on the screen.
2294
2295        If the terminal is one of those supported by the UNIX virtual  terminal
2296        protocol, the terminal number can be given as <STRONG>vt</STRONG>.
2297
2298        Media  copy strings which control an auxiliary printer connected to the
2299        terminal can be given as <STRONG>mc0</STRONG>: print the contents of  the  screen,  <STRONG>mc4</STRONG>:
2300        turn  off  the printer, and <STRONG>mc5</STRONG>: turn on the printer.  When the printer
2301        is on, all text sent to the terminal will be sent to the  printer.   It
2302        is  undefined whether the text is also displayed on the terminal screen
2303        when the printer is on.  A variation  <STRONG>mc5p</STRONG>  takes  one  parameter,  and
2304        leaves the printer on for as many characters as the value of the param-
2305        eter, then turns the printer off.  The parameter should not exceed 255.
2306        All  text,  including <STRONG>mc4</STRONG>, is transparently passed to the printer while
2307        an <STRONG>mc5p</STRONG> is in effect.
2308
2309
2310 </PRE><H3><a name="h3-Glitches-and-Braindamage">Glitches and Braindamage</a></H3><PRE>
2311        Hazeltine terminals, which do not allow "~" characters to be  displayed
2312        should indicate <STRONG>hz</STRONG>.
2313
2314        Terminals  which  ignore a line-feed immediately after an <STRONG>am</STRONG> wrap, such
2315        as the Concept and vt100, should indicate <STRONG>xenl</STRONG>.
2316
2317        If <STRONG>el</STRONG> is required to get rid of standout  (instead  of  merely  writing
2318        normal text on top of it), <STRONG>xhp</STRONG> should be given.
2319
2320        Teleray terminals, where tabs turn all characters moved over to blanks,
2321        should indicate <STRONG>xt</STRONG> (destructive tabs).  Note: the  variable  indicating
2322        this  is  now  "dest_tabs_magic_smso";  in  older versions, it was tel-
2323        eray_glitch.  This glitch is also taken to mean that it is not possible
2324        to position the cursor on top of a "magic cookie", that to erase stand-
2325        out mode it is instead necessary to use delete and  insert  line.   The
2326        ncurses implementation ignores this glitch.
2327
2328        The  Beehive Superbee, which is unable to correctly transmit the escape
2329        or control/C characters, has <STRONG>xsb</STRONG>, indicating that the f1  key  is  used
2330        for  escape  and  f2  for control/C.  (Only certain Superbees have this
2331        problem, depending on the ROM.)  Note that in older terminfo  versions,
2332        this capability was called "beehive_glitch"; it is now "no_esc_ctl_c".
2333
2334        Other  specific terminal problems may be corrected by adding more capa-
2335        bilities of the form <STRONG>x</STRONG><EM>x</EM>.
2336
2337
2338 </PRE><H3><a name="h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></H3><PRE>
2339        Long terminfo entries are unlikely to be a problem; to date,  no  entry
2340        has  even approached terminfo's 4096-byte string-table maximum.  Unfor-
2341        tunately, the termcap translations are much more strictly  limited  (to
2342        1023  bytes),  thus  termcap  translations of long terminfo entries can
2343        cause problems.
2344
2345        The man pages for 4.3BSD and older versions  of  <STRONG>tgetent</STRONG>  instruct  the
2346        user  to  allocate a 1024-byte buffer for the termcap entry.  The entry
2347        gets null-terminated by the termcap library, so that makes the  maximum
2348        safe  length  for a termcap entry 1k-1 (1023) bytes.  Depending on what
2349        the application and the termcap library being used does, and  where  in
2350        the  termcap  file  the terminal type that <STRONG>tgetent</STRONG> is searching for is,
2351        several bad things can happen.
2352
2353        Some termcap libraries print a warning message or exit if they find  an
2354        entry that's longer than 1023 bytes; others do not; others truncate the
2355        entries to 1023 bytes.  Some application programs  allocate  more  than
2356        the recommended 1K for the termcap entry; others do not.
2357
2358        Each  termcap  entry has two important sizes associated with it: before
2359        "tc" expansion, and after "tc" expansion.  "tc" is the capability  that
2360        tacks on another termcap entry to the end of the current one, to add on
2361        its capabilities.  If a termcap entry does not use the "tc" capability,
2362        then of course the two lengths are the same.
2363
2364        The  "before tc expansion" length is the most important one, because it
2365        affects more than just users of that particular terminal.  This is  the
2366        length  of the entry as it exists in /etc/termcap, minus the backslash-
2367        newline pairs, which <STRONG>tgetent</STRONG> strips out while reading it.  Some termcap
2368        libraries strip off the final newline, too (GNU termcap does not).  Now
2369        suppose:
2370
2371        <STRONG>o</STRONG>   a termcap entry before expansion is more than 1023 bytes long,
2372
2373        <STRONG>o</STRONG>   and the application has only allocated a 1k buffer,
2374
2375        <STRONG>o</STRONG>   and the termcap library (like the one in BSD/OS 1.1 and GNU)  reads
2376            the  whole entry into the buffer, no matter what its length, to see
2377            if it is the entry it wants,
2378
2379        <STRONG>o</STRONG>   and <STRONG>tgetent</STRONG> is searching for a terminal type  that  either  is  the
2380            long  entry,  appears  in the termcap file after the long entry, or
2381            does not appear in the file at all (so that <STRONG>tgetent</STRONG> has  to  search
2382            the whole termcap file).
2383
2384        Then  <STRONG>tgetent</STRONG>  will  overwrite  memory, perhaps its stack, and probably
2385        core dump the program.  Programs like telnet are particularly  vulnera-
2386        ble;  modern telnets pass along values like the terminal type automati-
2387        cally.  The results are almost as undesirable with a  termcap  library,
2388        like  SunOS  4.1.3 and Ultrix 4.4, that prints warning messages when it
2389        reads an overly long termcap entry.  If  a  termcap  library  truncates
2390        long  entries,  like  OSF/1  3.0,  it  is immune to dying here but will
2391        return incorrect data for the terminal.
2392
2393        The "after tc expansion" length will  have  a  similar  effect  to  the
2394        above, but only for people who actually set TERM to that terminal type,
2395        since <STRONG>tgetent</STRONG> only does "tc" expansion once it is  found  the  terminal
2396        type it was looking for, not while searching.
2397
2398        In  summary,  a termcap entry that is longer than 1023 bytes can cause,
2399        on various combinations of termcap libraries and applications,  a  core
2400        dump,  warnings, or incorrect operation.  If it is too long even before
2401        "tc" expansion, it will have this effect even for users of  some  other
2402        terminal  types  and  users whose TERM variable does not have a termcap
2403        entry.
2404
2405        When in -C (translate to termcap) mode, the <STRONG>ncurses</STRONG>  implementation  of
2406        <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>  issues  warning  messages  when the pre-tc length of a termcap
2407        translation is too long.  The -c (check) option  also  checks  resolved
2408        (after tc expansion) lengths.
2409
2410
2411 </PRE><H3><a name="h3-Binary-Compatibility">Binary Compatibility</a></H3><PRE>
2412        It  is  not  wise  to  count  on portability of binary terminfo entries
2413        between commercial UNIX versions.  The problem is  that  there  are  at
2414        least  two  versions  of  terminfo (under HP-UX and AIX) which diverged
2415        from System V terminfo after SVr1, and have added  extension  capabili-
2416        ties  to the string table that (in the binary format) collide with Sys-
2417        tem V and XSI Curses extensions.
2418
2419
2420 </PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
2421        Searching  for  terminal  descriptions  in  <STRONG>$HOME/.terminfo</STRONG>  and   TER-
2422        MINFO_DIRS is not supported by older implementations.
2423
2424        Some  SVr4  <STRONG>curses</STRONG>  implementations,  and  all previous to SVr4, do not
2425        interpret the %A and %O operators in parameter strings.
2426
2427        SVr4/XPG4 do not specify whether <STRONG>msgr</STRONG> licenses  movement  while  in  an
2428        alternate-character-set  mode  (such modes may, among other things, map
2429        CR and NL to characters  that  do  not  trigger  local  motions).   The
2430        <STRONG>ncurses</STRONG>  implementation  ignores  <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode.  This raises
2431        the possibility that an XPG4 implementation making the opposite  inter-
2432        pretation  may  need  terminfo  entries  made  for <STRONG>ncurses</STRONG> to have <STRONG>msgr</STRONG>
2433        turned off.
2434
2435        The <STRONG>ncurses</STRONG> library handles insert-character and insert-character modes
2436        in  a  slightly  non-standard way to get better update efficiency.  See
2437        the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG> subsection above.
2438
2439        The parameter substitutions for <STRONG>set_clock</STRONG>  and  <STRONG>display_clock</STRONG>  are  not
2440        documented  in  SVr4 or the XSI Curses standard.  They are deduced from
2441        the documentation for the AT&amp;T 505 terminal.
2442
2443        Be careful assigning the <STRONG>kmous</STRONG> capability.  The <STRONG>ncurses</STRONG>  library  wants
2444        to  interpret  it as <STRONG>KEY_MOUSE</STRONG>, for use by terminals and emulators like
2445        xterm that can return mouse-tracking information in the  keyboard-input
2446        stream.
2447
2448        X/Open  Curses  does  not  mention italics.  Portable applications must
2449        assume that  numeric  capabilities  are  signed  16-bit  values.   This
2450        includes  the  <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM>  (ncv)  capability.  The 32768 mask value
2451        used for italics with ncv can be confused with an absent  or  cancelled
2452        ncv.   If  italics  should work with colors, then the ncv value must be
2453        specified, even if it is zero.
2454
2455        Different commercial ports of terminfo  and  curses  support  different
2456        subsets of the XSI Curses standard and (in some cases) different exten-
2457        sion sets.  Here is a summary, accurate as of October 1995:
2458
2459        <STRONG>o</STRONG>   <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capabilities.
2460
2461        <STRONG>o</STRONG>   <STRONG>SGI</STRONG> -- Supports the SVr4 set, adds one undocumented extended string
2462            capability (<STRONG>set_pglen</STRONG>).
2463
2464        <STRONG>o</STRONG>   <STRONG>SVr1,</STRONG> <STRONG>Ultrix</STRONG> -- These support a restricted subset of terminfo capa-
2465            bilities.  The  booleans  end  with  <STRONG>xon_xoff</STRONG>;  the  numerics  with
2466            <STRONG>width_status_line</STRONG>; and the strings with <STRONG>prtr_non</STRONG>.
2467
2468        <STRONG>o</STRONG>   <STRONG>HP/UX</STRONG>  --  Supports  the  SVr1  subset,  plus the SVr[234] numerics
2469            <STRONG>num_labels</STRONG>,  <STRONG>label_height</STRONG>,  <STRONG>label_width</STRONG>,  plus  function  keys   11
2470            through  63,  plus  <STRONG>plab_norm</STRONG>,  <STRONG>label_on</STRONG>,  and <STRONG>label_off</STRONG>, plus some
2471            incompatible extensions in the string table.
2472
2473        <STRONG>o</STRONG>   <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11 through  63,
2474            plus a number of incompatible string table extensions.
2475
2476        <STRONG>o</STRONG>   <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions.
2477
2478
2479 </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
2480        /usr/share/terminfo/?/*  files containing terminal descriptions
2481
2482
2483 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
2484        <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>,  <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>,  <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG>curs_vari-</STRONG>
2485        <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>, <STRONG>printf(3)</STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.  <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>.  <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
2486
2487
2488 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
2489        Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.  Based on pcurses
2490        by Pavel Curtis.
2491
2492
2493
2494                                                                    <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
2495 </PRE>
2496 <div class="nav">
2497 <ul>
2498 <li><a href="#h2-NAME">NAME</a></li>
2499 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
2500 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
2501 <ul>
2502 <li><a href="#h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></li>
2503 <li><a href="#h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></li>
2504 <li><a href="#h3-Similar-Terminals">Similar Terminals</a></li>
2505 <li><a href="#h3-Predefined-Capabilities">Predefined Capabilities</a></li>
2506 <li><a href="#h3-User-Defined-Capabilities">User-Defined Capabilities</a></li>
2507 <li><a href="#h3-A-Sample-Entry">A Sample Entry</a></li>
2508 <li><a href="#h3-Types-of-Capabilities">Types of Capabilities</a></li>
2509 <li><a href="#h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></li>
2510 <li><a href="#h3-Preparing-Descriptions">Preparing Descriptions</a></li>
2511 <li><a href="#h3-Basic-Capabilities">Basic Capabilities</a></li>
2512 <li><a href="#h3-Parameterized-Strings">Parameterized Strings</a></li>
2513 <li><a href="#h3-Cursor-Motions">Cursor Motions</a></li>
2514 <li><a href="#h3-Area-Clears">Area Clears</a></li>
2515 <li><a href="#h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></li>
2516 <li><a href="#h3-Insert_Delete-Character">Insert/Delete Character</a></li>
2517 <li><a href="#h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></li>
2518 <li><a href="#h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></li>
2519 <li><a href="#h3-Tabs-and-Initialization">Tabs and Initialization</a></li>
2520 <li><a href="#h3-Delays-and-Padding">Delays and Padding</a></li>
2521 <li><a href="#h3-Status-Lines">Status Lines</a></li>
2522 <li><a href="#h3-Line-Graphics">Line Graphics</a></li>
2523 <li><a href="#h3-Color-Handling">Color Handling</a></li>
2524 <li><a href="#h3-Miscellaneous">Miscellaneous</a></li>
2525 <li><a href="#h3-Glitches-and-Braindamage">Glitches and Braindamage</a></li>
2526 <li><a href="#h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></li>
2527 <li><a href="#h3-Binary-Compatibility">Binary Compatibility</a></li>
2528 </ul>
2529 </li>
2530 <li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
2531 <li><a href="#h2-FILES">FILES</a></li>
2532 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
2533 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
2534 </ul>
2535 </div>
2536 </BODY>
2537 </HTML>