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