terminfo(5) - phpMan

Command: man perldoc info search(apropos)  

terminfo(5)                      File Formats                      terminfo(5)

       terminfo - terminal capability data base


       Terminfo is a data base describing terminals, used by screen-oriented programs such
       as nvi(1), rogue(1) and libraries such as curses(3X).  Terminfo describes terminals
       by  giving  a  set  of  capabilities  which they have, by specifying how to perform
       screen operations,  and  by  specifying  padding  requirements  and  initialization
       sequences.  This describes ncurses version 5.7 (patch 20090207).

       Entries  in terminfo consist of a sequence of ',' separated fields (embedded commas
       may be escaped with a backslash or notated as \054).  White  space  after  the  ','
       separator  is ignored.  The first entry for each terminal gives the names which are
       known for the terminal, separated by '|' characters.  The first name given  is  the
       most  common  abbreviation  for  the terminal, the last name given should be a long
       name fully identifying the terminal, and all others are understood as synonyms  for
       the  terminal  name.  All names but the last should be in lower case and contain no
       blanks; the last name may well contain upper case and blanks for readability.

       Lines beginning with a '#' in the first column are treated as comments.  While com-
       ment  lines  are legal at any point, the output of captoinfo and infotocap (aliases
       for tic) will move comments so they occur only between entries.

       Newlines and leading tabs may be  used  for  formatting  entries  for  readability.
       These  are  removed  from  parsed entries.  The infocmp -f option relies on this to
       format if-then-else expressions: the result can be read by tic.

       Terminal names (except for the last, verbose entry) should be chosen using the fol-
       lowing conventions.  The particular piece of hardware making up the terminal should
       have a root name, thus ''hp2621''.  This name should not  contain  hyphens.   Modes
       that  the hardware can be in, or user preferences, should be indicated by appending
       a hyphen and a mode suffix.  Thus, a vt100 in 132 column  mode  would  be  vt100-w.
       The following suffixes should be used where possible:

                  Suffix                  Meaning                   Example
                  -nn      Number of lines on the screen            aaa-60
                  -np      Number of pages of memory                c100-4p
                  -am      With automargins (usually the default)   vt100-am
                  -m       Mono mode; suppress color                ansi-m
                  -mc      Magic cookie; spaces when highlighting   wy30-mc
                  -na      No arrow keys (leave them in local)      c100-na
                  -nam     Without automatic margins                vt100-nam
                  -nl      No status line                           att4415-nl
                  -ns      No status line                           hp2626-ns
                  -rv      Reverse video                            c100-rv
                  -s       Enable status line                       vt100-s
                  -vb      Use visible bell instead of beep         wy370-vb
                  -w       Wide mode (> 80 columns, usually 132)    vt100-w

       For more on terminal naming conventions, see the term(7) manual page.

       The  following  is  a  complete  table  of  the capabilities included in a terminfo
       description block and available to terminfo-using code.  In each line of the table,

       The  variable  is the name by which the programmer (at the terminfo level) accesses
       the capability.

       The capname is the short name used in the text of the database, and is  used  by  a
       person  updating  the  database.   Whenever possible, capnames are chosen to be the
       same as or similar to the ANSI X3.64-1979  standard  (now  superseded  by  ECMA-48,
       which  uses identical or very similar names).  Semantics are also intended to match
       those of the specification.

       The termcap code is the old termcap capability name (some capabilities are new, and
       have names which termcap did not originate).

       Capability  names  have no hard length limit, but an informal limit of 5 characters
       has been adopted to keep them short and to allow the tabs in the source  file  Caps
       to line up nicely.

       Finally,  the description field attempts to convey the semantics of the capability.
       You may find some codes in the description field:

       (P)    indicates that padding may be specified

       #[1-9] in the description field indicates that the string is passed  through  tparm
              with parms as given (#i).

       (P*)   indicates  that  padding  may  vary  in  proportion  to  the number of lines

       (#i)   indicates the ith parameter.

       These are the boolean capabilities:

               Variable                  Cap-           TCap              Description
               Booleans                  name           Code
       auto_left_margin                  bw             bw            cub1 wraps from col-
                                                                      umn 0 to last column
       auto_right_margin                 am             am            terminal has auto-
                                                                      matic margins
       back_color_erase                  bce            ut            screen erased with
                                                                      background color
       can_change                        ccc            cc            terminal can re-
                                                                      define existing col-
       ceol_standout_glitch              xhp            xs            standout not erased
                                                                      by overwriting (hp)
       col_addr_glitch                   xhpa           YA            only positive motion
                                                                      for hpa/mhpa caps
       cpi_changes_res                   cpix           YF            changing character
                                                                      pitch changes reso-
       cr_cancels_micro_mode             crxm           YB            using cr turns off
                                                                      micro mode
       dest_tabs_magic_smso              xt             xt            tabs destructive,
                                                                      magic so char
       eat_newline_glitch                xenl           xn            newline ignored
                                                                      after 80 cols (con-
       erase_overstrike                  eo             eo            can erase over-
                                                                      strikes with a blank
       generic_type                      gn             gn            generic line type
       hard_copy                         hc             hc            hardcopy terminal
       hard_cursor                       chts           HC            cursor is hard to
       has_meta_key                      km             km            Has a meta key
                                                                      (i.e., sets 8th-bit)

       has_print_wheel                   daisy          YC            printer needs opera-
                                                                      tor to change char-
                                                                      acter set
       has_status_line                   hs             hs            has extra status
       hue_lightness_saturation          hls            hl            terminal uses only
                                                                      HLS color notation
       insert_null_glitch                in             in            insert mode distin-
                                                                      guishes nulls
       lpi_changes_res                   lpix           YG            changing line pitch
                                                                      changes resolution
       memory_above                      da             da            display may be
                                                                      retained above the
       memory_below                      db             db            display may be
                                                                      retained below the
       move_insert_mode                  mir            mi            safe to move while
                                                                      in insert mode
       move_standout_mode                msgr           ms            safe to move while
                                                                      in standout mode
       needs_xon_xoff                    nxon           nx            padding will not
                                                                      work, xon/xoff
       no_esc_ctlc                       xsb            xb            beehive (f1=escape,
                                                                      f2=ctrl C)
       no_pad_char                       npc            NP            pad character does
                                                                      not exist
       non_dest_scroll_region            ndscr          ND            scrolling region is
       non_rev_rmcup                     nrrmc          NR            smcup does not
                                                                      reverse rmcup
       over_strike                       os             os            terminal can over-
       prtr_silent                       mc5i           5i            printer will not
                                                                      echo on screen
       row_addr_glitch                   xvpa           YD            only positive motion
                                                                      for vpa/mvpa caps
       semi_auto_right_margin            sam            YE            printing in last
                                                                      column causes cr
       status_line_esc_ok                eslok          es            escape can be used
                                                                      on the status line
       tilde_glitch                      hz             hz            cannot print ~'s
       transparent_underline             ul             ul            underline character
       xon_xoff                          xon            xo            terminal uses
                                                                      xon/xoff handshaking

       These are the numeric capabilities:

            Variable                 Cap-             TCap                Description
             Numeric                 name             Code
       columns                       cols             co              number of columns in
                                                                      a line
       init_tabs                     it               it              tabs initially every
                                                                      # spaces
       label_height                  lh               lh              rows in each label
       label_width                   lw               lw              columns in each
       lines                         lines            li              number of lines on
                                                                      screen or page

       lines_of_memory               lm               lm              lines of memory if >
                                                                      line. 0 means varies
       magic_cookie_glitch           xmc              sg              number of blank
                                                                      characters left by
                                                                      smso or rmso
       max_attributes                ma               ma              maximum combined
                                                                      attributes terminal
                                                                      can handle
       max_colors                    colors           Co              maximum number of
                                                                      colors on screen
       max_pairs                     pairs            pa              maximum number of
                                                                      color-pairs on the
       maximum_windows               wnum             MW              maximum number of
                                                                      defineable windows
       no_color_video                ncv              NC              video attributes
                                                                      that cannot be used
                                                                      with colors
       num_labels                    nlab             Nl              number of labels on
       padding_baud_rate             pb               pb              lowest baud rate
                                                                      where padding needed
       virtual_terminal              vt               vt              virtual terminal
                                                                      number (CB/unix)
       width_status_line             wsl              ws              number of columns in
                                                                      status line

       The  following  numeric  capabilities are present in the SVr4.0 term structure, but
       are not yet documented in the man page.  They came in with SVr4's printer  support.

             Variable                 Cap-             TCap               Description
             Numeric                  name             Code
       bit_image_entwining            bitwin           Yo             number of passes for
                                                                      each bit-image row
       bit_image_type                 bitype           Yp             type of bit-image
       buffer_capacity                bufsz            Ya             numbers of bytes
                                                                      buffered before
       buttons                        btns             BT             number of buttons on
       dot_horz_spacing               spinh            Yc             spacing of dots hor-
                                                                      izontally in dots
                                                                      per inch
       dot_vert_spacing               spinv            Yb             spacing of pins ver-
                                                                      tically in pins per
       max_micro_address              maddr            Yd             maximum value in
       max_micro_jump                 mjump            Ye             maximum value in
       micro_col_size                 mcs              Yf             character step size
                                                                      when in micro mode
       micro_line_size                mls              Yg             line step size when
                                                                      in micro mode
       number_of_pins                 npins            Yh             numbers of pins in
       output_res_char                orc              Yi             horizontal resolu-
                                                                      tion in units per
       output_res_horz_inch           orhi             Yk             horizontal resolu-
                                                                      tion in units per

       output_res_line                orl              Yj             vertical resolution
                                                                      in units per line
       output_res_vert_inch           orvi             Yl             vertical resolution
                                                                      in units per inch
       print_rate                     cps              Ym             print rate in char-
                                                                      acters per second
       wide_char_size                 widcs            Yn             character step size
                                                                      when in double wide

       These are the string capabilities:

               Variable                  Cap-           TCap              Description
                String                   name           Code
       acs_chars                         acsc           ac            graphics charset
                                                                      pairs, based on
       back_tab                          cbt            bt            back tab (P)
       bell                              bel            bl            audible signal
                                                                      (bell) (P)
       carriage_return                   cr             cr            carriage return (P*)
       change_char_pitch                 cpi            ZA            Change number of
                                                                      characters per inch
                                                                      to #1
       change_line_pitch                 lpi            ZB            Change number of
                                                                      lines per inch to #1
       change_res_horz                   chr            ZC            Change horizontal
                                                                      resolution to #1
       change_res_vert                   cvr            ZD            Change vertical res-
                                                                      olution to #1
       change_scroll_region              csr            cs            change region to
                                                                      line #1 to line #2
       char_padding                      rmp            rP            like ip but when in
                                                                      insert mode
       clear_all_tabs                    tbc            ct            clear all tab stops
       clear_margins                     mgc            MC            clear right and left
                                                                      soft margins
       clear_screen                      clear          cl            clear screen and
                                                                      home cursor (P*)
       clr_bol                           el1            cb            Clear to beginning
                                                                      of line
       clr_eol                           el             ce            clear to end of line
       clr_eos                           ed             cd            clear to end of
                                                                      screen (P*)
       column_address                    hpa            ch            horizontal position
                                                                      #1, absolute (P)
       command_character                 cmdch          CC            terminal settable
                                                                      cmd character in
                                                                      prototype !?
       create_window                     cwin           CW            define a window #1
                                                                      from #2,#3 to #4,#5
       cursor_address                    cup            cm            move to row #1
                                                                      columns #2
       cursor_down                       cud1           do            down one line
       cursor_home                       home           ho            home cursor (if no
       cursor_invisible                  civis          vi            make cursor invisi-
       cursor_left                       cub1           le            move left one space

       cursor_mem_address                mrcup          CM            memory relative cur-
                                                                      sor addressing, move
                                                                      to row #1 columns #2
       cursor_normal                     cnorm          ve            make cursor appear
                                                                      normal (undo
       cursor_right                      cuf1           nd            non-destructive
                                                                      space (move right
                                                                      one space)
       cursor_to_ll                      ll             ll            last line, first
                                                                      column (if no cup)
       cursor_up                         cuu1           up            up one line
       cursor_visible                    cvvis          vs            make cursor very
       define_char                       defc           ZE            Define a character
                                                                      #1, #2 dots wide,
                                                                      descender #3
       delete_character                  dch1           dc            delete character
       delete_line                       dl1            dl            delete line (P*)
       dial_phone                        dial           DI            dial number #1
       dis_status_line                   dsl            ds            disable status line
       display_clock                     dclk           DK            display clock
       down_half_line                    hd             hd            half a line down
       ena_acs                           enacs          eA            enable alternate
                                                                      char set
       enter_alt_charset_mode            smacs          as            start alternate
                                                                      character set (P)
       enter_am_mode                     smam           SA            turn on automatic
       enter_blink_mode                  blink          mb            turn on blinking
       enter_bold_mode                   bold           md            turn on bold (extra
                                                                      bright) mode
       enter_ca_mode                     smcup          ti            string to start pro-
                                                                      grams using cup
       enter_delete_mode                 smdc           dm            enter delete mode
       enter_dim_mode                    dim            mh            turn on half-bright
       enter_doublewide_mode             swidm          ZF            Enter double-wide
       enter_draft_quality               sdrfq          ZG            Enter draft-quality
       enter_insert_mode                 smir           im            enter insert mode
       enter_italics_mode                sitm           ZH            Enter italic mode
       enter_leftward_mode               slm            ZI            Start leftward car-
                                                                      riage motion
       enter_micro_mode                  smicm          ZJ            Start micro-motion
       enter_near_letter_quality         snlq           ZK            Enter NLQ mode
       enter_normal_quality              snrmq          ZL            Enter normal-quality
       enter_protected_mode              prot           mp            turn on protected
       enter_reverse_mode                rev            mr            turn on reverse
                                                                      video mode
       enter_secure_mode                 invis          mk            turn on blank mode
                                                                      (characters invisi-
       enter_shadow_mode                 sshm           ZM            Enter shadow-print
       enter_standout_mode               smso           so            begin standout mode
       enter_subscript_mode              ssubm          ZN            Enter subscript mode
       enter_superscript_mode            ssupm          ZO            Enter superscript
       enter_underline_mode              smul           us            begin underline mode

       enter_upward_mode                 sum            ZP            Start upward car-
                                                                      riage motion
       enter_xon_mode                    smxon          SX            turn on xon/xoff
       erase_chars                       ech            ec            erase #1 characters
       exit_alt_charset_mode             rmacs          ae            end alternate char-
                                                                      acter set (P)
       exit_am_mode                      rmam           RA            turn off automatic
       exit_attribute_mode               sgr0           me            turn off all
       exit_ca_mode                      rmcup          te            strings to end pro-
                                                                      grams using cup
       exit_delete_mode                  rmdc           ed            end delete mode
       exit_doublewide_mode              rwidm          ZQ            End double-wide mode
       exit_insert_mode                  rmir           ei            exit insert mode
       exit_italics_mode                 ritm           ZR            End italic mode
       exit_leftward_mode                rlm            ZS            End left-motion mode
       exit_micro_mode                   rmicm          ZT            End micro-motion
       exit_shadow_mode                  rshm           ZU            End shadow-print
       exit_standout_mode                rmso           se            exit standout mode
       exit_subscript_mode               rsubm          ZV            End subscript mode
       exit_superscript_mode             rsupm          ZW            End superscript mode
       exit_underline_mode               rmul           ue            exit underline mode
       exit_upward_mode                  rum            ZX            End reverse charac-
                                                                      ter motion
       exit_xon_mode                     rmxon          RX            turn off xon/xoff
       fixed_pause                       pause          PA            pause for 2-3 sec-
       flash_hook                        hook           fh            flash switch hook
       flash_screen                      flash          vb            visible bell (may
                                                                      not move cursor)
       form_feed                         ff             ff            hardcopy terminal
                                                                      page eject (P*)
       from_status_line                  fsl            fs            return from status
       goto_window                       wingo          WG            go to window #1
       hangup                            hup            HU            hang-up phone
       init_1string                      is1            i1            initialization
       init_2string                      is2            is            initialization
       init_3string                      is3            i3            initialization
       init_file                         if             if            name of initializa-
                                                                      tion file
       init_prog                         iprog          iP            path name of program
                                                                      for initialization
       initialize_color                  initc          Ic            initialize color #1
                                                                      to (#2,#3,#4)
       initialize_pair                   initp          Ip            Initialize color
                                                                      pair #1 to
       insert_character                  ich1           ic            insert character (P)
       insert_line                       il1            al            insert line (P*)
       insert_padding                    ip             ip            insert padding after
                                                                      inserted character
       key_a1                            ka1            K1            upper left of keypad
       key_a3                            ka3            K3            upper right of key-

       key_b2                            kb2            K2            center of keypad
       key_backspace                     kbs            kb            backspace key
       key_beg                           kbeg           @1            begin key
       key_btab                          kcbt           kB            back-tab key
       key_c1                            kc1            K4            lower left of keypad
       key_c3                            kc3            K5            lower right of key-
       key_cancel                        kcan           @2            cancel key
       key_catab                         ktbc           ka            clear-all-tabs key
       key_clear                         kclr           kC            clear-screen or
                                                                      erase key
       key_close                         kclo           @3            close key
       key_command                       kcmd           @4            command key
       key_copy                          kcpy           @5            copy key
       key_create                        kcrt           @6            create key
       key_ctab                          kctab          kt            clear-tab key
       key_dc                            kdch1          kD            delete-character key
       key_dl                            kdl1           kL            delete-line key
       key_down                          kcud1          kd            down-arrow key
       key_eic                           krmir          kM            sent by rmir or smir
                                                                      in insert mode
       key_end                           kend           @7            end key
       key_enter                         kent           @8            enter/send key
       key_eol                           kel            kE            clear-to-end-of-line
       key_eos                           ked            kS            clear-to-end-of-
                                                                      screen key
       key_exit                          kext           @9            exit key
       key_f0                            kf0            k0            F0 function key
       key_f1                            kf1            k1            F1 function key
       key_f10                           kf10           k;            F10 function key
       key_f11                           kf11           F1            F11 function key
       key_f12                           kf12           F2            F12 function key
       key_f13                           kf13           F3            F13 function key
       key_f14                           kf14           F4            F14 function key
       key_f15                           kf15           F5            F15 function key
       key_f16                           kf16           F6            F16 function key
       key_f17                           kf17           F7            F17 function key
       key_f18                           kf18           F8            F18 function key
       key_f19                           kf19           F9            F19 function key
       key_f2                            kf2            k2            F2 function key
       key_f20                           kf20           FA            F20 function key
       key_f21                           kf21           FB            F21 function key
       key_f22                           kf22           FC            F22 function key
       key_f23                           kf23           FD            F23 function key
       key_f24                           kf24           FE            F24 function key
       key_f25                           kf25           FF            F25 function key
       key_f26                           kf26           FG            F26 function key
       key_f27                           kf27           FH            F27 function key
       key_f28                           kf28           FI            F28 function key
       key_f29                           kf29           FJ            F29 function key
       key_f3                            kf3            k3            F3 function key
       key_f30                           kf30           FK            F30 function key
       key_f31                           kf31           FL            F31 function key
       key_f32                           kf32           FM            F32 function key
       key_f33                           kf33           FN            F33 function key
       key_f34                           kf34           FO            F34 function key
       key_f35                           kf35           FP            F35 function key
       key_f36                           kf36           FQ            F36 function key
       key_f37                           kf37           FR            F37 function key
       key_f38                           kf38           FS            F38 function key
       key_f39                           kf39           FT            F39 function key
       key_f4                            kf4            k4            F4 function key
       key_f40                           kf40           FU            F40 function key
       key_f41                           kf41           FV            F41 function key

       key_f42                           kf42           FW            F42 function key
       key_f43                           kf43           FX            F43 function key
       key_f44                           kf44           FY            F44 function key
       key_f45                           kf45           FZ            F45 function key
       key_f46                           kf46           Fa            F46 function key
       key_f47                           kf47           Fb            F47 function key
       key_f48                           kf48           Fc            F48 function key
       key_f49                           kf49           Fd            F49 function key
       key_f5                            kf5            k5            F5 function key
       key_f50                           kf50           Fe            F50 function key
       key_f51                           kf51           Ff            F51 function key
       key_f52                           kf52           Fg            F52 function key
       key_f53                           kf53           Fh            F53 function key
       key_f54                           kf54           Fi            F54 function key
       key_f55                           kf55           Fj            F55 function key
       key_f56                           kf56           Fk            F56 function key
       key_f57                           kf57           Fl            F57 function key
       key_f58                           kf58           Fm            F58 function key
       key_f59                           kf59           Fn            F59 function key
       key_f6                            kf6            k6            F6 function key
       key_f60                           kf60           Fo            F60 function key
       key_f61                           kf61           Fp            F61 function key
       key_f62                           kf62           Fq            F62 function key
       key_f63                           kf63           Fr            F63 function key
       key_f7                            kf7            k7            F7 function key
       key_f8                            kf8            k8            F8 function key
       key_f9                            kf9            k9            F9 function key
       key_find                          kfnd           @0            find key
       key_help                          khlp           %1            help key
       key_home                          khome          kh            home key
       key_ic                            kich1          kI            insert-character key
       key_il                            kil1           kA            insert-line key
       key_left                          kcub1          kl            left-arrow key
       key_ll                            kll            kH            lower-left key (home
       key_mark                          kmrk           %2            mark key
       key_message                       kmsg           %3            message key
       key_move                          kmov           %4            move key
       key_next                          knxt           %5            next key
       key_npage                         knp            kN            next-page key
       key_open                          kopn           %6            open key
       key_options                       kopt           %7            options key
       key_ppage                         kpp            kP            previous-page key
       key_previous                      kprv           %8            previous key
       key_print                         kprt           %9            print key
       key_redo                          krdo           %0            redo key
       key_reference                     kref           &1            reference key
       key_refresh                       krfr           &2            refresh key
       key_replace                       krpl           &3            replace key
       key_restart                       krst           &4            restart key
       key_resume                        kres           &5            resume key
       key_right                         kcuf1          kr            right-arrow key
       key_save                          ksav           &6            save key
       key_sbeg                          kBEG           &9            shifted begin key
       key_scancel                       kCAN           &0            shifted cancel key
       key_scommand                      kCMD           *1            shifted command key
       key_scopy                         kCPY           *2            shifted copy key
       key_screate                       kCRT           *3            shifted create key
       key_sdc                           kDC            *4            shifted delete-char-
                                                                      acter key
       key_sdl                           kDL            *5            shifted delete-line
       key_select                        kslt           *6            select key
       key_send                          kEND           *7            shifted end key

       key_seol                          kEOL           *8            shifted clear-to-
                                                                      end-of-line key
       key_sexit                         kEXT           *9            shifted exit key
       key_sf                            kind           kF            scroll-forward key
       key_sfind                         kFND           *0            shifted find key
       key_shelp                         kHLP           #1            shifted help key
       key_shome                         kHOM           #2            shifted home key
       key_sic                           kIC            #3            shifted insert-char-
                                                                      acter key
       key_sleft                         kLFT           #4            shifted left-arrow
       key_smessage                      kMSG           %a            shifted message key
       key_smove                         kMOV           %b            shifted move key
       key_snext                         kNXT           %c            shifted next key
       key_soptions                      kOPT           %d            shifted options key
       key_sprevious                     kPRV           %e            shifted previous key
       key_sprint                        kPRT           %f            shifted print key
       key_sr                            kri            kR            scroll-backward key
       key_sredo                         kRDO           %g            shifted redo key
       key_sreplace                      kRPL           %h            shifted replace key
       key_sright                        kRIT           %i            shifted right-arrow
       key_srsume                        kRES           %j            shifted resume key
       key_ssave                         kSAV           !1            shifted save key
       key_ssuspend                      kSPD           !2            shifted suspend key
       key_stab                          khts           kT            set-tab key
       key_sundo                         kUND           !3            shifted undo key
       key_suspend                       kspd           &7            suspend key
       key_undo                          kund           &8            undo key
       key_up                            kcuu1          ku            up-arrow key
       keypad_local                      rmkx           ke            leave 'key-
                                                                      board_transmit' mode
       keypad_xmit                       smkx           ks            enter 'key-
                                                                      board_transmit' mode
       lab_f0                            lf0            l0            label on function
                                                                      key f0 if not f0
       lab_f1                            lf1            l1            label on function
                                                                      key f1 if not f1
       lab_f10                           lf10           la            label on function
                                                                      key f10 if not f10
       lab_f2                            lf2            l2            label on function
                                                                      key f2 if not f2
       lab_f3                            lf3            l3            label on function
                                                                      key f3 if not f3
       lab_f4                            lf4            l4            label on function
                                                                      key f4 if not f4
       lab_f5                            lf5            l5            label on function
                                                                      key f5 if not f5
       lab_f6                            lf6            l6            label on function
                                                                      key f6 if not f6
       lab_f7                            lf7            l7            label on function
                                                                      key f7 if not f7
       lab_f8                            lf8            l8            label on function
                                                                      key f8 if not f8
       lab_f9                            lf9            l9            label on function
                                                                      key f9 if not f9
       label_format                      fln            Lf            label format
       label_off                         rmln           LF            turn off soft labels
       label_on                          smln           LO            turn on soft labels
       meta_off                          rmm            mo            turn off meta mode
       meta_on                           smm            mm            turn on meta mode
                                                                      (8th-bit on)
       micro_column_address              mhpa           ZY            Like column_address
                                                                      in micro mode

       micro_down                        mcud1          ZZ            Like cursor_down in
                                                                      micro mode
       micro_left                        mcub1          Za            Like cursor_left in
                                                                      micro mode
       micro_right                       mcuf1          Zb            Like cursor_right in
                                                                      micro mode
       micro_row_address                 mvpa           Zc            Like row_address #1
                                                                      in micro mode
       micro_up                          mcuu1          Zd            Like cursor_up in
                                                                      micro mode
       newline                           nel            nw            newline (behave like
                                                                      cr followed by lf)
       order_of_pins                     porder         Ze            Match software bits
                                                                      to print-head pins
       orig_colors                       oc             oc            Set all color pairs
                                                                      to the original ones
       orig_pair                         op             op            Set default pair to
                                                                      its original value
       pad_char                          pad            pc            padding char
                                                                      (instead of null)
       parm_dch                          dch            DC            delete #1 characters
       parm_delete_line                  dl             DL            delete #1 lines (P*)
       parm_down_cursor                  cud            DO            down #1 lines (P*)
       parm_down_micro                   mcud           Zf            Like parm_down_cur-
                                                                      sor in micro mode
       parm_ich                          ich            IC            insert #1 characters
       parm_index                        indn           SF            scroll forward #1
                                                                      lines (P)
       parm_insert_line                  il             AL            insert #1 lines (P*)
       parm_left_cursor                  cub            LE            move #1 characters
                                                                      to the left (P)
       parm_left_micro                   mcub           Zg            Like parm_left_cur-
                                                                      sor in micro mode
       parm_right_cursor                 cuf            RI            move #1 characters
                                                                      to the right (P*)
       parm_right_micro                  mcuf           Zh            Like parm_right_cur-
                                                                      sor in micro mode
       parm_rindex                       rin            SR            scroll back #1 lines
       parm_up_cursor                    cuu            UP            up #1 lines (P*)
       parm_up_micro                     mcuu           Zi            Like parm_up_cursor
                                                                      in micro mode
       pkey_key                          pfkey          pk            program function key
                                                                      #1 to type string #2
       pkey_local                        pfloc          pl            program function key
                                                                      #1 to execute string
       pkey_xmit                         pfx            px            program function key
                                                                      #1 to transmit
                                                                      string #2
       plab_norm                         pln            pn            program label #1 to
                                                                      show string #2
       print_screen                      mc0            ps            print contents of
       prtr_non                          mc5p           pO            turn on printer for
                                                                      #1 bytes
       prtr_off                          mc4            pf            turn off printer
       prtr_on                           mc5            po            turn on printer
       pulse                             pulse          PU            select pulse dialing
       quick_dial                        qdial          QD            dial number #1 with-
                                                                      out checking
       remove_clock                      rmclk          RC            remove clock

       repeat_char                       rep            rp            repeat char #1 #2
                                                                      times (P*)
       req_for_input                     rfi            RF            send next input char
                                                                      (for ptys)
       reset_1string                     rs1            r1            reset string
       reset_2string                     rs2            r2            reset string
       reset_3string                     rs3            r3            reset string
       reset_file                        rf             rf            name of reset file
       restore_cursor                    rc             rc            restore cursor to
                                                                      position of last
       row_address                       vpa            cv            vertical position #1
                                                                      absolute (P)
       save_cursor                       sc             sc            save current cursor
                                                                      position (P)
       scroll_forward                    ind            sf            scroll text up (P)
       scroll_reverse                    ri             sr            scroll text down (P)
       select_char_set                   scs            Zj            Select character
                                                                      set, #1
       set_attributes                    sgr            sa            define video
                                                                      attributes #1-#9
       set_background                    setb           Sb            Set background color
       set_bottom_margin                 smgb           Zk            Set bottom margin at
                                                                      current line
       set_bottom_margin_parm            smgbp          Zl            Set bottom margin at
                                                                      line #1 or (if smgtp
                                                                      is not given) #2
                                                                      lines from bottom
       set_clock                         sclk           SC            set clock, #1 hrs #2
                                                                      mins #3 secs
       set_color_pair                    scp            sp            Set current color
                                                                      pair to #1
       set_foreground                    setf           Sf            Set foreground color
       set_left_margin                   smgl           ML            set left soft margin
                                                                      at current col-
                                                                      See smgl. (ML is not
                                                                      in BSD termcap).
       set_left_margin_parm              smglp          Zm            Set left (right)
                                                                      margin at column #1
       set_right_margin                  smgr           MR            set right soft mar-
                                                                      gin at current col-
       set_right_margin_parm             smgrp          Zn            Set right margin at
                                                                      column #1
       set_tab                           hts            st            set a tab in every
                                                                      row, current columns
       set_top_margin                    smgt           Zo            Set top margin at
                                                                      current line
       set_top_margin_parm               smgtp          Zp            Set top (bottom)
                                                                      margin at row #1
       set_window                        wind           wi            current window is
                                                                      lines #1-#2 cols
       start_bit_image                   sbim           Zq            Start printing bit
                                                                      image graphics
       start_char_set_def                scsd           Zr            Start character set
                                                                      definition #1, with
                                                                      #2 characters in the
       stop_bit_image                    rbim           Zs            Stop printing bit
                                                                      image graphics

       stop_char_set_def                 rcsd           Zt            End definition of
                                                                      character set #1
       subscript_characters              subcs          Zu            List of subscript-
                                                                      able characters
       superscript_characters            supcs          Zv            List of superscript-
                                                                      able characters
       tab                               ht             ta            tab to next 8-space
                                                                      hardware tab stop
       these_cause_cr                    docr           Zw            Printing any of
                                                                      these characters
                                                                      causes CR
       to_status_line                    tsl            ts            move to status line,
                                                                      column #1
       tone                              tone           TO            select touch tone
       underline_char                    uc             uc            underline char and
                                                                      move past it
       up_half_line                      hu             hu            half a line up
       user0                             u0             u0            User string #0
       user1                             u1             u1            User string #1
       user2                             u2             u2            User string #2
       user3                             u3             u3            User string #3
       user4                             u4             u4            User string #4
       user5                             u5             u5            User string #5
       user6                             u6             u6            User string #6
       user7                             u7             u7            User string #7
       user8                             u8             u8            User string #8
       user9                             u9             u9            User string #9
       wait_tone                         wait           WA            wait for dial-tone
       xoff_character                    xoffc          XF            XOFF character
       xon_character                     xonc           XN            XON character
       zero_motion                       zerom          Zx            No motion for subse-
                                                                      quent character

       The  following  string  capabilities  are present in the SVr4.0 term structure, but
       were originally not documented in the man page.

               Variable                  Cap-             TCap             Description
                String                   name             Code
       alt_scancode_esc                  scesa            S8            Alternate escape
                                                                        for scancode emu-
       bit_image_carriage_return         bicr             Yv            Move to beginning
                                                                        of same row
       bit_image_newline                 binel            Zz            Move to next row
                                                                        of the bit image
       bit_image_repeat                  birep            Xy            Repeat bit image
                                                                        cell #1 #2 times
       char_set_names                    csnm             Zy            Produce #1'th item
                                                                        from list of char-
                                                                        acter set names
       code_set_init                     csin             ci            Init sequence for
                                                                        multiple codesets
       color_names                       colornm          Yw            Give name for
                                                                        color #1
       define_bit_image_region           defbi            Yx            Define rectan-
                                                                        gualar bit image
       device_type                       devt             dv            Indicate lan-
                                                                        guage/codeset sup-
       display_pc_char                   dispc            S1            Display PC charac-
                                                                        ter #1

       end_bit_image_region              endbi            Yy            End a bit-image
       enter_pc_charset_mode             smpch            S2            Enter PC character
                                                                        display mode
       enter_scancode_mode               smsc             S4            Enter PC scancode
       exit_pc_charset_mode              rmpch            S3            Exit PC character
                                                                        display mode
       exit_scancode_mode                rmsc             S5            Exit PC scancode
       get_mouse                         getm             Gm            Curses should get
                                                                        button events,
                                                                        parameter #1 not
       key_mouse                         kmous            Km            Mouse event has
       mouse_info                        minfo            Mi            Mouse status
       pc_term_options                   pctrm            S6            PC terminal
       pkey_plab                         pfxl             xl            Program function
                                                                        key #1 to type
                                                                        string #2 and show
                                                                        string #3
       req_mouse_pos                     reqmp            RQ            Request mouse
       scancode_escape                   scesc            S7            Escape for scan-
                                                                        code emulation
       set0_des_seq                      s0ds             s0            Shift to codeset 0
                                                                        (EUC set 0, ASCII)
       set1_des_seq                      s1ds             s1            Shift to codeset 1
       set2_des_seq                      s2ds             s2            Shift to codeset 2
       set3_des_seq                      s3ds             s3            Shift to codeset 3
       set_a_background                  setab            AB            Set background
                                                                        color to #1, using
                                                                        ANSI escape
       set_a_foreground                  setaf            AF            Set foreground
                                                                        color to #1, using
                                                                        ANSI escape
       set_color_band                    setcolor         Yz            Change to ribbon
                                                                        color #1
       set_lr_margin                     smglr            ML            Set both left and
                                                                        right margins to
                                                                        #1, #2.  (ML is
                                                                        not in BSD term-
       set_page_length                   slines           YZ            Set page length to
                                                                        #1 lines
       set_tb_margin                     smgtb            MT            Sets both top and
                                                                        bottom margins to
                                                                        #1, #2

        The  XSI Curses standard added these.  They are some post-4.1 versions of System V
        curses, e.g., Solaris 2.5 and IRIX 6.x.  The ncurses termcap names  for  them  are
        invented;  according  to  the XSI Curses standard, they have no termcap names.  If
        your compiled terminfo entries use these, they may not be  binary-compatible  with
        System V terminfo entries after SVr4.1; beware!

                Variable                 Cap-            TCap             Description
                 String                  name            Code
        enter_horizontal_hl_mode         ehhlm           Xh           Enter horizontal
                                                                      highlight mode
        enter_left_hl_mode               elhlm           Xl           Enter left highlight

        enter_low_hl_mode                elohlm          Xo           Enter low highlight
        enter_right_hl_mode              erhlm           Xr           Enter right high-
                                                                      light mode
        enter_top_hl_mode                ethlm           Xt           Enter top highlight
        enter_vertical_hl_mode           evhlm           Xv           Enter vertical high-
                                                                      light mode
        set_a_attributes                 sgr1            sA           Define second set of
                                                                      video attributes
        set_pglen_inch                   slength         sL           YI Set page length
                                                                      to #1 hundredth of
                                                                      an inch

   A Sample Entry
       The  following  entry,  describing  an ANSI-standard terminal, is representative of
       what a terminfo entry for a modern terminal typically looks like.

     ansi|ansi/pc-term compatible with color,
             colors#8, ncv#3, pairs#64,
             cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
             cuu=\E[%p1%dA, dch=\E[%p1%dP, dl=\E[%p1%dM,
             ech=\E[%p1%dX, el1=\E[1K, hpa=\E[%p1%dG, ht=\E[I,
             ich=\E[%p1%d@, il=\E[%p1%dL, indn=\E[%p1%dS, .indn=\E[%p1%dT,
             kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
             kcuf1=\E[C, kcuu1=\E[A, kf1=\E[M, kf10=\E[V,
             kf11=\E[W, kf12=\E[X, kf2=\E[N, kf3=\E[O, kf4=\E[P,
             kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U,
             kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S,
             op=\E[37;40m, rep=%p1%c\E[%p2%{1}%-%db,
             rin=\E[%p1%dT, s0ds=\E(B, s1ds=\E)B, s2ds=\E*B,
             s3ds=\E+B, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
             sgr0=\E[0;10m, tbc=\E[2g, u6=\E[%d;%dR, u7=\E[6n,
             u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%p1%dd,

       Entries may continue onto multiple lines by placing white space at the beginning of
       each  line  except  the  first.   Comments  may be included on lines beginning with
       ''#''.  Capabilities in terminfo are of three  types:  Boolean  capabilities  which
       indicate that the terminal has some particular feature, numeric capabilities giving
       the size of the terminal or the size of particular delays, and string capabilities,
       which  give a sequence which can be used to perform particular terminal operations.

   Types of Capabilities
       All capabilities have names.  For instance, the fact that  ANSI-standard  terminals
       have  automatic  margins (i.e., an automatic return and line-feed when the end of a
       line is reached) is indicated by the capability am.  Hence the description of  ansi
       includes  am.   Numeric  capabilities  are followed by the character '#' and then a
       positive value.  Thus cols, which indicates the number of columns the terminal has,
       gives the value '80' for ansi.  Values for numeric capabilities may be specified in
       decimal, octal or hexadecimal, using the C programming language conventions  (e.g.,
       255, 0377 and 0xff or 0xFF).

       Finally, string valued capabilities, such as el (clear to end of line sequence) are
       given by the two-character code, an '=', and then a string ending at the next  fol-
       lowing ','.

       A  number  of  escape  sequences are provided in the string valued capabilities for
       easy encoding of characters there.  Both \E and \e map to an ESCAPE  character,  ^x
       maps  to  a control-x for any appropriate x, and the sequences \n \l \r \t \b \f \s
       give a newline, line-feed, return, tab, backspace,  form-feed,  and  space.   Other
       escapes  include  \^ for ^, \\ for \, \, for comma, \: for :, and \0 for null.  (\0
       will produce \200, which does not terminate a string but behaves as a null  charac-
       ter on most terminals, providing CS7 is specified.  See stty(1).)  Finally, charac-
       ters may be given as three octal digits after a \.

       A delay in milliseconds may appear anywhere in a  string  capability,  enclosed  in
       $<..>  brackets,  as in el=\EK$<5>, and padding characters are supplied by tputs to
       provide this delay.  The delay must be a number with at most one decimal  place  of
       precision; it may be followed by suffixes '*' or '/' or both.  A '*' indicates that
       the padding required is proportional to the number of lines affected by the  opera-
       tion, and the amount given is the per-affected-unit padding required.  (In the case
       of insert character, the factor is still the number of lines affected.)   Normally,
       padding  is advisory if the device has the xon capability; it is used for cost com-
       putation but does not trigger delays.  A '/' suffix indicates that the  padding  is
       mandatory  and  forces  a delay of the given number of milliseconds even on devices
       for which xon is present to indicate flow control.

       Sometimes individual capabilities must be commented out.  To do this, put a  period
       before  the capability name.  For example, see the second ind in the example above.

   Fetching Compiled Descriptions
       If the environment variable TERMINFO is set, it is interpreted as the pathname of a
       directory containing the compiled description you are working on.  Only that direc-
       tory is searched.

       If TERMINFO is not set, the ncurses  version  of  the  terminfo  reader  code  will
       instead  look  in  the directory $HOME/.terminfo for a compiled description.  If it
       fails to find one there, and the environment variable TERMINFO_DIRS is set, it will
       interpret  the  contents of that variable as a list of colon- separated directories
       to  be  searched  (an  empty  entry  is  interpreted  as  a   command   to   search
       /usr/share/terminfo).   If  no  description  is  found  in any of the TERMINFO_DIRS
       directories, the fetch fails.

       If neither TERMINFO nor TERMINFO_DIRS is set, the last place tried will be the sys-
       tem terminfo directory, /usr/share/terminfo.

       (Neither  the  $HOME/.terminfo  lookups  nor TERMINFO_DIRS extensions are supported
       under stock System V terminfo/curses.)

   Preparing Descriptions
       We now outline how to prepare descriptions of terminals.  The most effective way to
       prepare  a terminal description is by imitating the description of a similar termi-
       nal in terminfo and to build up a description gradually, using partial descriptions
       with  vi  or some other screen-oriented program to check that they are correct.  Be
       aware that a very unusual terminal may expose deficiencies in the  ability  of  the
       terminfo  file  to describe it or bugs in the screen-handling code of the test pro-

       To get the padding for insert line right (if the terminal manufacturer did not doc-
       ument it) a severe test is to edit a large file at 9600 baud, delete 16 or so lines
       from the middle of the screen, then hit the 'u' key several times quickly.  If  the
       terminal messes up, more padding is usually needed.  A similar test can be used for
       insert character.

   Basic Capabilities
       The number of columns on each line for the terminal is given by  the  cols  numeric
       capability.   If  the  terminal is a CRT, then the number of lines on the screen is
       given by the lines capability.  If the terminal wraps around to  the  beginning  of
       the next line when it reaches the right margin, then it should have the am capabil-
       ity.  If the terminal can clear its screen, leaving the cursor in  the  home  posi-
       tion,  then  this  is  given by the clear string capability.  If the terminal over-
       strikes (rather than clearing a position when a character is struck over)  then  it
       should  have  the  os  capability.  If the terminal is a printing terminal, with no
       soft copy unit, give it both hc and os.  (os applies to  storage  scope  terminals,
       such  as  TEKTRONIX 4010 series, as well as hard copy and APL terminals.)  If there
       is a code to move the cursor to the left edge of the current row, give this as  cr.
       (Normally  this will be carriage return, control M.)  If there is a code to produce
       an audible signal (bell, beep, etc) give this as bel.

       If there is a code to move the cursor one position to the left (such as  backspace)
       that  capability  should  be given as cub1.  Similarly, codes to move to the right,
       up, and down should be given as cuf1, cuu1, and cud1.  These local  cursor  motions
       should  not  alter the text they pass over, for example, you would not normally use
       'cuf1= ' because the space would erase the character moved over.

       A very important point here is that the local cursor motions  encoded  in  terminfo
       are  undefined  at the left and top edges of a CRT terminal.  Programs should never
       attempt to backspace around the left edge, unless bw is given, and never attempt to
       go  up  locally  off the top.  In order to scroll text up, a program will go to the
       bottom left corner of the screen and send the ind (index) string.

       To scroll text down, a program goes to the top left corner of the screen and  sends
       the  ri  (reverse  index) string.  The strings ind and ri are undefined when not on
       their respective corners of the screen.

       Parameterized versions of the scrolling sequences are indn and rin which  have  the
       same  semantics  as ind and ri except that they take one parameter, and scroll that
       many lines.  They are also undefined except at the appropriate edge of the  screen.

       The  am  capability tells whether the cursor sticks at the right edge of the screen
       when text is output, but this does not necessarily apply to a cuf1  from  the  last
       column.   The  only  local  motion  which is defined from the left edge is if bw is
       given, then a cub1 from the left edge will move to the right edge of  the  previous
       row.   If  bw  is not given, the effect is undefined.  This is useful for drawing a
       box around the edge of the  screen,  for  example.   If  the  terminal  has  switch
       selectable  automatic  margins,  the terminfo file usually assumes that this is on;
       i.e., am.  If the terminal has a command which moves to the  first  column  of  the
       next  line,  that command can be given as nel (newline).  It does not matter if the
       command clears the remainder of the current line, so if the terminal has no cr  and
       lf it may still be possible to craft a working nel out of one or both of them.

       These  capabilities  suffice to describe hard-copy and "glass-tty" terminals.  Thus
       the model 33 teletype is described as

       33|tty33|tty|model 33 teletype,
            bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,

       while the Lear Siegler ADM-3 is described as

       adm3|3|lsi adm3,
            am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
            ind=^J, lines#24,

   Parameterized Strings
       Cursor addressing and other  strings  requiring  parameters  in  the  terminal  are
       described  by  a parameterized string capability, with printf(3) like escapes %x in
       it.  For example, to address the cursor, the cup capability  is  given,  using  two
       parameters:  the row and column to address to.  (Rows and columns are numbered from
       zero and refer to the physical screen visible to the user, not to any  unseen  mem-
       ory.)  If the terminal has memory relative cursor addressing, that can be indicated
       by mrcup.

       The parameter mechanism uses a stack and special % codes to manipulate  it.   Typi-
       cally  a  sequence will push one of the parameters onto the stack and then print it
       in some format.  Print (e.g., "%d") is a special case.  Other operations, including
       "%t"  pop  their  operand from the stack.  It is noted that more complex operations
       are often necessary, e.g., in the sgr string.

       The % encodings have the following meanings:

       %%   outputs '%'

            as in printf, flags are [-+#] and space.  Use a ':' to allow the next  charac-
            ter to be a '-' flag, avoiding interpreting "%-" as an operator.

       %c   print pop() like %c in printf

       %s   print pop() like %s in printf

            push i'th parameter

            set dynamic variable [a-z] to pop()

            get dynamic variable [a-z] and push it

            set static variable [a-z] to pop()

            get static variable [a-z] and push it

            The terms "static" and "dynamic" are misleading.  Historically, these are sim-
            ply two different sets of variables, whose values are not reset between  calls
            to  tparm.   However,  that  fact  is not documented in other implementations.
            Relying on it will adversely impact portability to other implementations.

       %'c' char constant c

            integer constant nn

       %l   push strlen(pop)

       %+ %- %* %/ %m
            arithmetic (%m is mod): push(pop() op pop())

       %& %| %^
            bit operations (AND, OR and exclusive-OR): push(pop() op pop())

       %= %> %<
            logical operations: push(pop() op pop())

       %A, %O
            logical AND and OR operations (for conditionals)

       %! %~
            unary operations (logical and bit complement): push(op pop())

       %i   add 1 to first two parameters (for ANSI terminals)

       %? expr %t thenpart %e elsepart %;
            This forms an if-then-else.  The %e elsepart is optional.  Usually the %? expr
            part  pushes a value onto the stack, and %t pops it from the stack, testing if
            it is nonzero (true).  If it is zero (false), control passes to the %e  (else)

            It is possible to form else-if's a la Algol 68:
            %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %;

            where ci are conditions, bi are bodies.

            Use  the  -f  option  of tic or infocmp to see the structure of if-the-else's.
            Some strings, e.g., sgr can be very complicated when written on one line.  The
            -f option splits the string into lines with the parts indented.

       Binary  operations  are in postfix form with the operands in the usual order.  That
       is, to get x-5 one would use "%gx%{5}%-".   %P  and  %g  variables  are  persistent
       across escape-string evaluations.

       Consider  the  HP2645,  which,  to  get  to  row  3 and column 12, needs to be sent
       \E&a12c03Y padded for 6 milliseconds.  Note that the order of the rows and  columns
       is  inverted here, and that the row and column are printed as two digits.  Thus its
       cup capability is "cup=6\E&%p2%2dc%p1%2dY".

       The Microterm ACT-IV needs the current row and column sent preceded by a  ^T,  with
       the  row  and column simply encoded in binary, "cup=^T%p1%c%p2%c".  Terminals which
       use "%c" need to be able to backspace the cursor (cub1), and to move the cursor  up
       one  line on the screen (cuu1).  This is necessary because it is not always safe to
       transmit \n ^D and \r, as the system may change or discard them.  (The library rou-
       tines dealing with terminfo set tty modes so that tabs are never expanded, so \t is
       safe to send.  This turns out to be essential for the Ann Arbor 4080.)

       A final example is the LSI ADM-3a, which uses row and  column  offset  by  a  blank
       character,  thus "cup=\E=%p1%' '%+%c%p2%' '%+%c".  After sending '\E=', this pushes
       the first parameter, pushes the ASCII value for a space (32),  adds  them  (pushing
       the sum on the stack in place of the two previous values) and outputs that value as
       a character.  Then the same is done for the second parameter.  More complex  arith-
       metic is possible using the stack.

   Cursor Motions
       If  the  terminal  has  a fast way to home the cursor (to very upper left corner of
       screen) then this can be given as home; similarly a fast  way  of  getting  to  the
       lower left-hand corner can be given as ll; this may involve going up with cuu1 from
       the home position, but a program should never  do  this  itself  (unless  ll  does)
       because it can make no assumption about the effect of moving up from the home posi-
       tion.  Note that the home position is the same as addressing to (0,0): to  the  top
       left  corner of the screen, not of memory.  (Thus, the \EH sequence on HP terminals
       cannot be used for home.)

       If the terminal has row or column absolute cursor addressing, these can be given as
       single  parameter capabilities hpa (horizontal position absolute) and vpa (vertical
       position absolute).  Sometimes these are shorter than the more general two  parame-
       ter  sequence  (as with the hp2645) and can be used in preference to cup.  If there
       are parameterized local motions (e.g., move n spaces to the  right)  these  can  be
       given  as cud, cub, cuf, and cuu with a single parameter indicating how many spaces
       to move.  These are primarily useful if the terminal does not have cup, such as the
       TEKTRONIX 4025.

       If  the  terminal  needs  to  be in a special mode when running a program that uses
       these capabilities, the codes to enter and exit this mode can be given as smcup and
       rmcup.   This  arises,  for example, from terminals like the Concept with more than
       one page of memory.  If the terminal has only memory relative cursor addressing and
       not screen relative cursor addressing, a one screen-sized window must be fixed into
       the terminal for cursor addressing to work properly.  This is  also  used  for  the
       TEKTRONIX  4025,  where smcup sets the command character to be the one used by ter-
       minfo.  If the smcup sequence will not restore the screen after an  rmcup  sequence
       is output (to the state prior to outputting rmcup), specify nrrmc.

   Area Clears
       If the terminal can clear from the current position to the end of the line, leaving
       the cursor where it is, this should be given as el.  If the terminal can clear from
       the  beginning  of  the  line to the current position inclusive, leaving the cursor
       where it is, this should be given as el1.  If  the  terminal  can  clear  from  the
       current position to the end of the display, then this should be given as ed.  Ed is
       only defined from the first column of a line.  (Thus, it  can  be  simulated  by  a
       request to delete a large number of lines, if a true ed is not available.)

   Insert/delete line and vertical motions
       If the terminal can open a new blank line before the line where the cursor is, this
       should be given as il1; this is done only from the first position of a  line.   The
       cursor  must  then  appear on the newly blank line.  If the terminal can delete the
       line which the cursor is on, then this should be given as dl1; this  is  done  only
       from  the  first position on the line to be deleted.  Versions of il1 and dl1 which
       take a single parameter and insert or delete that many lines can be given as il and

       If the terminal has a settable scrolling region (like the vt100) the command to set
       this can be described with the csr capability, which takes two parameters: the  top
       and  bottom lines of the scrolling region.  The cursor position is, alas, undefined
       after using this command.

       It is possible to get the effect of insert or delete line using csr on  a  properly
       chosen  region;  the sc and rc (save and restore cursor) commands may be useful for
       ensuring that your synthesized insert/delete  string  does  not  move  the  cursor.
       (Note  that  the ncurses(3X) library does this synthesis automatically, so you need
       not compose insert/delete strings for an entry with csr).

       Yet another way to construct insert and delete might be to  use  a  combination  of
       index  with  the  memory-lock  feature  found on some terminals (like the HP-700/90
       series, which however also has insert/delete).

       Inserting lines at the top or bottom of the screen can also be done using ri or ind
       on  many  terminals  without a true insert/delete line, and is often faster even on
       terminals with those features.

       The boolean non_dest_scroll_region should be set if each scrolling window is effec-
       tively a view port on a screen-sized canvas.  To test for this capability, create a
       scrolling region in the middle of the screen, write something to the  bottom  line,
       move the cursor to the top of the region, and do ri followed by dl1 or ind.  If the
       data scrolled off the bottom of the region by the ri re-appears, then scrolling  is
       non-destructive.   System  V and XSI Curses expect that ind, ri, indn, and rin will
       simulate destructive scrolling; their documentation cautions you not to define  csr
       unless  this  is  true.   This  curses  implementation  is more liberal and will do
       explicit erases after scrolling if ndstr is defined.

       If the terminal has the ability to define a window as part  of  memory,  which  all
       commands  affect,  it  should  be given as the parameterized string wind.  The four
       parameters are the starting and ending lines in memory and the starting and  ending
       columns in memory, in that order.

       If  the  terminal can retain display memory above, then the da capability should be
       given; if display memory can be retained below, then db  should  be  given.   These
       indicate  that deleting a line or scrolling may bring non-blank lines up from below
       or that scrolling back with ri may bring down non-blank lines.

   Insert/Delete Character
       There are two basic kinds of intelligent terminals with  respect  to  insert/delete
       character  which  can  be  described using terminfo.  The most common insert/delete
       character operations affect only the characters on the current line and shift char-
       acters  off  the end of the line rigidly.  Other terminals, such as the Concept 100
       and the Perkin Elmer Owl, make a distinction between typed and  untyped  blanks  on
       the  screen,  shifting  upon  an  insert  or delete only to an untyped blank on the
       screen which is either eliminated, or expanded to  two  untyped  blanks.   You  can
       determine the kind of terminal you have by clearing the screen and then typing text
       separated by cursor motions.  Type "abc    def" using  local  cursor  motions  (not
       spaces) between the "abc" and the "def".  Then position the cursor before the "abc"
       and put the terminal in insert mode.  If typing characters causes the rest  of  the
       line  to  shift rigidly and characters to fall off the end, then your terminal does
       not distinguish between blanks and untyped positions.  If the "abc" shifts over  to
       the  "def" which then move together around the end of the current line and onto the
       next as you insert, you have the second type of terminal, and should give the capa-
       bility  in, which stands for "insert null".  While these are two logically separate
       attributes (one line versus  multi-line  insert  mode,  and  special  treatment  of
       untyped  spaces)  we  have  seen no terminals whose insert mode cannot be described
       with the single attribute.

       Terminfo can describe both terminals which have an insert mode, and terminals which
       send  a simple sequence to open a blank position on the current line.  Give as smir
       the sequence to get into insert mode.  Give as rmir the sequence  to  leave  insert
       mode.   Now  give  as  ich1  any sequence needed to be sent just before sending the
       character to be inserted.  Most terminals with a true insert  mode  will  not  give
       ich1;  terminals  which  send  a  sequence to open a screen position should give it

       If your terminal has both, insert mode is usually preferable to ich1.  Technically,
       you  should  not give both unless the terminal actually requires both to be used in
       combination.  Accordingly, some non-curses applications get confused  if  both  are
       present;  the  symptom  is  doubled  characters  in  an  update using insert.  This
       requirement is now rare; most ich sequences do not require previous smir, and  most
       smir  insert  modes  do not require ich1 before each character.  Therefore, the new
       curses actually assumes this is the case and uses either rmir/smir or  ich/ich1  as
       appropriate  (but  not  both).   If you have to write an entry to be used under new
       curses for a terminal old enough to need both, include the rmir/smir  sequences  in

       If  post  insert  padding is needed, give this as a number of milliseconds in ip (a
       string option).  Any other sequence which may need to be sent after an insert of  a
       single character may also be given in ip.  If your terminal needs both to be placed
       into an 'insert mode' and a special code to precede each inserted  character,  then
       both  smir/rmir  and ich1 can be given, and both will be used.  The ich capability,
       with one parameter, n, will repeat the effects of ich1 n times.

       If padding is necessary between characters typed while not  in  insert  mode,  give
       this as a number of milliseconds padding in rmp.

       It  is occasionally necessary to move around while in insert mode to delete charac-
       ters on the same line (e.g., if there is a tab after the insertion  position).   If
       your terminal allows motion while in insert mode you can give the capability mir to
       speed up inserting in this case.  Omitting mir will affect only speed.  Some termi-
       nals  (notably  Datamedia's) must not have mir because of the way their insert mode

       Finally, you can specify dch1 to delete a single character, dch with one parameter,
       n,  to  delete  n  characters, and delete mode by giving smdc and rmdc to enter and
       exit delete mode (any mode the terminal needs to be placed in for dch1 to work).

       A command to erase n characters (equivalent to outputting n blanks  without  moving
       the cursor) can be given as ech with one parameter.

   Highlighting, Underlining, and Visible Bells
       If  your  terminal has one or more kinds of display attributes, these can be repre-
       sented in a number of different ways.  You should choose one display form as stand-
       out  mode,  representing  a good, high contrast, easy-on-the-eyes, format for high-
       lighting error messages and other  attention  getters.   (If  you  have  a  choice,
       reverse  video plus half-bright is good, or reverse video alone.)  The sequences to
       enter and exit standout mode are given as smso and rmso, respectively.  If the code
       to  change  into or out of standout mode leaves one or even two blank spaces on the
       screen, as the TVI 912 and Teleray 1061 do, then xmc should be given  to  tell  how
       many spaces are left.

       Codes  to  begin  underlining  and  end  underlining  can be given as smul and rmul
       respectively.  If the terminal has a code to underline the  current  character  and
       move  the  cursor  one  space to the right, such as the Microterm Mime, this can be
       given as uc.

       Other capabilities to enter various highlighting  modes  include  blink  (blinking)
       bold  (bold  or extra bright) dim (dim or half-bright) invis (blanking or invisible
       text) prot (protected) rev (reverse video) sgr0  (turn  off  all  attribute  modes)
       smacs  (enter alternate character set mode) and rmacs (exit alternate character set
       mode).  Turning on any of these modes singly may or may not turn off other modes.

       If there is a sequence to set arbitrary combinations of modes, this should be given
       as  sgr  (set  attributes),  taking  9  parameters.   Each parameter is either 0 or
       nonzero, as the corresponding attribute is on or off.  The  9  parameters  are,  in
       order:  standout,  underline,  reverse, blink, dim, bold, blank, protect, alternate
       character set.  Not all modes need be supported by sgr, only those for which corre-
       sponding separate attribute commands exist.

       For example, the DEC vt220 supports most of the modes:

                       tparm parameter   attribute    escape sequence

                       none              none         \E[0m
                       p1                standout     \E[0;1;7m
                       p2                underline    \E[0;4m
                       p3                reverse      \E[0;7m
                       p4                blink        \E[0;5m
                       p5                dim          not available
                       p6                bold         \E[0;1m
                       p7                invis        \E[0;8m
                       p8                protect      not used
                       p9                altcharset   ^O (off) ^N (on)

       We  begin each escape sequence by turning off any existing modes, since there is no
       quick way to determine whether they are active.  Standout is set up to be the  com-
       bination  of reverse and bold.  The vt220 terminal has a protect mode, though it is
       not commonly used in sgr because it protects characters  on  the  screen  from  the
       host's  erasures.  The altcharset mode also is different in that it is either ^O or
       ^N, depending on whether it is off or on.  If all modes are turned on, the  result-
       ing sequence is \E[0;1;4;5;7;8m^N.

       Some  sequences  are  common  to  different  modes.  For example, ;7 is output when
       either p1 or p3 is true, that is, if either standout or reverse  modes  are  turned

       Writing out the above sequences, along with their dependencies yields

                     sequence    when to output     terminfo translation

                     \E[0       always              \E[0
                     ;1         if p1 or p6         %?%p1%p6%|%t;1%;
                     ;4         if p2               %?%p2%|%t;4%;
                     ;5         if p4               %?%p4%|%t;5%;
                     ;7         if p1 or p3         %?%p1%p3%|%t;7%;
                     ;8         if p7               %?%p7%|%t;8%;
                     m          always              m
                     ^N or ^O   if p9 ^N, else ^O   %?%p9%t^N%e^O%;

       Putting this all together into the sgr sequence gives:


       Remember that if you specify sgr, you must also specify sgr0.  Also, some implemen-
       tations rely on sgr being given if sgr0 is, Not all  terminfo  entries  necessarily
       have  an  sgr  string,  however.   Many  terminfo  entries are derived from termcap
       entries which have no sgr string.  The only drawback to adding  an  sgr  string  is
       that termcap also assumes that sgr0 does not exit alternate character set mode.

       Terminals  with  the ''magic cookie'' glitch (xmc) deposit special ''cookies'' when
       they receive mode-setting sequences, which affect the display algorithm rather than
       having  extra  bits for each character.  Some terminals, such as the HP 2621, auto-
       matically leave standout mode when they move  to  a  new  line  or  the  cursor  is
       addressed.   Programs  using  standout mode should exit standout mode before moving
       the cursor or sending a newline, unless the msgr capability, asserting that  it  is
       safe to move in standout mode, is present.

       If  the  terminal  has a way of flashing the screen to indicate an error quietly (a
       bell replacement) then this can be given as flash; it must not move the cursor.

       If the cursor needs to be made more visible than normal when it is not on the  bot-
       tom  line  (to  make,  for example, a non-blinking underline into an easier to find
       block or blinking underline) give this sequence as cvvis.  If there  is  a  way  to
       make  the  cursor  completely  invisible, give that as civis.  The capability cnorm
       should be given which undoes the effects of both of these modes.

       If your terminal correctly generates underlined characters (with no  special  codes
       needed) even though it does not overstrike, then you should give the capability ul.
       If a character overstriking another leaves both characters on the  screen,  specify
       the  capability  os.  If overstrikes are erasable with a blank, then this should be
       indicated by giving eo.

   Keypad and Function Keys
       If the terminal has a keypad that transmits codes when the keys are  pressed,  this
       information  can  be given.  Note that it is not possible to handle terminals where
       the keypad only works in local (this applies, for example, to the unshifted HP 2621
       keys).   If  the keypad can be set to transmit or not transmit, give these codes as
       smkx and rmkx.  Otherwise the keypad is assumed to always transmit.  The codes sent
       by the left arrow, right arrow, up arrow, down arrow, and home keys can be given as
       kcub1, kcuf1, kcuu1, kcud1, and khome respectively.  If  there  are  function  keys
       such  as f0, f1, ..., f10, the codes they send can be given as kf0, kf1, ..., kf10.
       If these keys have labels other than the default f0 through f10, the labels can  be
       given  as lf0, lf1, ..., lf10.  The codes transmitted by certain other special keys
       can be given: kll (home down), kbs (backspace), ktbc (clear all tabs), kctab (clear
       the tab stop in this column), kclr (clear screen or erase key), kdch1 (delete char-
       acter), kdl1 (delete line), krmir (exit insert mode), kel (clear to end  of  line),
       ked  (clear  to end of screen), kich1 (insert character or enter insert mode), kil1
       (insert line), knp (next page), kpp (previous page),  kind  (scroll  forward/down),
       kri  (scroll  backward/up),  khts (set a tab stop in this column).  In addition, if
       the keypad has a 3 by 3 array of keys including the four arrow keys, the other five
       keys  can  be given as ka1, ka3, kb2, kc1, and kc3.  These keys are useful when the
       effects of a 3 by 3 directional pad are needed.

       Strings to program function keys can be given as pfkey, pfloc, and pfx.   A  string
       to  program  screen labels should be specified as pln.  Each of these strings takes
       two parameters: the function key number to program (from 0 to 10) and the string to
       program it with.  Function key numbers out of this range may program undefined keys
       in a terminal dependent manner.  The difference between the  capabilities  is  that
       pfkey  causes  pressing  the  given key to be the same as the user typing the given
       string; pfloc causes the string to be executed by the terminal in  local;  and  pfx
       causes the string to be transmitted to the computer.

       The  capabilities  nlab,  lw and lh define the number of programmable screen labels
       and their width and height.  If there are commands to turn the labels on  and  off,
       give  them  in  smln  and  rmln.   smln  is  normally  output after one or more pln
       sequences to make sure that the change becomes visible.

   Tabs and Initialization
       If the terminal has hardware tabs, the command to advance to the next tab stop  can
       be given as ht (usually control I).  A ''back-tab'' command which moves leftward to
       the preceding tab stop can be given as cbt.  By convention, if the  teletype  modes
       indicate that tabs are being expanded by the computer rather than being sent to the
       terminal, programs should not use ht or cbt even if they  are  present,  since  the
       user  may  not  have the tab stops properly set.  If the terminal has hardware tabs
       which are initially set every n spaces when the terminal is powered up, the numeric
       parameter  it  is given, showing the number of spaces the tabs are set to.  This is
       normally used by the tset command to determine whether to set the mode for hardware
       tab  expansion,  and  whether  to set the tab stops.  If the terminal has tab stops
       that can be saved in non-volatile memory, the terminfo description can assume  that
       they are properly set.

       Other capabilities include is1, is2, and is3, initialization strings for the termi-
       nal, iprog, the path name of a program to be run to initialize  the  terminal,  and
       if,  the  name of a file containing long initialization strings.  These strings are
       expected to set the terminal into modes consistent with the rest  of  the  terminfo
       description.   They  are  normally  sent to the terminal, by the init option of the
       tput program, each time the user logs in.  They will be printed  in  the  following

              run the program

              output is1 is2

              set the margins using
                     mgc, smgl and smgr

              set tabs using
                     tbc and hts

              print the file

              and finally
                     output is3.

       Most initialization is done with is2.  Special terminal modes can be set up without
       duplicating strings by putting the common sequences in is2 and special cases in is1
       and is3.

       A  set  of  sequences  that does a harder reset from a totally unknown state can be
       given as rs1, rs2, rf and rs3, analogous to is1 , is2 , if  and  is3  respectively.
       These strings are output by the reset program, which is used when the terminal gets
       into a wedged state.  Commands are normally placed in rs1, rs2 rs3 and rf  only  if
       they  produce annoying effects on the screen and are not necessary when logging in.
       For example, the command to set the vt100 into 80-column  mode  would  normally  be
       part  of  is2,  but  it causes an annoying glitch of the screen and is not normally
       needed since the terminal is usually already in 80 column mode.

       The reset program writes strings including iprog, etc., in the same  order  as  the
       init program, using rs1, etc., instead of is1, etc.  If any of rs1, rs2, rs3, or rf
       reset capability strings are missing, the reset program falls back upon the  corre-
       sponding initialization capability string.

       If  there  are commands to set and clear tab stops, they can be given as tbc (clear
       all tab stops) and hts (set a tab stop in the current column of every row).   If  a
       more  complex sequence is needed to set the tabs than can be described by this, the
       sequence can be placed in is2 or if.

   Delays and Padding
       Many older and slower terminals do not support either XON/XOFF or DTR  handshaking,
       including  hard  copy terminals and some very archaic CRTs (including, for example,
       DEC VT100s).  These may require padding characters after certain cursor motions and
       screen changes.

       If   the  terminal  uses  xon/xoff  handshaking  for  flow  control  (that  is,  it
       automatically emits ^S back to the host when its input buffers are close to  full),
       set  xon.  This capability suppresses the emission of padding.  You can also set it
       for memory-mapped console devices effectively that  do  not  have  a  speed  limit.
       Padding information should still be included so that routines can make better deci-
       sions about relative costs, but actual pad characters will not be transmitted.

       If pb (padding baud rate) is given, padding is suppressed at baud rates  below  the
       value  of pb.  If the entry has no padding baud rate, then whether padding is emit-
       ted or not is completely controlled by xon.

       If the terminal requires other than a null (zero) character as a pad, then this can
       be given as pad.  Only the first character of the pad string is used.

   Status Lines
       Some  terminals  have an extra 'status line' which is not normally used by software
       (and thus not counted in the terminal's lines capability).

       The simplest case is a status line which is cursor-addressable but not part of  the
       main  scrolling  region  on  the screen; the Heathkit H19 has a status line of this
       kind, as would a 24-line VT100 with a 23-line scrolling region set up  on  initial-
       ization.  This situation is indicated by the hs capability.

       Some  terminals with status lines need special sequences to access the status line.
       These may be expressed as a string with single parameter tsl which takes the cursor
       to  a  given zero-origin column on the status line.  The capability fsl must return
       to the main-screen cursor positions before the last tsl.  You may need to embed the
       string  values of sc (save cursor) and rc (restore cursor) in tsl and fsl to accom-
       plish this.

       The status line is normally assumed to be the same width as the width of the termi-
       nal.  If this is untrue, you can specify it with the numeric capability wsl.

       A command to erase or blank the status line may be specified as dsl.

       The  boolean  capability  eslok  specifies  that escape sequences, tabs, etc., work
       ordinarily in the status line.

       The ncurses implementation does not yet use any of these  capabilities.   They  are
       documented here in case they ever become important.

   Line Graphics
       Many  terminals  have  alternate character sets useful for forms-drawing.  Terminfo
       and curses build in support for the drawing characters supported by the VT100, with
       some  characters  from  the AT&T 4410v1 added.  This alternate character set may be
       specified by the acsc capability.

                Glyph                      ACS                    Ascii              VT100
                 Name                      Name                   Default            Name
       UK pound sign                       ACS_STERLING           f                  }
       arrow pointing down                 ACS_DARROW             v                  .
       arrow pointing left                 ACS_LARROW             <                  ,
       arrow pointing right                ACS_RARROW             >                  +
       arrow pointing up                   ACS_UARROW             ^                  -
       board of squares                    ACS_BOARD              #                  h
       bullet                              ACS_BULLET             o                  ~
       checker board (stipple)             ACS_CKBOARD            :                  a
       degree symbol                       ACS_DEGREE             \                  f
       diamond                             ACS_DIAMOND            +                  '
       greater-than-or-equal-to            ACS_GEQUAL             >                  z
       greek pi                            ACS_PI                 *                  {
       horizontal line                     ACS_HLINE              -                  q
       lantern symbol                      ACS_LANTERN            #                  i

       large plus or crossover             ACS_PLUS               +                  n
       less-than-or-equal-to               ACS_LEQUAL             <                  y
       lower left corner                   ACS_LLCORNER           +                  m
       lower right corner                  ACS_LRCORNER           +                  j
       not-equal                           ACS_NEQUAL             !                  |
       plus/minus                          ACS_PLMINUS            #                  g
       scan line 1                         ACS_S1                 ~                  o
       scan line 3                         ACS_S3                 -                  p
       scan line 7                         ACS_S7                 -                  r
       scan line 9                         ACS_S9                 _                  s
       solid square block                  ACS_BLOCK              #                  0
       tee pointing down                   ACS_TTEE               +                  w
       tee pointing left                   ACS_RTEE               +                  u
       tee pointing right                  ACS_LTEE               +                  t
       tee pointing up                     ACS_BTEE               +                  v
       upper left corner                   ACS_ULCORNER           +                  l
       upper right corner                  ACS_URCORNER           +                  k
       vertical line                       ACS_VLINE              |                  x

       The best way to define a new device's graphics set is to add a column to a copy  of
       this  table  for  your  terminal,  giving the character which (when emitted between
       smacs/rmacs switches) will be rendered as the corresponding graphic.  Then read off
       the VT100/your terminal character pairs right to left in sequence; these become the
       ACSC string.

   Color Handling
       Most color terminals are either 'Tektronix-like' or 'HP-like'.  Tektronix-like ter-
       minals  have  a predefined set of N colors (where N usually 8), and can set charac-
       ter-cell foreground and background characters independently, mixing them into N * N
       color-pairs.   On HP-like terminals, the use must set each color pair up separately
       (foreground and background are not independently settable).  Up  to  M  color-pairs
       may  be set up from 2*M different colors.  ANSI-compatible terminals are Tektronix-

       Some basic color capabilities are independent of the  color  method.   The  numeric
       capabilities colors and pairs specify the maximum numbers of colors and color-pairs
       that can be displayed simultaneously.  The op (original pair) string  resets  fore-
       ground  and  background  colors  to  their default values for the terminal.  The oc
       string resets all colors or color-pairs to their default values for  the  terminal.
       Some  terminals  (including many PC terminal emulators) erase screen areas with the
       current background color rather than the power-up default background; these  should
       have the boolean capability bce.

       To  change the current foreground or background color on a Tektronix-type terminal,
       use setaf (set ANSI foreground) and setab (set ANSI background) or setf (set  fore-
       ground)  and  setb  (set  background).  These take one parameter, the color number.
       The SVr4 documentation describes only setaf/setab; the XPG4 draft says that "If the
       terminal  supports  ANSI  escape  sequences  to set background and foreground, they
       should be coded as setaf and setab, respectively.  If the terminal  supports  other
       escape sequences to set background and foreground, they should be coded as setf and
       setb, respectively.  The vidputs() function and the refresh functions use setaf and
       setab if they are defined."

       The  setaf/setab  and  setf/setb  capabilities take a single numeric argument each.
       Argument values 0-7 of setaf/setab are portably defined as follows (the middle col-
       umn  is  the  symbolic  #define  available  in the header for the curses or ncurses
       libraries).  The terminal hardware is free to map these as it likes,  but  the  RGB
       values indicate normal locations in color space.

                          Color       #define       Value       RGB
                          black     COLOR_BLACK       0     0, 0, 0
                          red       COLOR_RED         1     max,0,0
                          green     COLOR_GREEN       2     0,max,0

                          yellow    COLOR_YELLOW      3     max,max,0
                          blue      COLOR_BLUE        4     0,0,max
                          magenta   COLOR_MAGENTA     5     max,0,max
                          cyan      COLOR_CYAN        6     0,max,max
                          white     COLOR_WHITE       7     max,max,max

       The  argument  values  of setf/setb historically correspond to a different mapping,

                          Color       #define       Value       RGB
                          black     COLOR_BLACK       0     0, 0, 0
                          blue      COLOR_BLUE        1     0,0,max
                          green     COLOR_GREEN       2     0,max,0
                          cyan      COLOR_CYAN        3     0,max,max
                          red       COLOR_RED         4     max,0,0
                          magenta   COLOR_MAGENTA     5     max,0,max
                          yellow    COLOR_YELLOW      6     max,max,0
                          white     COLOR_WHITE       7     max,max,max
       It is important to not confuse  the  two  sets  of  color  capabilities;  otherwise
       red/blue will be interchanged on the display.

       On  an  HP-like  terminal,  use scp with a color-pair number parameter to set which
       color pair is current.

       On a Tektronix-like terminal, the capability ccc may be present  to  indicate  that
       colors can be modified.  If so, the initc capability will take a color number (0 to
       colors - 1)and three more parameters which describe the color.  These three parame-
       ters default to being interpreted as RGB (Red, Green, Blue) values.  If the boolean
       capability hls is present, they are instead as  HLS  (Hue,  Lightness,  Saturation)
       indices.  The ranges are terminal-dependent.

       On  an  HP-like  terminal,  initp  may  give a capability for changing a color-pair
       value.  It will take seven parameters; a color-pair number (0 to  max_pairs  -  1),
       and  two  triples  describing  first  background and then foreground colors.  These
       parameters must be (Red, Green, Blue) or (Hue, Lightness, Saturation) depending  on

       On  some  color  terminals, colors collide with highlights.  You can register these
       collisions with the ncv capability.  This is a bit-mask of  attributes  not  to  be
       used when colors are enabled.  The correspondence with the attributes understood by
       curses is as follows:

                                  Attribute      Bit   Decimal
                                  A_STANDOUT     0     1
                                  A_UNDERLINE    1     2
                                  A_REVERSE      2     4
                                  A_BLINK        3     8
                                  A_DIM          4     16
                                  A_BOLD         5     32
                                  A_INVIS        6     64
                                  A_PROTECT      7     128
                                  A_ALTCHARSET   8     256

       For example, on many IBM PC consoles, the underline  attribute  collides  with  the
       foreground color blue and is not available in color mode.  These should have an ncv
       capability of 2.

       SVr4 curses does nothing with ncv, ncurses recognizes it and optimizes  the  output
       in favor of colors.

       If the terminal requires other than a null (zero) character as a pad, then this can
       be given as pad.  Only the first character of the pad string is used.  If the  ter-
       minal does not have a pad character, specify npc.  Note that ncurses implements the
       termcap-compatible PC variable; though the application may set this value to  some-
       thing  other than a null, ncurses will test npc first and use napms if the terminal
       has no pad character.

       If the terminal can move up or down half a line, this  can  be  indicated  with  hu
       (half-line  up) and hd (half-line down).  This is primarily useful for superscripts
       and subscripts on hard-copy terminals.  If a hard-copy terminal can  eject  to  the
       next page (form feed), give this as ff (usually control L).

       If  there is a command to repeat a given character a given number of times (to save
       time transmitting a large number of identical characters)  this  can  be  indicated
       with  the  parameterized  string  rep.   The first parameter is the character to be
       repeated  and  the  second  is  the  number  of  times   to   repeat   it.    Thus,
       tparm(repeat_char, 'x', 10) is the same as 'xxxxxxxxxx'.

       If  the terminal has a settable command character, such as the TEKTRONIX 4025, this
       can be indicated with cmdch.  A prototype command character is chosen which is used
       in  all  capabilities.  This character is given in the cmdch capability to identify
       it.  The following convention is supported on some UNIX systems: The environment is
       to  be  searched  for a CC variable, and if found, all occurrences of the prototype
       character are replaced with the character in the environment variable.

       Terminal descriptions that do not represent a specific kind of known terminal, such
       as  switch,  dialup, patch, and network, should include the gn (generic) capability
       so that programs can complain that they do not know how to talk  to  the  terminal.
       (This  capability  does  not  apply  to virtual terminal descriptions for which the
       escape sequences are known.)

       If the terminal has a ''meta key'' which acts as a shift key, setting the  8th  bit
       of any character transmitted, this fact can be indicated with km.  Otherwise, soft-
       ware will assume that the 8th bit is parity and it will  usually  be  cleared.   If
       strings  exist  to turn this ''meta mode'' on and off, they can be given as smm and

       If the terminal has more lines of memory than will fit on the screen at  once,  the
       number of lines of memory can be indicated with lm.  A value of lm#0 indicates that
       the number of lines is not fixed, but that there is still more memory than fits  on
       the screen.

       If  the  terminal  is one of those supported by the UNIX virtual terminal protocol,
       the terminal number can be given as vt.

       Media copy strings which control an auxiliary printer connected to the terminal can
       be  given  as mc0: print the contents of the screen, mc4: turn off the printer, and
       mc5: turn on the printer.  When the printer is on, all text sent  to  the  terminal
       will be sent to the printer.  It is undefined whether the text is also displayed on
       the terminal screen when the printer is on.  A variation mc5p takes one  parameter,
       and  leaves  the  printer  on for as many characters as the value of the parameter,
       then turns the printer off.  The  parameter  should  not  exceed  255.   All  text,
       including mc4, is transparently passed to the printer while an mc5p is in effect.

   Glitches and Braindamage
       Hazeltine terminals, which do not allow '~' characters to be displayed should indi-
       cate hz.

       Terminals which ignore a line-feed immediately after an am wrap, such as  the  Con-
       cept and vt100, should indicate xenl.

       If  el is required to get rid of standout (instead of merely writing normal text on
       top of it), xhp should be given.

       Teleray terminals, where tabs turn all characters  moved  over  to  blanks,  should
       indicate  xt  (destructive  tabs).   Note:  the  variable  indicating  this  is now
       'dest_tabs_magic_smso'; in older versions, it was teleray_glitch.  This  glitch  is
       also  taken  to  mean  that  it  is not possible to position the cursor on top of a
       ''magic cookie'', that to erase standout mode it is instead necessary to use delete
       and insert line.  The ncurses implementation ignores this glitch.

       The Beehive Superbee, which is unable to correctly transmit the escape or control C
       characters, has xsb, indicating that the f1 key is used for escape and f2 for  con-
       trol  C.   (Only  certain Superbees have this problem, depending on the ROM.)  Note
       that in older terminfo versions, this capability was called 'beehive_glitch'; it is
       now 'no_esc_ctl_c'.

       Other  specific  terminal  problems may be corrected by adding more capabilities of
       the form xx.

   Similar Terminals
       If there are two very similar terminals, one (the variant) can be defined as  being
       just  like  the other (the base) with certain exceptions.  In the definition of the
       variant, the string capability use can be given with the name of the base terminal.
       The capabilities given before use override those in the base type named by use.  If
       there are multiple use capabilities, they are merged in reverse  order.   That  is,
       the  rightmost  use  reference is processed first, then the one to its left, and so
       forth.  Capabilities given explicitly in the entry override those brought in by use

       A  capability  can be canceled by placing xx@ to the left of the use reference that
       imports it, where xx is the capability.  For example, the entry

                   2621-nl, smkx@, rmkx@, use=2621,

       defines a 2621-nl that does not have the smkx or rmkx capabilities, and hence  does
       not  turn  on the function key labels when in visual mode.  This is useful for dif-
       ferent modes for a terminal, or for different user preferences.

   Pitfalls of Long Entries
       Long terminfo entries are unlikely to be a problem; to  date,  no  entry  has  even
       approached  terminfo's  4096-byte string-table maximum.  Unfortunately, the termcap
       translations are much more strictly limited (to 1023 bytes), thus termcap  transla-
       tions of long terminfo entries can cause problems.

       The man pages for 4.3BSD and older versions of tgetent() instruct the user to allo-
       cate a 1024-byte buffer for the termcap entry.  The entry gets  null-terminated  by
       the termcap library, so that makes the maximum safe length for a termcap entry 1k-1
       (1023) bytes.  Depending on what the application and the termcap library being used
       does,  and  where in the termcap file the terminal type that tgetent() is searching
       for is, several bad things can happen.

       Some termcap libraries print a warning message or exit if they find an entry that's
       longer  than  1023 bytes; others do not; others truncate the entries to 1023 bytes.
       Some application programs allocate more than the recommended  1K  for  the  termcap
       entry; others do not.

       Each  termcap  entry has two important sizes associated with it: before "tc" expan-
       sion, and after "tc" expansion.  "tc" is the capability that tacks on another term-
       cap  entry to the end of the current one, to add on its capabilities.  If a termcap
       entry does not use the "tc" capability, then of course  the  two  lengths  are  the

       The "before tc expansion" length is the most important one, because it affects more
       than just users of that particular terminal.  This is the length of the entry as it
       exists  in  /etc/termcap, minus the backslash-newline pairs, which tgetent() strips
       out while reading it.  Some termcap libraries strip off the final newline, too (GNU
       termcap does not).  Now suppose:

       *    a termcap entry before expansion is more than 1023 bytes long,

       *    and the application has only allocated a 1k buffer,

       *    and  the  termcap library (like the one in BSD/OS 1.1 and GNU) reads the whole
            entry into the buffer, no matter what its length, to see if it is the entry it

       *    and  tgetent() is searching for a terminal type that either is the long entry,
            appears in the termcap file after the long entry, or does not  appear  in  the
            file at all (so that tgetent() has to search the whole termcap file).

       Then tgetent() will overwrite memory, perhaps its stack, and probably core dump the
       program.  Programs like telnet are particularly  vulnerable;  modern  telnets  pass
       along values like the terminal type automatically.  The results are almost as unde-
       sirable with a termcap library, like SunOS 4.1.3 and Ultrix 4.4, that prints  warn-
       ing  messages  when  it  reads  an overly long termcap entry.  If a termcap library
       truncates long entries, like OSF/1 3.0, it is immune to dying here but will  return
       incorrect data for the terminal.

       The  "after  tc expansion" length will have a similar effect to the above, but only
       for people who actually set TERM to that terminal type, since tgetent()  only  does
       "tc"  expansion  once  it  is found the terminal type it was looking for, not while

       In summary, a termcap entry that is longer than 1023 bytes can  cause,  on  various
       combinations  of  termcap  libraries  and  applications,  a core dump, warnings, or
       incorrect operation.  If it is too long even before "tc" expansion,  it  will  have
       this  effect even for users of some other terminal types and users whose TERM vari-
       able does not have a termcap entry.

       When in -C (translate to termcap)  mode,  the  ncurses  implementation  of  tic(1M)
       issues  warning  messages  when  the  pre-tc length of a termcap translation is too
       long.  The -c (check) option also checks resolved (after tc expansion) lengths.

   Binary Compatibility
       It is not wise to count on portability of binary terminfo entries  between  commer-
       cial  UNIX  versions.   The problem is that there are at least two versions of ter-
       minfo (under HP-UX and AIX) which diverged from System V terminfo after  SVr1,  and
       have  added  extension capabilities to the string table that (in the binary format)
       collide with System V and XSI Curses extensions.

       Some SVr4 curses implementations, and all previous to SVr4, do not interpret the %A
       and %O operators in parameter strings.

       SVr4/XPG4 do not specify whether msgr licenses movement while in an alternate-char-
       acter-set mode (such modes may, among other things, map CR  and  NL  to  characters
       that  do  not  trigger  local motions).  The ncurses implementation ignores msgr in
       ALTCHARSET mode.  This raises the possibility that an  XPG4  implementation  making
       the opposite interpretation may need terminfo entries made for ncurses to have msgr
       turned off.

       The ncurses library  handles  insert-character  and  insert-character  modes  in  a
       slightly  non-standard  way to get better update efficiency.  See the Insert/Delete
       Character subsection above.

       The parameter substitutions for set_clock and display_clock are not  documented  in
       SVr4  or  the XSI Curses standard.  They are deduced from the documentation for the
       AT&T 505 terminal.

       Be careful assigning the kmous capability.  The ncurses wants to  interpret  it  as
       KEY_MOUSE,  for  use  by  terminals and emulators like xterm that can return mouse-
       tracking information in the keyboard-input stream.

       Different commercial ports of terminfo and curses support different subsets of  the
       XSI  Curses  standard and (in some cases) different extension sets.  Here is a sum-
       mary, accurate as of October 1995:

       SVR4, Solaris, ncurses -- These support all SVr4 capabilities.

       SGI -- Supports the SVr4 set, adds  one  undocumented  extended  string  capability

       SVr1,  Ultrix  --  These support a restricted subset of terminfo capabilities.  The
       booleans end with xon_xoff; the numerics with width_status_line;  and  the  strings
       with prtr_non.

       HP/UX  --  Supports  the  SVr1  subset,  plus  the  SVr[234]  numerics  num_labels,
       label_height, label_width, plus  function  keys  11  through  63,  plus  plab_norm,
       label_on, and label_off, plus some incompatible extensions in the string table.

       AIX -- Supports the SVr1 subset, plus function keys 11 through 63, plus a number of
       incompatible string table extensions.

       OSF -- Supports both the SVr4 set and the AIX extensions.

       /usr/share/terminfo/?/*  files containing terminal descriptions

       tic(1M), infocmp(1M), curses(3X), printf(3), term(5).

       Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.  Based on  pcurses  by  Pavel


Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2017-12-12 23:33 @ CrawledBy CCBot/2.0 (http://commoncrawl.org/faq/)
Valid XHTML 1.0!Valid CSS!