summaryrefslogtreecommitdiffstats
path: root/upstream/debian-bookworm/man5/terminfo.5
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/debian-bookworm/man5/terminfo.5')
-rw-r--r--upstream/debian-bookworm/man5/terminfo.53845
1 files changed, 3845 insertions, 0 deletions
diff --git a/upstream/debian-bookworm/man5/terminfo.5 b/upstream/debian-bookworm/man5/terminfo.5
new file mode 100644
index 00000000..50b7c182
--- /dev/null
+++ b/upstream/debian-bookworm/man5/terminfo.5
@@ -0,0 +1,3845 @@
+'\" t
+.\" DO NOT EDIT THIS FILE BY HAND!
+.\" It is generated from terminfo.head, ../../man/../include/Caps ../../man/../include/Caps-ncurses, and terminfo.tail.
+.\"
+.\" Note: this must be run through tbl before nroff.
+.\" The magic cookie on the first line triggers this under some man programs.
+.\"***************************************************************************
+.\" Copyright 2018-2020,2021 Thomas E. Dickey *
+.\" Copyright 1998-2016,2017 Free Software Foundation, Inc. *
+.\" *
+.\" Permission is hereby granted, free of charge, to any person obtaining a *
+.\" copy of this software and associated documentation files (the *
+.\" "Software"), to deal in the Software without restriction, including *
+.\" without limitation the rights to use, copy, modify, merge, publish, *
+.\" distribute, distribute with modifications, sublicense, and/or sell *
+.\" copies of the Software, and to permit persons to whom the Software is *
+.\" furnished to do so, subject to the following conditions: *
+.\" *
+.\" The above copyright notice and this permission notice shall be included *
+.\" in all copies or substantial portions of the Software. *
+.\" *
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+.\" *
+.\" Except as contained in this notice, the name(s) of the above copyright *
+.\" holders shall not be used in advertising or otherwise to promote the *
+.\" sale, use or other dealings in this Software without prior written *
+.\" authorization. *
+.\"***************************************************************************
+.\"
+.\" $Id: terminfo.head,v 1.42 2021/12/25 17:39:16 tom Exp $
+.TH terminfo 5 "" "" "File Formats"
+.ds n 5
+.ds d /etc/terminfo
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.ie n .IP \(bu 4
+.el .IP \(bu 2
+..
+.de NS
+.ie n .sp
+.el .sp .5
+.ie n .in +4
+.el .in +2
+.nf
+.ft C \" Courier
+..
+.de NE
+.fi
+.ft R
+.ie n .in -4
+.el .in -2
+..
+.SH NAME
+terminfo \- terminal capability database
+.SH SYNOPSIS
+\*d/*/*
+.SH DESCRIPTION
+.I Terminfo
+is a database describing terminals,
+used by screen-oriented programs such as
+\fBnvi\fP(1),
+\fBlynx\fP(1),
+\fBmutt\fP(1),
+and other curses applications,
+using high-level calls to libraries such as \fBncurses\fP(3NCURSES).
+It is also used via low-level calls by non-curses applications
+which may be screen-oriented (such as \fBclear\fP(1))
+or non-screen (such as \fBtabs\fP(1)).
+.PP
+.I 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.
+.PP
+This manual describes \fBncurses\fP
+version 6.4 (patch 20221231).
+.SS Terminfo Entry Syntax
+.PP
+Entries in
+.I terminfo
+consist of a sequence of fields:
+.bP
+Each field ends with a comma \*(``,\*(''
+(embedded commas may be
+escaped with a backslash or written as \*(``\\054\*('').
+.bP
+White space between fields is ignored.
+.bP
+The first field in a \fIterminfo\fP entry begins in the first column.
+.bP
+Newlines and leading whitespace (spaces or tabs)
+may be used for formatting entries for readability.
+These are removed from parsed entries.
+.IP
+The \fBinfocmp\fP \fB\-f\fP and \fB\-W\fP options rely on this to
+format if-then-else expressions,
+or to enforce maximum line-width.
+The resulting formatted terminal description can be read by \fBtic\fP.
+.bP
+The first field for each terminal gives the names which are known for the
+terminal, separated by \*(``|\*('' characters.
+.IP
+The first name given is the most common abbreviation for the terminal
+(its primary name),
+the last name given should be a long name fully identifying the terminal
+(see \fBlongname\fP(3X)),
+and all others are treated as synonyms (aliases) for the primary terminal name.
+.IP
+X/Open Curses advises that all names but the last should be in lower case
+and contain no blanks;
+the last name may well contain upper case and blanks for readability.
+.IP
+This implementation is not so strict;
+it allows mixed case in the primary name and aliases.
+If the last name has no embedded blanks,
+it allows that to be both an alias and a verbose name
+(but will warn about this ambiguity).
+.bP
+Lines beginning with a \*(``#\*('' in the first column are treated as comments.
+.IP
+While comment lines are legal at any point, the output of \fBcaptoinfo\fP
+and \fBinfotocap\fP (aliases for \fBtic\fP)
+will move comments so they occur only between entries.
+.PP
+Terminal names (except for the last, verbose entry) should
+be chosen using the following 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:
+.PP
+.TS
+center ;
+l c l
+l l l.
+\fBSuffix Meaning Example\fP
+\-\fInn\fP Number of lines on the screen aaa\-60
+\-\fIn\fPp 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
+.TE
+.PP
+For more on terminal naming conventions, see the \fBterm\fP(7) manual page.
+.SS Terminfo Capabilities Syntax
+.PP
+The terminfo entry consists of several \fIcapabilities\fP,
+i.e., features that the terminal has,
+or methods for exercising the terminal's features.
+.PP
+After the first field (giving the name(s) of the terminal entry),
+there should be one or more \fIcapability\fP fields.
+These are boolean, numeric or string names with corresponding values:
+.bP
+Boolean capabilities are true when present, false when absent.
+There is no explicit value for boolean capabilities.
+.bP
+Numeric capabilities have a \*(``#\*('' following the name,
+then an unsigned decimal integer value.
+.bP
+String capabilities have a \*(``=\*('' following the name,
+then an string of characters making up the capability value.
+.IP
+String capabilities can be split into multiple lines,
+just as the fields comprising a terminal entry can be
+split into multiple lines.
+While blanks between fields are ignored,
+blanks embedded within a string value are retained,
+except for leading blanks on a line.
+.PP
+Any capability can be \fIcanceled\fP,
+i.e., suppressed from the terminal entry,
+by following its name with \*(``@\*(''
+rather than a capability value.
+.SS Similar Terminals
+.PP
+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 \fBuse\fP can be given with
+the name of the base terminal:
+.bP
+The capabilities given before
+.B use
+override those in the base type named by
+.BR use .
+.bP
+If there are multiple \fBuse\fP capabilities, they are merged in reverse order.
+That is, the rightmost \fBuse\fP reference is processed first, then the one to
+its left, and so forth.
+.bP
+Capabilities given explicitly in the entry override
+those brought in by \fBuse\fP references.
+.PP
+A capability can be canceled by placing \fBxx@\fP to the left of the
+use reference that imports it, where \fIxx\fP is the capability.
+For example, the entry
+.RS
+.PP
+2621\-nl, smkx@, rmkx@, use=2621,
+.RE
+.PP
+defines a 2621\-nl that does not have the \fBsmkx\fP or \fBrmkx\fP capabilities,
+and hence does not turn on the function key labels when in visual mode.
+This is useful for different modes for a terminal, or for different
+user preferences.
+.PP
+An entry included via \fBuse\fP can contain canceled capabilities,
+which have the same effect as if those cancels were inline in the
+using terminal entry.
+.SS Predefined Capabilities
+.\" Head of terminfo man page ends here
+.ps -1
+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 \fBvariable\fR is the name by which the programmer (at the terminfo level)
+accesses the capability.
+
+The \fBcapname\fR 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
+.B termcap
+capability name (some capabilities are new, and have names which termcap
+did not originate).
+.P
+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
+.B 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:
+.TP
+(P)
+indicates that padding may be specified
+.TP
+#[1-9]
+in the description field indicates that the string is passed
+through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
+.IP
+If no parameters are listed in the description,
+passing the string through \fBtparm\fP(3X) may give unexpected results,
+e.g., if it contains percent (%%) signs.
+.TP
+(P*)
+indicates that padding may vary in proportion to the number of
+lines affected
+.TP
+(#\d\fIi\fP\u)
+indicates the \fIi\fP\uth\d parameter.
+
+.PP
+These are the boolean capabilities:
+
+.na
+.TS H
+center;
+c l l c
+c l l c
+lw25 lw7 lw2 lw20.
+\fBVariable Cap- TCap Description\fR
+\fBBooleans name Code\fR
+auto_left_margin bw bw T{
+cub1 wraps from column 0 to last column
+T}
+auto_right_margin am am T{
+terminal has automatic margins
+T}
+back_color_erase bce ut T{
+screen erased with background color
+T}
+can_change ccc cc T{
+terminal can re-define existing colors
+T}
+ceol_standout_glitch xhp xs T{
+standout not erased by overwriting (hp)
+T}
+col_addr_glitch xhpa YA T{
+only positive motion for hpa/mhpa caps
+T}
+cpi_changes_res cpix YF T{
+changing character pitch changes resolution
+T}
+cr_cancels_micro_mode crxm YB T{
+using cr turns off micro mode
+T}
+dest_tabs_magic_smso xt xt T{
+tabs destructive, magic so char (t1061)
+T}
+eat_newline_glitch xenl xn T{
+newline ignored after 80 cols (concept)
+T}
+erase_overstrike eo eo T{
+can erase overstrikes with a blank
+T}
+generic_type gn gn T{
+generic line type
+T}
+hard_copy hc hc T{
+hardcopy terminal
+T}
+hard_cursor chts HC T{
+cursor is hard to see
+T}
+has_meta_key km km T{
+Has a meta key (i.e., sets 8th-bit)
+T}
+has_print_wheel daisy YC T{
+printer needs operator to change character set
+T}
+has_status_line hs hs T{
+has extra status line
+T}
+hue_lightness_saturation hls hl T{
+terminal uses only HLS color notation (Tektronix)
+T}
+insert_null_glitch in in T{
+insert mode distinguishes nulls
+T}
+lpi_changes_res lpix YG T{
+changing line pitch changes resolution
+T}
+memory_above da da T{
+display may be retained above the screen
+T}
+memory_below db db T{
+display may be retained below the screen
+T}
+move_insert_mode mir mi T{
+safe to move while in insert mode
+T}
+move_standout_mode msgr ms T{
+safe to move while in standout mode
+T}
+needs_xon_xoff nxon nx T{
+padding will not work, xon/xoff required
+T}
+no_esc_ctlc xsb xb T{
+beehive (f1=escape, f2=ctrl C)
+T}
+no_pad_char npc NP T{
+pad character does not exist
+T}
+non_dest_scroll_region ndscr ND T{
+scrolling region is non-destructive
+T}
+non_rev_rmcup nrrmc NR T{
+smcup does not reverse rmcup
+T}
+over_strike os os T{
+terminal can overstrike
+T}
+prtr_silent mc5i 5i T{
+printer will not echo on screen
+T}
+row_addr_glitch xvpa YD T{
+only positive motion for vpa/mvpa caps
+T}
+semi_auto_right_margin sam YE T{
+printing in last column causes cr
+T}
+status_line_esc_ok eslok es T{
+escape can be used on the status line
+T}
+tilde_glitch hz hz T{
+cannot print ~'s (Hazeltine)
+T}
+transparent_underline ul ul T{
+underline character overstrikes
+T}
+xon_xoff xon xo T{
+terminal uses xon/xoff handshaking
+T}
+.TE
+.ad
+
+These are the numeric capabilities:
+
+.na
+.TS H
+center;
+c l l c
+c l l c
+lw25 lw7 lw2 lw20.
+\fBVariable Cap- TCap Description\fR
+\fBNumeric name Code\fR
+columns cols co T{
+number of columns in a line
+T}
+init_tabs it it T{
+tabs initially every # spaces
+T}
+label_height lh lh T{
+rows in each label
+T}
+label_width lw lw T{
+columns in each label
+T}
+lines lines li T{
+number of lines on screen or page
+T}
+lines_of_memory lm lm T{
+lines of memory if > line. 0 means varies
+T}
+magic_cookie_glitch xmc sg T{
+number of blank characters left by smso or rmso
+T}
+max_attributes ma ma T{
+maximum combined attributes terminal can handle
+T}
+max_colors colors Co T{
+maximum number of colors on screen
+T}
+max_pairs pairs pa T{
+maximum number of color-pairs on the screen
+T}
+maximum_windows wnum MW T{
+maximum number of definable windows
+T}
+no_color_video ncv NC T{
+video attributes that cannot be used with colors
+T}
+num_labels nlab Nl T{
+number of labels on screen
+T}
+padding_baud_rate pb pb T{
+lowest baud rate where padding needed
+T}
+virtual_terminal vt vt T{
+virtual terminal number (CB/unix)
+T}
+width_status_line wsl ws T{
+number of columns in status line
+T}
+.TE
+.ad
+
+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.
+
+.na
+.TS H
+center;
+c l l c
+c l l c
+lw25 lw7 lw2 lw20.
+\fBVariable Cap- TCap Description\fR
+\fBNumeric name Code\fR
+bit_image_entwining bitwin Yo T{
+number of passes for each bit-image row
+T}
+bit_image_type bitype Yp T{
+type of bit-image device
+T}
+buffer_capacity bufsz Ya T{
+numbers of bytes buffered before printing
+T}
+buttons btns BT T{
+number of buttons on mouse
+T}
+dot_horz_spacing spinh Yc T{
+spacing of dots horizontally in dots per inch
+T}
+dot_vert_spacing spinv Yb T{
+spacing of pins vertically in pins per inch
+T}
+max_micro_address maddr Yd T{
+maximum value in micro_..._address
+T}
+max_micro_jump mjump Ye T{
+maximum value in parm_..._micro
+T}
+micro_col_size mcs Yf T{
+character step size when in micro mode
+T}
+micro_line_size mls Yg T{
+line step size when in micro mode
+T}
+number_of_pins npins Yh T{
+numbers of pins in print-head
+T}
+output_res_char orc Yi T{
+horizontal resolution in units per line
+T}
+output_res_horz_inch orhi Yk T{
+horizontal resolution in units per inch
+T}
+output_res_line orl Yj T{
+vertical resolution in units per line
+T}
+output_res_vert_inch orvi Yl T{
+vertical resolution in units per inch
+T}
+print_rate cps Ym T{
+print rate in characters per second
+T}
+wide_char_size widcs Yn T{
+character step size when in double wide mode
+T}
+.TE
+.ad
+
+These are the string capabilities:
+
+.na
+.TS H
+center;
+c l l c
+c l l c
+lw25 lw7 lw2 lw20.
+\fBVariable Cap- TCap Description\fR
+\fBString name Code\fR
+acs_chars acsc ac T{
+graphics charset pairs, based on vt100
+T}
+back_tab cbt bt T{
+back tab (P)
+T}
+bell bel bl T{
+audible signal (bell) (P)
+T}
+carriage_return cr cr T{
+carriage return (P*) (P*)
+T}
+change_char_pitch cpi ZA T{
+Change number of characters per inch to #1
+T}
+change_line_pitch lpi ZB T{
+Change number of lines per inch to #1
+T}
+change_res_horz chr ZC T{
+Change horizontal resolution to #1
+T}
+change_res_vert cvr ZD T{
+Change vertical resolution to #1
+T}
+change_scroll_region csr cs T{
+change region to line #1 to line #2 (P)
+T}
+char_padding rmp rP T{
+like ip but when in insert mode
+T}
+clear_all_tabs tbc ct T{
+clear all tab stops (P)
+T}
+clear_margins mgc MC T{
+clear right and left soft margins
+T}
+clear_screen clear cl T{
+clear screen and home cursor (P*)
+T}
+clr_bol el1 cb T{
+Clear to beginning of line
+T}
+clr_eol el ce T{
+clear to end of line (P)
+T}
+clr_eos ed cd T{
+clear to end of screen (P*)
+T}
+column_address hpa ch T{
+horizontal position #1, absolute (P)
+T}
+command_character cmdch CC T{
+terminal settable cmd character in prototype !?
+T}
+create_window cwin CW T{
+define a window #1 from #2,#3 to #4,#5
+T}
+cursor_address cup cm T{
+move to row #1 columns #2
+T}
+cursor_down cud1 do T{
+down one line
+T}
+cursor_home home ho T{
+home cursor (if no cup)
+T}
+cursor_invisible civis vi T{
+make cursor invisible
+T}
+cursor_left cub1 le T{
+move left one space
+T}
+cursor_mem_address mrcup CM T{
+memory relative cursor addressing, move to row #1 columns #2
+T}
+cursor_normal cnorm ve T{
+make cursor appear normal (undo civis/cvvis)
+T}
+cursor_right cuf1 nd T{
+non-destructive space (move right one space)
+T}
+cursor_to_ll ll ll T{
+last line, first column (if no cup)
+T}
+cursor_up cuu1 up T{
+up one line
+T}
+cursor_visible cvvis vs T{
+make cursor very visible
+T}
+define_char defc ZE T{
+Define a character #1, #2 dots wide, descender #3
+T}
+delete_character dch1 dc T{
+delete character (P*)
+T}
+delete_line dl1 dl T{
+delete line (P*)
+T}
+dial_phone dial DI T{
+dial number #1
+T}
+dis_status_line dsl ds T{
+disable status line
+T}
+display_clock dclk DK T{
+display clock
+T}
+down_half_line hd hd T{
+half a line down
+T}
+ena_acs enacs eA T{
+enable alternate char set
+T}
+enter_alt_charset_mode smacs as T{
+start alternate character set (P)
+T}
+enter_am_mode smam SA T{
+turn on automatic margins
+T}
+enter_blink_mode blink mb T{
+turn on blinking
+T}
+enter_bold_mode bold md T{
+turn on bold (extra bright) mode
+T}
+enter_ca_mode smcup ti T{
+string to start programs using cup
+T}
+enter_delete_mode smdc dm T{
+enter delete mode
+T}
+enter_dim_mode dim mh T{
+turn on half-bright mode
+T}
+enter_doublewide_mode swidm ZF T{
+Enter double-wide mode
+T}
+enter_draft_quality sdrfq ZG T{
+Enter draft-quality mode
+T}
+enter_insert_mode smir im T{
+enter insert mode
+T}
+enter_italics_mode sitm ZH T{
+Enter italic mode
+T}
+enter_leftward_mode slm ZI T{
+Start leftward carriage motion
+T}
+enter_micro_mode smicm ZJ T{
+Start micro-motion mode
+T}
+enter_near_letter_quality snlq ZK T{
+Enter NLQ mode
+T}
+enter_normal_quality snrmq ZL T{
+Enter normal-quality mode
+T}
+enter_protected_mode prot mp T{
+turn on protected mode
+T}
+enter_reverse_mode rev mr T{
+turn on reverse video mode
+T}
+enter_secure_mode invis mk T{
+turn on blank mode (characters invisible)
+T}
+enter_shadow_mode sshm ZM T{
+Enter shadow-print mode
+T}
+enter_standout_mode smso so T{
+begin standout mode
+T}
+enter_subscript_mode ssubm ZN T{
+Enter subscript mode
+T}
+enter_superscript_mode ssupm ZO T{
+Enter superscript mode
+T}
+enter_underline_mode smul us T{
+begin underline mode
+T}
+enter_upward_mode sum ZP T{
+Start upward carriage motion
+T}
+enter_xon_mode smxon SX T{
+turn on xon/xoff handshaking
+T}
+erase_chars ech ec T{
+erase #1 characters (P)
+T}
+exit_alt_charset_mode rmacs ae T{
+end alternate character set (P)
+T}
+exit_am_mode rmam RA T{
+turn off automatic margins
+T}
+exit_attribute_mode sgr0 me T{
+turn off all attributes
+T}
+exit_ca_mode rmcup te T{
+strings to end programs using cup
+T}
+exit_delete_mode rmdc ed T{
+end delete mode
+T}
+exit_doublewide_mode rwidm ZQ T{
+End double-wide mode
+T}
+exit_insert_mode rmir ei T{
+exit insert mode
+T}
+exit_italics_mode ritm ZR T{
+End italic mode
+T}
+exit_leftward_mode rlm ZS T{
+End left-motion mode
+T}
+exit_micro_mode rmicm ZT T{
+End micro-motion mode
+T}
+exit_shadow_mode rshm ZU T{
+End shadow-print mode
+T}
+exit_standout_mode rmso se T{
+exit standout mode
+T}
+exit_subscript_mode rsubm ZV T{
+End subscript mode
+T}
+exit_superscript_mode rsupm ZW T{
+End superscript mode
+T}
+exit_underline_mode rmul ue T{
+exit underline mode
+T}
+exit_upward_mode rum ZX T{
+End reverse character motion
+T}
+exit_xon_mode rmxon RX T{
+turn off xon/xoff handshaking
+T}
+fixed_pause pause PA T{
+pause for 2-3 seconds
+T}
+flash_hook hook fh T{
+flash switch hook
+T}
+flash_screen flash vb T{
+visible bell (may not move cursor)
+T}
+form_feed ff ff T{
+hardcopy terminal page eject (P*)
+T}
+from_status_line fsl fs T{
+return from status line
+T}
+goto_window wingo WG T{
+go to window #1
+T}
+hangup hup HU T{
+hang-up phone
+T}
+init_1string is1 i1 T{
+initialization string
+T}
+init_2string is2 is T{
+initialization string
+T}
+init_3string is3 i3 T{
+initialization string
+T}
+init_file if if T{
+name of initialization file
+T}
+init_prog iprog iP T{
+path name of program for initialization
+T}
+initialize_color initc Ic T{
+initialize color #1 to (#2,#3,#4)
+T}
+initialize_pair initp Ip T{
+Initialize color pair #1 to fg=(#2,#3,#4), bg=(#5,#6,#7)
+T}
+insert_character ich1 ic T{
+insert character (P)
+T}
+insert_line il1 al T{
+insert line (P*)
+T}
+insert_padding ip ip T{
+insert padding after inserted character
+T}
+key_a1 ka1 K1 T{
+upper left of keypad
+T}
+key_a3 ka3 K3 T{
+upper right of keypad
+T}
+key_b2 kb2 K2 T{
+center of keypad
+T}
+key_backspace kbs kb T{
+backspace key
+T}
+key_beg kbeg @1 T{
+begin key
+T}
+key_btab kcbt kB T{
+back-tab key
+T}
+key_c1 kc1 K4 T{
+lower left of keypad
+T}
+key_c3 kc3 K5 T{
+lower right of keypad
+T}
+key_cancel kcan @2 T{
+cancel key
+T}
+key_catab ktbc ka T{
+clear-all-tabs key
+T}
+key_clear kclr kC T{
+clear-screen or erase key
+T}
+key_close kclo @3 T{
+close key
+T}
+key_command kcmd @4 T{
+command key
+T}
+key_copy kcpy @5 T{
+copy key
+T}
+key_create kcrt @6 T{
+create key
+T}
+key_ctab kctab kt T{
+clear-tab key
+T}
+key_dc kdch1 kD T{
+delete-character key
+T}
+key_dl kdl1 kL T{
+delete-line key
+T}
+key_down kcud1 kd T{
+down-arrow key
+T}
+key_eic krmir kM T{
+sent by rmir or smir in insert mode
+T}
+key_end kend @7 T{
+end key
+T}
+key_enter kent @8 T{
+enter/send key
+T}
+key_eol kel kE T{
+clear-to-end-of-line key
+T}
+key_eos ked kS T{
+clear-to-end-of-screen key
+T}
+key_exit kext @9 T{
+exit key
+T}
+key_f0 kf0 k0 T{
+F0 function key
+T}
+key_f1 kf1 k1 T{
+F1 function key
+T}
+key_f10 kf10 k; T{
+F10 function key
+T}
+key_f11 kf11 F1 T{
+F11 function key
+T}
+key_f12 kf12 F2 T{
+F12 function key
+T}
+key_f13 kf13 F3 T{
+F13 function key
+T}
+key_f14 kf14 F4 T{
+F14 function key
+T}
+key_f15 kf15 F5 T{
+F15 function key
+T}
+key_f16 kf16 F6 T{
+F16 function key
+T}
+key_f17 kf17 F7 T{
+F17 function key
+T}
+key_f18 kf18 F8 T{
+F18 function key
+T}
+key_f19 kf19 F9 T{
+F19 function key
+T}
+key_f2 kf2 k2 T{
+F2 function key
+T}
+key_f20 kf20 FA T{
+F20 function key
+T}
+key_f21 kf21 FB T{
+F21 function key
+T}
+key_f22 kf22 FC T{
+F22 function key
+T}
+key_f23 kf23 FD T{
+F23 function key
+T}
+key_f24 kf24 FE T{
+F24 function key
+T}
+key_f25 kf25 FF T{
+F25 function key
+T}
+key_f26 kf26 FG T{
+F26 function key
+T}
+key_f27 kf27 FH T{
+F27 function key
+T}
+key_f28 kf28 FI T{
+F28 function key
+T}
+key_f29 kf29 FJ T{
+F29 function key
+T}
+key_f3 kf3 k3 T{
+F3 function key
+T}
+key_f30 kf30 FK T{
+F30 function key
+T}
+key_f31 kf31 FL T{
+F31 function key
+T}
+key_f32 kf32 FM T{
+F32 function key
+T}
+key_f33 kf33 FN T{
+F33 function key
+T}
+key_f34 kf34 FO T{
+F34 function key
+T}
+key_f35 kf35 FP T{
+F35 function key
+T}
+key_f36 kf36 FQ T{
+F36 function key
+T}
+key_f37 kf37 FR T{
+F37 function key
+T}
+key_f38 kf38 FS T{
+F38 function key
+T}
+key_f39 kf39 FT T{
+F39 function key
+T}
+key_f4 kf4 k4 T{
+F4 function key
+T}
+key_f40 kf40 FU T{
+F40 function key
+T}
+key_f41 kf41 FV T{
+F41 function key
+T}
+key_f42 kf42 FW T{
+F42 function key
+T}
+key_f43 kf43 FX T{
+F43 function key
+T}
+key_f44 kf44 FY T{
+F44 function key
+T}
+key_f45 kf45 FZ T{
+F45 function key
+T}
+key_f46 kf46 Fa T{
+F46 function key
+T}
+key_f47 kf47 Fb T{
+F47 function key
+T}
+key_f48 kf48 Fc T{
+F48 function key
+T}
+key_f49 kf49 Fd T{
+F49 function key
+T}
+key_f5 kf5 k5 T{
+F5 function key
+T}
+key_f50 kf50 Fe T{
+F50 function key
+T}
+key_f51 kf51 Ff T{
+F51 function key
+T}
+key_f52 kf52 Fg T{
+F52 function key
+T}
+key_f53 kf53 Fh T{
+F53 function key
+T}
+key_f54 kf54 Fi T{
+F54 function key
+T}
+key_f55 kf55 Fj T{
+F55 function key
+T}
+key_f56 kf56 Fk T{
+F56 function key
+T}
+key_f57 kf57 Fl T{
+F57 function key
+T}
+key_f58 kf58 Fm T{
+F58 function key
+T}
+key_f59 kf59 Fn T{
+F59 function key
+T}
+key_f6 kf6 k6 T{
+F6 function key
+T}
+key_f60 kf60 Fo T{
+F60 function key
+T}
+key_f61 kf61 Fp T{
+F61 function key
+T}
+key_f62 kf62 Fq T{
+F62 function key
+T}
+key_f63 kf63 Fr T{
+F63 function key
+T}
+key_f7 kf7 k7 T{
+F7 function key
+T}
+key_f8 kf8 k8 T{
+F8 function key
+T}
+key_f9 kf9 k9 T{
+F9 function key
+T}
+key_find kfnd @0 T{
+find key
+T}
+key_help khlp %1 T{
+help key
+T}
+key_home khome kh T{
+home key
+T}
+key_ic kich1 kI T{
+insert-character key
+T}
+key_il kil1 kA T{
+insert-line key
+T}
+key_left kcub1 kl T{
+left-arrow key
+T}
+key_ll kll kH T{
+lower-left key (home down)
+T}
+key_mark kmrk %2 T{
+mark key
+T}
+key_message kmsg %3 T{
+message key
+T}
+key_move kmov %4 T{
+move key
+T}
+key_next knxt %5 T{
+next key
+T}
+key_npage knp kN T{
+next-page key
+T}
+key_open kopn %6 T{
+open key
+T}
+key_options kopt %7 T{
+options key
+T}
+key_ppage kpp kP T{
+previous-page key
+T}
+key_previous kprv %8 T{
+previous key
+T}
+key_print kprt %9 T{
+print key
+T}
+key_redo krdo %0 T{
+redo key
+T}
+key_reference kref &1 T{
+reference key
+T}
+key_refresh krfr &2 T{
+refresh key
+T}
+key_replace krpl &3 T{
+replace key
+T}
+key_restart krst &4 T{
+restart key
+T}
+key_resume kres &5 T{
+resume key
+T}
+key_right kcuf1 kr T{
+right-arrow key
+T}
+key_save ksav &6 T{
+save key
+T}
+key_sbeg kBEG &9 T{
+shifted begin key
+T}
+key_scancel kCAN &0 T{
+shifted cancel key
+T}
+key_scommand kCMD *1 T{
+shifted command key
+T}
+key_scopy kCPY *2 T{
+shifted copy key
+T}
+key_screate kCRT *3 T{
+shifted create key
+T}
+key_sdc kDC *4 T{
+shifted delete-character key
+T}
+key_sdl kDL *5 T{
+shifted delete-line key
+T}
+key_select kslt *6 T{
+select key
+T}
+key_send kEND *7 T{
+shifted end key
+T}
+key_seol kEOL *8 T{
+shifted clear-to-end-of-line key
+T}
+key_sexit kEXT *9 T{
+shifted exit key
+T}
+key_sf kind kF T{
+scroll-forward key
+T}
+key_sfind kFND *0 T{
+shifted find key
+T}
+key_shelp kHLP #1 T{
+shifted help key
+T}
+key_shome kHOM #2 T{
+shifted home key
+T}
+key_sic kIC #3 T{
+shifted insert-character key
+T}
+key_sleft kLFT #4 T{
+shifted left-arrow key
+T}
+key_smessage kMSG %a T{
+shifted message key
+T}
+key_smove kMOV %b T{
+shifted move key
+T}
+key_snext kNXT %c T{
+shifted next key
+T}
+key_soptions kOPT %d T{
+shifted options key
+T}
+key_sprevious kPRV %e T{
+shifted previous key
+T}
+key_sprint kPRT %f T{
+shifted print key
+T}
+key_sr kri kR T{
+scroll-backward key
+T}
+key_sredo kRDO %g T{
+shifted redo key
+T}
+key_sreplace kRPL %h T{
+shifted replace key
+T}
+key_sright kRIT %i T{
+shifted right-arrow key
+T}
+key_srsume kRES %j T{
+shifted resume key
+T}
+key_ssave kSAV !1 T{
+shifted save key
+T}
+key_ssuspend kSPD !2 T{
+shifted suspend key
+T}
+key_stab khts kT T{
+set-tab key
+T}
+key_sundo kUND !3 T{
+shifted undo key
+T}
+key_suspend kspd &7 T{
+suspend key
+T}
+key_undo kund &8 T{
+undo key
+T}
+key_up kcuu1 ku T{
+up-arrow key
+T}
+keypad_local rmkx ke T{
+leave 'keyboard_transmit' mode
+T}
+keypad_xmit smkx ks T{
+enter 'keyboard_transmit' mode
+T}
+lab_f0 lf0 l0 T{
+label on function key f0 if not f0
+T}
+lab_f1 lf1 l1 T{
+label on function key f1 if not f1
+T}
+lab_f10 lf10 la T{
+label on function key f10 if not f10
+T}
+lab_f2 lf2 l2 T{
+label on function key f2 if not f2
+T}
+lab_f3 lf3 l3 T{
+label on function key f3 if not f3
+T}
+lab_f4 lf4 l4 T{
+label on function key f4 if not f4
+T}
+lab_f5 lf5 l5 T{
+label on function key f5 if not f5
+T}
+lab_f6 lf6 l6 T{
+label on function key f6 if not f6
+T}
+lab_f7 lf7 l7 T{
+label on function key f7 if not f7
+T}
+lab_f8 lf8 l8 T{
+label on function key f8 if not f8
+T}
+lab_f9 lf9 l9 T{
+label on function key f9 if not f9
+T}
+label_format fln Lf T{
+label format
+T}
+label_off rmln LF T{
+turn off soft labels
+T}
+label_on smln LO T{
+turn on soft labels
+T}
+meta_off rmm mo T{
+turn off meta mode
+T}
+meta_on smm mm T{
+turn on meta mode (8th-bit on)
+T}
+micro_column_address mhpa ZY T{
+Like column_address in micro mode
+T}
+micro_down mcud1 ZZ T{
+Like cursor_down in micro mode
+T}
+micro_left mcub1 Za T{
+Like cursor_left in micro mode
+T}
+micro_right mcuf1 Zb T{
+Like cursor_right in micro mode
+T}
+micro_row_address mvpa Zc T{
+Like row_address #1 in micro mode
+T}
+micro_up mcuu1 Zd T{
+Like cursor_up in micro mode
+T}
+newline nel nw T{
+newline (behave like cr followed by lf)
+T}
+order_of_pins porder Ze T{
+Match software bits to print-head pins
+T}
+orig_colors oc oc T{
+Set all color pairs to the original ones
+T}
+orig_pair op op T{
+Set default pair to its original value
+T}
+pad_char pad pc T{
+padding char (instead of null)
+T}
+parm_dch dch DC T{
+delete #1 characters (P*)
+T}
+parm_delete_line dl DL T{
+delete #1 lines (P*)
+T}
+parm_down_cursor cud DO T{
+down #1 lines (P*)
+T}
+parm_down_micro mcud Zf T{
+Like parm_down_cursor in micro mode
+T}
+parm_ich ich IC T{
+insert #1 characters (P*)
+T}
+parm_index indn SF T{
+scroll forward #1 lines (P)
+T}
+parm_insert_line il AL T{
+insert #1 lines (P*)
+T}
+parm_left_cursor cub LE T{
+move #1 characters to the left (P)
+T}
+parm_left_micro mcub Zg T{
+Like parm_left_cursor in micro mode
+T}
+parm_right_cursor cuf RI T{
+move #1 characters to the right (P*)
+T}
+parm_right_micro mcuf Zh T{
+Like parm_right_cursor in micro mode
+T}
+parm_rindex rin SR T{
+scroll back #1 lines (P)
+T}
+parm_up_cursor cuu UP T{
+up #1 lines (P*)
+T}
+parm_up_micro mcuu Zi T{
+Like parm_up_cursor in micro mode
+T}
+pkey_key pfkey pk T{
+program function key #1 to type string #2
+T}
+pkey_local pfloc pl T{
+program function key #1 to execute string #2
+T}
+pkey_xmit pfx px T{
+program function key #1 to transmit string #2
+T}
+plab_norm pln pn T{
+program label #1 to show string #2
+T}
+print_screen mc0 ps T{
+print contents of screen
+T}
+prtr_non mc5p pO T{
+turn on printer for #1 bytes
+T}
+prtr_off mc4 pf T{
+turn off printer
+T}
+prtr_on mc5 po T{
+turn on printer
+T}
+pulse pulse PU T{
+select pulse dialing
+T}
+quick_dial qdial QD T{
+dial number #1 without checking
+T}
+remove_clock rmclk RC T{
+remove clock
+T}
+repeat_char rep rp T{
+repeat char #1 #2 times (P*)
+T}
+req_for_input rfi RF T{
+send next input char (for ptys)
+T}
+reset_1string rs1 r1 T{
+reset string
+T}
+reset_2string rs2 r2 T{
+reset string
+T}
+reset_3string rs3 r3 T{
+reset string
+T}
+reset_file rf rf T{
+name of reset file
+T}
+restore_cursor rc rc T{
+restore cursor to position of last save_cursor
+T}
+row_address vpa cv T{
+vertical position #1 absolute (P)
+T}
+save_cursor sc sc T{
+save current cursor position (P)
+T}
+scroll_forward ind sf T{
+scroll text up (P)
+T}
+scroll_reverse ri sr T{
+scroll text down (P)
+T}
+select_char_set scs Zj T{
+Select character set, #1
+T}
+set_attributes sgr sa T{
+define video attributes #1-#9 (PG9)
+T}
+set_background setb Sb T{
+Set background color #1
+T}
+set_bottom_margin smgb Zk T{
+Set bottom margin at current line
+T}
+set_bottom_margin_parm smgbp Zl T{
+Set bottom margin at line #1 or (if smgtp is not given) #2 lines from bottom
+T}
+set_clock sclk SC T{
+set clock, #1 hrs #2 mins #3 secs
+T}
+set_color_pair scp sp T{
+Set current color pair to #1
+T}
+set_foreground setf Sf T{
+Set foreground color #1
+T}
+set_left_margin smgl ML T{
+set left soft margin at current column. (ML is not in BSD termcap).
+T}
+set_left_margin_parm smglp Zm T{
+Set left (right) margin at column #1
+T}
+set_right_margin smgr MR T{
+set right soft margin at current column
+T}
+set_right_margin_parm smgrp Zn T{
+Set right margin at column #1
+T}
+set_tab hts st T{
+set a tab in every row, current columns
+T}
+set_top_margin smgt Zo T{
+Set top margin at current line
+T}
+set_top_margin_parm smgtp Zp T{
+Set top (bottom) margin at row #1
+T}
+set_window wind wi T{
+current window is lines #1-#2 cols #3-#4
+T}
+start_bit_image sbim Zq T{
+Start printing bit image graphics
+T}
+start_char_set_def scsd Zr T{
+Start character set definition #1, with #2 characters in the set
+T}
+stop_bit_image rbim Zs T{
+Stop printing bit image graphics
+T}
+stop_char_set_def rcsd Zt T{
+End definition of character set #1
+T}
+subscript_characters subcs Zu T{
+List of subscriptable characters
+T}
+superscript_characters supcs Zv T{
+List of superscriptable characters
+T}
+tab ht ta T{
+tab to next 8-space hardware tab stop
+T}
+these_cause_cr docr Zw T{
+Printing any of these characters causes CR
+T}
+to_status_line tsl ts T{
+move to status line, column #1
+T}
+tone tone TO T{
+select touch tone dialing
+T}
+underline_char uc uc T{
+underline char and move past it
+T}
+up_half_line hu hu T{
+half a line up
+T}
+user0 u0 u0 T{
+User string #0
+T}
+user1 u1 u1 T{
+User string #1
+T}
+user2 u2 u2 T{
+User string #2
+T}
+user3 u3 u3 T{
+User string #3
+T}
+user4 u4 u4 T{
+User string #4
+T}
+user5 u5 u5 T{
+User string #5
+T}
+user6 u6 u6 T{
+User string #6
+T}
+user7 u7 u7 T{
+User string #7
+T}
+user8 u8 u8 T{
+User string #8
+T}
+user9 u9 u9 T{
+User string #9
+T}
+wait_tone wait WA T{
+wait for dial-tone
+T}
+xoff_character xoffc XF T{
+XOFF character
+T}
+xon_character xonc XN T{
+XON character
+T}
+zero_motion zerom Zx T{
+No motion for subsequent character
+T}
+.TE
+.ad
+
+The following string capabilities are present in the SVr4.0 term structure,
+but were originally not documented in the man page.
+
+.na
+.TS H
+center;
+c l l c
+c l l c
+lw25 lw7 lw2 lw18.
+\fBVariable Cap- TCap Description\fR
+\fBString name Code\fR
+alt_scancode_esc scesa S8 T{
+Alternate escape for scancode emulation
+T}
+bit_image_carriage_return bicr Yv T{
+Move to beginning of same row
+T}
+bit_image_newline binel Zz T{
+Move to next row of the bit image
+T}
+bit_image_repeat birep Xy T{
+Repeat bit image cell #1 #2 times
+T}
+char_set_names csnm Zy T{
+Produce #1'th item from list of character set names
+T}
+code_set_init csin ci T{
+Init sequence for multiple codesets
+T}
+color_names colornm Yw T{
+Give name for color #1
+T}
+define_bit_image_region defbi Yx T{
+Define rectangular bit image region
+T}
+device_type devt dv T{
+Indicate language/codeset support
+T}
+display_pc_char dispc S1 T{
+Display PC character #1
+T}
+end_bit_image_region endbi Yy T{
+End a bit-image region
+T}
+enter_pc_charset_mode smpch S2 T{
+Enter PC character display mode
+T}
+enter_scancode_mode smsc S4 T{
+Enter PC scancode mode
+T}
+exit_pc_charset_mode rmpch S3 T{
+Exit PC character display mode
+T}
+exit_scancode_mode rmsc S5 T{
+Exit PC scancode mode
+T}
+get_mouse getm Gm T{
+Curses should get button events, parameter #1 not documented.
+T}
+key_mouse kmous Km T{
+Mouse event has occurred
+T}
+mouse_info minfo Mi T{
+Mouse status information
+T}
+pc_term_options pctrm S6 T{
+PC terminal options
+T}
+pkey_plab pfxl xl T{
+Program function key #1 to type string #2 and show string #3
+T}
+req_mouse_pos reqmp RQ T{
+Request mouse position
+T}
+scancode_escape scesc S7 T{
+Escape for scancode emulation
+T}
+set0_des_seq s0ds s0 T{
+Shift to codeset 0 (EUC set 0, ASCII)
+T}
+set1_des_seq s1ds s1 T{
+Shift to codeset 1
+T}
+set2_des_seq s2ds s2 T{
+Shift to codeset 2
+T}
+set3_des_seq s3ds s3 T{
+Shift to codeset 3
+T}
+set_a_background setab AB T{
+Set background color to #1, using ANSI escape
+T}
+set_a_foreground setaf AF T{
+Set foreground color to #1, using ANSI escape
+T}
+set_color_band setcolor Yz T{
+Change to ribbon color #1
+T}
+set_lr_margin smglr ML T{
+Set both left and right margins to #1, #2. (ML is not in BSD termcap).
+T}
+set_page_length slines YZ T{
+Set page length to #1 lines
+T}
+set_tb_margin smgtb MT T{
+Sets both top and bottom margins to #1, #2
+T}
+.TE
+.ad
+
+.in .8i
+The XSI Curses standard added these hardcopy capabilities.
+They were used in some post-4.1 versions of System V curses,
+e.g., Solaris 2.5 and IRIX 6.x.
+Except for \fBYI\fP, the \fBncurses\fR 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!
+
+.na
+.TS H
+center;
+c l l c
+c l l c
+lw25 lw7 lw2 lw20.
+\fBVariable Cap- TCap Description\fR
+\fBString name Code\fR
+enter_horizontal_hl_mode ehhlm Xh T{
+Enter horizontal highlight mode
+T}
+enter_left_hl_mode elhlm Xl T{
+Enter left highlight mode
+T}
+enter_low_hl_mode elohlm Xo T{
+Enter low highlight mode
+T}
+enter_right_hl_mode erhlm Xr T{
+Enter right highlight mode
+T}
+enter_top_hl_mode ethlm Xt T{
+Enter top highlight mode
+T}
+enter_vertical_hl_mode evhlm Xv T{
+Enter vertical highlight mode
+T}
+set_a_attributes sgr1 sA T{
+Define second set of video attributes #1-#6
+T}
+set_pglen_inch slength YI T{
+Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
+T}
+.TE
+.ad
+.\"***************************************************************************
+.\" Copyright 2018-2021,2022 Thomas E. Dickey *
+.\" Copyright 1998-2016,2017 Free Software Foundation, Inc. *
+.\" *
+.\" Permission is hereby granted, free of charge, to any person obtaining a *
+.\" copy of this software and associated documentation files (the *
+.\" "Software"), to deal in the Software without restriction, including *
+.\" without limitation the rights to use, copy, modify, merge, publish, *
+.\" distribute, distribute with modifications, sublicense, and/or sell *
+.\" copies of the Software, and to permit persons to whom the Software is *
+.\" furnished to do so, subject to the following conditions: *
+.\" *
+.\" The above copyright notice and this permission notice shall be included *
+.\" in all copies or substantial portions of the Software. *
+.\" *
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+.\" *
+.\" Except as contained in this notice, the name(s) of the above copyright *
+.\" holders shall not be used in advertising or otherwise to promote the *
+.\" sale, use or other dealings in this Software without prior written *
+.\" authorization. *
+.\"***************************************************************************
+.\"
+.\" $Id: terminfo.tail,v 1.113 2022/12/10 19:51:10 tom Exp $
+.ps +1
+.SS User-Defined Capabilities
+.
+The preceding section listed the \fIpredefined\fP capabilities.
+They deal with some special features for terminals no longer
+(or possibly never) produced.
+Occasionally there are special features of newer terminals which
+are awkward or impossible to represent by reusing the predefined
+capabilities.
+.PP
+\fBncurses\fP addresses this limitation by allowing user-defined capabilities.
+The \fBtic\fP and \fBinfocmp\fP programs provide
+the \fB\-x\fP option for this purpose.
+When \fB\-x\fP is set,
+\fBtic\fP treats unknown capabilities as user-defined.
+That is, if \fBtic\fP encounters a capability name
+which it does not recognize,
+it infers its type (boolean, number or string) from the syntax
+and makes an extended table entry for that capability.
+The \fBuse_extended_names\fP(3X) function makes this information
+conditionally available to applications.
+The ncurses library provides the data leaving most of the behavior
+to applications:
+.bP
+User-defined capability strings whose name begins
+with \*(``k\*('' are treated as function keys.
+.bP
+The types (boolean, number, string) determined by \fBtic\fP
+can be inferred by successful calls on \fBtigetflag\fP, etc.
+.bP
+If the capability name happens to be two characters,
+the capability is also available through the termcap interface.
+.PP
+While termcap is said to be extensible because it does not use a predefined set
+of capabilities,
+in practice it has been limited to the capabilities defined by
+terminfo implementations.
+As a rule,
+user-defined capabilities intended for use by termcap applications should
+be limited to booleans and numbers to avoid running past the 1023 byte
+limit assumed by termcap implementations and their applications.
+In particular, providing extended sets of function keys (past the 60
+numbered keys and the handful of special named keys) is best done using
+the longer names available using terminfo.
+.
+.SS A Sample Entry
+.
+The following entry, describing an ANSI-standard terminal, is representative
+of what a \fBterminfo\fP entry for a modern terminal typically looks like.
+.PP
+.nf
+.ft CW
+\s-2ansi|ansi/pc-term compatible with color,
+ am, mc5i, mir, msgr,
+ colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
+ acsc=+\\020\\,\\021-\\030.^Y0\\333`\\004a\\261f\\370g\\361h\\260
+ j\\331k\\277l\\332m\\300n\\305o~p\\304q\\304r\\304s_t\\303
+ u\\264v\\301w\\302x\\263y\\363z\\362{\\343|\\330}\\234~\\376,
+ bel=^G, blink=\\E[5m, bold=\\E[1m, cbt=\\E[Z, clear=\\E[H\\E[J,
+ cr=^M, cub=\\E[%p1%dD, cub1=\\E[D, cud=\\E[%p1%dB, cud1=\\E[B,
+ cuf=\\E[%p1%dC, cuf1=\\E[C, cup=\\E[%i%p1%d;%p2%dH,
+ cuu=\\E[%p1%dA, cuu1=\\E[A, dch=\\E[%p1%dP, dch1=\\E[P,
+ dl=\\E[%p1%dM, dl1=\\E[M, ech=\\E[%p1%dX, ed=\\E[J, el=\\E[K,
+ el1=\\E[1K, home=\\E[H, hpa=\\E[%i%p1%dG, ht=\\E[I, hts=\\EH,
+ ich=\\E[%p1%d@, il=\\E[%p1%dL, il1=\\E[L, ind=^J,
+ indn=\\E[%p1%dS, invis=\\E[8m, kbs=^H, kcbt=\\E[Z, kcub1=\\E[D,
+ kcud1=\\E[B, kcuf1=\\E[C, kcuu1=\\E[A, khome=\\E[H, kich1=\\E[L,
+ mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S, op=\\E[39;49m,
+ rep=%p1%c\\E[%p2%{1}%-%db, rev=\\E[7m, rin=\\E[%p1%dT,
+ rmacs=\\E[10m, rmpch=\\E[10m, rmso=\\E[m, rmul=\\E[m,
+ s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B, s3ds=\\E+B,
+ setab=\\E[4%p1%dm, setaf=\\E[3%p1%dm,
+ sgr=\\E[0;10%?%p1%t;7%;
+ %?%p2%t;4%;
+ %?%p3%t;7%;
+ %?%p4%t;5%;
+ %?%p6%t;1%;
+ %?%p7%t;8%;
+ %?%p9%t;11%;m,
+ sgr0=\\E[0;10m, smacs=\\E[11m, smpch=\\E[11m, smso=\\E[7m,
+ smul=\\E[4m, tbc=\\E[3g, u6=\\E[%i%d;%dR, u7=\\E[6n,
+ u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%i%p1%dd,
+.fi
+.ft R
+.PP
+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
+.I terminfo
+are of three types:
+.bP
+Boolean capabilities which indicate that the terminal has
+some particular feature,
+.bP
+numeric capabilities giving the size of the terminal
+or the size of particular delays, and
+.bP
+string
+capabilities, which give a sequence which can be used to perform particular
+terminal operations.
+.PP
+.SS Types of Capabilities
+.PP
+All capabilities have names.
+For instance, the fact that
+ANSI-standard terminals have
+.I "automatic margins"
+(i.e., an automatic return and line-feed
+when the end of a line is reached) is indicated by the capability \fBam\fP.
+Hence the description of ansi includes \fBam\fP.
+Numeric capabilities are followed by the character \*(``#\*('' and then a positive value.
+Thus \fBcols\fP, 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).
+.PP
+Finally, string valued capabilities, such as \fBel\fP (clear to end of line
+sequence) are given by the two-character code, an \*(``=\*('', and then a string
+ending at the next following \*(``,\*(''.
+.PP
+A number of escape sequences are provided in the string valued capabilities
+for easy encoding of characters there:
+.bP
+Both \fB\eE\fP and \fB\ee\fP
+map to an \s-1ESCAPE\s0 character,
+.bP
+\fB^x\fP maps to a control-x for any appropriate \fIx\fP, and
+.bP
+the sequences
+.RS 6
+.PP
+\fB\en\fP, \fB\el\fP, \fB\er\fP, \fB\et\fP, \fB\eb\fP, \fB\ef\fP, and \fB\es\fP
+.RE
+.IP
+produce
+.RS 6
+.PP
+\fInewline\fP, \fIline-feed\fP, \fIreturn\fP, \fItab\fP, \fIbackspace\fP, \fIform-feed\fP, and \fIspace\fP,
+.RE
+.IP
+respectively.
+.PP
+X/Open Curses does not say what \*(``appropriate \fIx\fP\*('' might be.
+In practice, that is a printable ASCII graphic character.
+The special case \*(``^?\*('' is interpreted as DEL (127).
+In all other cases, the character value is AND'd with 0x1f,
+mapping to ASCII control codes in the range 0 through 31.
+.PP
+Other escapes include
+.bP
+\fB\e^\fP for \fB^\fP,
+.bP
+\fB\e\e\fP for \fB\e\fP,
+.bP
+\fB\e\fP, for comma,
+.bP
+\fB\e:\fP for \fB:\fP,
+.bP
+and \fB\e0\fP for null.
+.IP
+\fB\e0\fP will produce \e200, which does not terminate a string but behaves
+as a null character on most terminals, providing CS7 is specified.
+See \fBstty\fP(1).
+.IP
+The reason for this quirk is to maintain binary compatibility of the
+compiled terminfo files with other implementations,
+e.g., the SVr4 systems, which document this.
+Compiled terminfo files use null-terminated strings, with no lengths.
+Modifying this would require a new binary format,
+which would not work with other implementations.
+.PP
+Finally, characters may be given as three octal digits after a \fB\e\fP.
+.PP
+A delay in milliseconds may appear anywhere in a string capability, enclosed in
+$<..> brackets, as in \fBel\fP=\eEK$<5>,
+and padding characters are supplied by \fBtputs\fP(3X)
+to provide this delay.
+.bP
+The delay must be a number with at most one decimal
+place of precision; it may be followed by suffixes \*(``*\*('' or \*(``/\*('' or both.
+.bP
+A \*(``*\*(''
+indicates that the padding required is proportional to the number of lines
+affected by the operation, and the amount given is the per-affected-unit
+padding required.
+(In the case of insert character, the factor is still the
+number of \fIlines\fP affected.)
+.IP
+Normally, padding is advisory if the device has the \fBxon\fP
+capability; it is used for cost computation but does not trigger delays.
+.bP
+A \*(``/\*(''
+suffix indicates that the padding is mandatory and forces a delay of the given
+number of milliseconds even on devices for which \fBxon\fP is present to
+indicate flow control.
+.PP
+Sometimes individual capabilities must be commented out.
+To do this, put a period before the capability name.
+For example, see the second
+.B ind
+in the example above.
+.br
+.ne 5
+.PP
+.SS Fetching Compiled Descriptions
+.PP
+The \fBncurses\fP library searches for terminal descriptions in several places.
+It uses only the first description found.
+The library has a compiled-in list of places to search
+which can be overridden by environment variables.
+Before starting to search,
+\fBncurses\fP eliminates duplicates in its search list.
+.bP
+If the environment variable TERMINFO is set, it is interpreted as the pathname
+of a directory containing the compiled description you are working on.
+Only that directory is searched.
+.bP
+If TERMINFO is not set,
+\fBncurses\fP will instead look in the directory \fB$HOME/.terminfo\fP
+for a compiled description.
+.bP
+Next, if the environment variable TERMINFO_DIRS is set,
+\fBncurses\fP will interpret the contents of that variable
+as a list of colon-separated directories (or database files) to be searched.
+.IP
+An empty directory name (i.e., if the variable begins or ends
+with a colon, or contains adjacent colons)
+is interpreted as the system location \fI\*d\fP.
+.bP
+Finally, \fBncurses\fP searches these compiled-in locations:
+.RS
+.bP
+a list of directories (no default value), and
+.bP
+the system terminfo directory, \fI\*d\fP (the compiled-in default).
+.RE
+.SS Preparing Descriptions
+.PP
+We now outline how to prepare descriptions of terminals.
+The most effective way to prepare a terminal description is by imitating
+the description of a similar terminal in
+.I terminfo
+and to build up a description gradually, using partial descriptions
+with
+.I 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
+.I terminfo
+file to describe it
+or bugs in the screen-handling code of the test program.
+.PP
+To get the padding for insert line right (if the terminal manufacturer
+did not document it) a severe test is to edit a large file at 9600 baud,
+delete 16 or so lines from the middle of the screen, then hit the \*(``u\*(''
+key several times quickly.
+If the terminal messes up, more padding is usually needed.
+A similar test can be used for insert character.
+.PP
+.SS Basic Capabilities
+.PP
+The number of columns on each line for the terminal is given by the
+\fBcols\fP numeric capability.
+If the terminal is a \s-1CRT\s0, then the
+number of lines on the screen is given by the \fBlines\fP capability.
+If the terminal wraps around to the beginning of the next line when
+it reaches the right margin, then it should have the \fBam\fP capability.
+If the terminal can clear its screen, leaving the cursor in the home
+position, then this is given by the \fBclear\fP string capability.
+If the terminal overstrikes
+(rather than clearing a position when a character is struck over)
+then it should have the \fBos\fP capability.
+If the terminal is a printing terminal, with no soft copy unit,
+give it both
+.B hc
+and
+.BR os .
+.RB ( os
+applies to storage scope terminals, such as \s-1TEKTRONIX\s+1 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
+.BR 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
+.BR bel .
+.PP
+If there is a code to move the cursor one position to the left
+(such as backspace) that capability should be given as
+.BR cub1 .
+Similarly, codes to move to the right, up, and down should be
+given as
+.BR cuf1 ,
+.BR cuu1 ,
+and
+.BR cud1 .
+These local cursor motions should not alter the text they pass over,
+for example, you would not normally use \*(``\fBcuf1\fP=\ \*('' because the
+space would erase the character moved over.
+.PP
+A very important point here is that the local cursor motions encoded
+in
+.I terminfo
+are undefined at the left and top edges of a \s-1CRT\s0 terminal.
+Programs should never attempt to backspace around the left edge,
+unless
+.B 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
+.B ind
+(index) string.
+.PP
+To scroll text down, a program goes to the top left corner
+of the screen and sends the
+.B ri
+(reverse index) string.
+The strings
+.B ind
+and
+.B ri
+are undefined when not on their respective corners of the screen.
+.PP
+Parameterized versions of the scrolling sequences are
+.B indn
+and
+.B rin
+which have the same semantics as
+.B ind
+and
+.B ri
+except that they take one parameter, and scroll that many lines.
+They are also undefined except at the appropriate edge of the screen.
+.PP
+The \fBam\fP 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
+.B cuf1
+from the last column.
+The only local motion which is defined from the left edge is if
+.B bw
+is given, then a
+.B cub1
+from the left edge will move to the right edge of the previous row.
+If
+.B 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
+.I terminfo
+file usually assumes that this is on; i.e., \fBam\fP.
+If the terminal has a command which moves to the first column of the next
+line, that command can be given as
+.B nel
+(newline).
+It does not matter if the command clears the remainder of the current line,
+so if the terminal has no
+.B cr
+and
+.B lf
+it may still be possible to craft a working
+.B nel
+out of one or both of them.
+.PP
+These capabilities suffice to describe hard-copy and \*(``glass-tty\*('' terminals.
+Thus the model 33 teletype is described as
+.PP
+.DT
+.nf
+.ft CW
+.\".in -2
+\s-133\||\|tty33\||\|tty\||\|model 33 teletype,
+ bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1
+.\".in +2
+.ft R
+.fi
+.PP
+while the Lear Siegler \s-1ADM-3\s0 is described as
+.PP
+.DT
+.nf
+.ft CW
+.\".in -2
+\s-1adm3\||\|3\||\|lsi adm3,
+ am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
+ ind=^J, lines#24,\s+1
+.\".in +2
+.ft R
+.fi
+.PP
+.SS Parameterized Strings
+.PP
+Cursor addressing and other strings requiring parameters
+in the terminal are described by a
+parameterized string capability,
+with \fIprintf\fP-like escapes such as \fI%x\fP in it.
+For example, to address the cursor, the
+.B 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 memory.)
+If the terminal has memory relative cursor addressing,
+that can be indicated by
+.BR mrcup .
+.PP
+The parameter mechanism uses a stack and special \fB%\fP codes
+to manipulate it.
+Typically a sequence will push one of the
+parameters onto the stack and then print it in some format.
+Print (e.g., \*(``%d\*('') is a special case.
+Other operations, including \*(``%t\*('' pop their operand from the stack.
+It is noted that more complex operations are often necessary,
+e.g., in the \fBsgr\fP string.
+.PP
+The \fB%\fP encodings have the following meanings:
+.PP
+.TP 5
+\fB%%\fP
+outputs \*(``%\*(''
+.TP
+\fB%\fP\fI[[\fP:\fI]flags][width[.precision]][\fP\fBdoxXs\fP\fI]\fP
+as in \fBprintf\fP(3), flags are \fI[\-+#]\fP and \fIspace\fP.
+Use a \*(``:\*('' to allow the next character to be a \*(``\-\*('' flag,
+avoiding interpreting \*(``%\-\*('' as an operator.
+.TP
+\f(CW%c\fP
+print \fIpop()\fP like %c in \fBprintf\fP
+.TP
+\fB%s\fP
+print \fIpop()\fP like %s in \fBprintf\fP
+.TP
+\fB%p\fP\fI[1\-9]\fP
+push \fIi\fP'th parameter
+.TP
+\fB%P\fP\fI[a\-z]\fP
+set dynamic variable \fI[a\-z]\fP to \fIpop()\fP
+.TP
+\fB%g\fP\fI[a\-z]\fP
+get dynamic variable \fI[a\-z]\fP and push it
+.TP
+\fB%P\fP\fI[A\-Z]\fP
+set static variable \fI[a\-z]\fP to \fIpop()\fP
+.TP
+\fB%g\fP\fI[A\-Z]\fP
+get static variable \fI[a\-z]\fP and push it
+.IP
+The terms \*(``static\*('' and \*(``dynamic\*('' are misleading.
+Historically, these are simply two different sets of variables,
+whose values are not reset between calls to \fBtparm\fP(3X).
+However, that fact is not documented in other implementations.
+Relying on it will adversely impact portability to other implementations:
+.RS
+.bP
+SVr2 curses supported \fIdynamic\fP variables.
+Those are set only by a \fB%P\fP operator.
+A \fB%g\fP for a given variable without first setting it with \fB%P\fP
+will give unpredictable results, because dynamic variables are
+an uninitialized local array on the stack in the \fBtparm\fP function.
+.bP
+SVr3.2 curses supported \fIstatic\fP variables.
+Those are an array in the \fBTERMINAL\fP
+structure (declared in \fBterm.h\fP),
+and are zeroed automatically when the \fBsetupterm\fP function
+allocates the data.
+.bP
+SVr4 curses made no further improvements
+to the \fIdynamic/static\fP variable feature.
+.bP
+Solaris XPG4 curses does not distinguish between \fIdynamic\fP and
+\fIstatic\fP variables.
+They are the same.
+Like SVr4 curses, XPG4 curses does not initialize these explicitly.
+.bP
+Before version 6.3, ncurses stores both \fIdynamic\fP and \fIstatic\fP
+variables in persistent storage, initialized to zeros.
+.bP
+Beginning with version 6.3, ncurses stores \fIstatic\fP and \fIdynamic\fP
+variables in the same manner as SVr4.
+.RS
+.bP
+Unlike other implementations, ncurses zeros dynamic variables
+before the first \fB%g\fP or \fB%P\fP operator.
+.bP
+Like SVr2,
+the scope of dynamic variables in ncurses
+is within the current call to
+\fBtparm\fP.
+Use static variables if persistent storage is needed.
+.RE
+.RE
+.TP
+\fB%\(aq\fP\fIc\fP\fB\(aq\fP
+char constant \fIc\fP
+.TP
+\fB%{\fP\fInn\fP\fB}\fP
+integer constant \fInn\fP
+.TP
+\fB%l\fP
+push strlen(pop)
+.TP
+\fB%+\fP, \fB%\-\fP, \fB%*\fP, \fB%/\fP, \fB%m\fP
+arithmetic (%m is \fImod\fP): \fIpush(pop() op pop())\fP
+.TP
+\fB%&\fP, \fB%|\fP, \fB%^\fP
+bit operations (AND, OR and exclusive-OR): \fIpush(pop() op pop())\fP
+.TP
+\fB%=\fP, \fB%>\fP, \fB%<\fP
+logical operations: \fIpush(pop() op pop())\fP
+.TP
+\fB%A\fP, \fB%O\fP
+logical AND and OR operations (for conditionals)
+.TP
+\fB%!\fP, \fB%~\fP
+unary operations (logical and bit complement): \fIpush(op pop())\fP
+.TP
+\fB%i\fP
+add 1 to first two parameters (for ANSI terminals)
+.TP
+\fB%?\fP \fIexpr\fP \fB%t\fP \fIthenpart\fP \fB%e\fP \fIelsepart\fP \fB%;\fP
+This forms an if-then-else.
+The \fB%e\fP \fIelsepart\fP is optional.
+Usually the \fB%?\fP \fIexpr\fP part pushes a value onto the stack,
+and \fB%t\fP pops it from the stack, testing if it is nonzero (true).
+If it is zero (false), control passes to the \fB%e\fP (else) part.
+.IP
+It is possible to form else-if's a la Algol 68:
+.RS
+\fB%?\fP c\d1\u \fB%t\fP b\d1\u \fB%e\fP c\d2\u \fB%t\fP b\d2\u \fB%e\fP c\d3\u \fB%t\fP b\d3\u \fB%e\fP c\d4\u \fB%t\fP b\d4\u \fB%e\fP \fB%;\fP
+.RE
+.IP
+where c\di\u are conditions, b\di\u are bodies.
+.IP
+Use the \fB\-f\fP option of \fBtic\fP or \fBinfocmp\fP to see
+the structure of if-then-else's.
+Some strings, e.g., \fBsgr\fP can be very complicated when written
+on one line.
+The \fB\-f\fP option splits the string into lines with the parts indented.
+.PP
+Binary operations are in postfix form with the operands in the usual order.
+That is, to get x\-5 one would use \*(``%gx%{5}%\-\*(''.
+\fB%P\fP and \fB%g\fP variables are
+persistent across escape-string evaluations.
+.PP
+Consider the HP2645, which, to get to row 3 and column 12, needs
+to be sent \eE&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 \fBcup\fP capability is \*(``cup=6\eE&%p2%2dc%p1%2dY\*(''.
+.PP
+The Microterm \s-1ACT-IV\s0 needs the current row and column sent
+preceded by a \fB^T\fP, 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 (\fBcub1\fP),
+and to move the cursor up one line on the screen (\fBcuu1\fP).
+This is necessary because it is not always safe to transmit \fB\en\fP
+\fB^D\fP and \fB\er\fP, as the system may change or discard them.
+(The library routines dealing with terminfo set tty modes so that
+tabs are never expanded, so \et is safe to send.
+This turns out to be essential for the Ann Arbor 4080.)
+.PP
+A final example is the \s-1LSI ADM\s0-3a, which uses row and column
+offset by a blank character, thus \*(``cup=\eE=%p1%\(aq \(aq%+%c%p2%\(aq \(aq%+%c\*(''.
+After sending \*(``\eE=\*('', 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 arithmetic is possible using the stack.
+.PP
+.SS Cursor Motions
+.PP
+If the terminal has a fast way to home the cursor
+(to very upper left corner of screen) then this can be given as
+\fBhome\fP; similarly a fast way of getting to the lower left-hand corner
+can be given as \fBll\fP; this may involve going up with \fBcuu1\fP
+from the home position,
+but a program should never do this itself (unless \fBll\fP does) because it
+can make no assumption about the effect of moving up from the home position.
+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 \eEH sequence on HP terminals cannot be used for
+.BR home .)
+.PP
+If the terminal has row or column absolute cursor addressing,
+these can be given as single parameter capabilities
+.B hpa
+(horizontal position absolute)
+and
+.B vpa
+(vertical position absolute).
+Sometimes these are shorter than the more general two parameter
+sequence (as with the hp2645) and can be used in preference to
+.BR cup .
+If there are parameterized local motions (e.g., move
+.I n
+spaces to the right) these can be given as
+.BR cud ,
+.BR cub ,
+.BR cuf ,
+and
+.B cuu
+with a single parameter indicating how many spaces to move.
+These are primarily useful if the terminal does not have
+.BR cup ,
+such as the \s-1TEKTRONIX\s+1 4025.
+.PP
+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 \fBsmcup\fP and \fBrmcup\fP.
+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 \s-1TEKTRONIX\s+1 4025,
+where
+.B smcup
+sets the command character to be the one used by terminfo.
+If the \fBsmcup\fP sequence will not restore the screen after an
+\fBrmcup\fP sequence is output (to the state prior to outputting
+\fBrmcup\fP), specify \fBnrrmc\fP.
+.PP
+.SS Margins
+SVr4 (and X/Open Curses)
+list several string capabilities for setting margins.
+Two were intended for use with terminals,
+and another six were intended for use with printers.
+.bP
+The two terminal capabilities assume that the terminal may have
+the capability of setting the left and/or right margin at the current
+cursor column position.
+.bP
+The printer capabilities assume that the printer may have
+two types of capability:
+.RS
+.bP
+the ability to set a top and/or bottom margin using the current
+line position, and
+.bP
+parameterized capabilities for setting the top, bottom, left, right margins
+given the number of rows or columns.
+.RE
+.RE
+.PP
+In practice, the categorization into \*(``terminal\*('' and \*(``printer\*(''
+is not suitable:
+.bP
+The AT&T SVr4 terminal database uses \fBsmgl\fP four times,
+for AT&T hardware.
+.IP
+Three of the four are printers.
+They lack the ability to set left/right margins by specifying the column.
+.bP
+Other (non-AT&T) terminals may support margins
+but using different assumptions from AT&T.
+.IP
+For instance, the DEC VT420 supports left/right margins,
+but only using a column parameter.
+As an added complication, the VT420 uses two settings to fully enable
+left/right margins (left/right margin mode, and origin mode).
+The former enables the margins, which causes printed text
+to wrap within margins, but the latter is needed to prevent
+cursor-addressing outside those margins.
+.bP
+Both DEC VT420 left/right margins are set with a single control sequence.
+If either is omitted, the corresponding margin is set to the left or
+right edge of the display (rather than leaving the margin unmodified).
+.PP
+These are the margin-related capabilities:
+.TS
+center;
+l l
+_ _
+lw8 l.
+\fBName Description\fP
+smgl Set left margin at current column
+smgr Set right margin at current column
+smgb Set bottom margin at current line
+smgt Set top margin at current line
+smgbp Set bottom margin at line \fIN\fP
+smglp Set left margin at column \fIN\fP
+smgrp Set right margin at column \fIN\fP
+smgtp Set top margin at line \fIN\fP
+smglr Set both left and right margins to \fIL\fP and \fIR\fP
+smgtb Set both top and bottom margins to \fIT\fP and \fIB\fP
+.TE
+.PP
+When writing an application that
+uses these string capabilities,
+the pairs should be first checked to see
+if each capability in the pair is set or only one is set:
+.bP
+If both \fBsmglp\fP and \fBsmgrp\fP are set,
+each is used with a single argument, \fIN\fP,
+that gives the column number of the left and right margin, respectively.
+.bP
+If both \fBsmgtp\fP and \fBsmgbp\fP are set,
+each is used to set the top and bottom margin,
+respectively:
+.RS 4
+.bP
+\fBsmgtp\fP is used with a single argument, \fIN\fP,
+the line number of the top margin.
+.bP
+\fBsmgbp\fP is used with two arguments, \fIN\fP and \fIM\fP,
+that give the line number of the bottom margin,
+the first counting from the top of the
+page and the second counting from the bottom.
+This accommodates the two styles of specifying
+the bottom margin in different manufacturers' printers.
+.RE
+.IP
+When designing a terminfo entry for a
+printer that has a settable bottom margin,
+only the first or second argument should be used, depending on the printer.
+When developing an application that uses \fBsmgbp\fP to set the bottom margin,
+both arguments must be given.
+.PP
+Conversely, when only one capability in the pair is set:
+.bP
+If only one of \fBsmglp\fP and \fBsmgrp\fP is set,
+then it is used with two arguments,
+the column number of the left and right margins, in that order.
+.bP
+Likewise, if only one of \fBsmgtp\fP and \fBsmgbp\fP is set, then it
+is used with two arguments that give the top and bottom margins,
+in that order, counting from the top of the page.
+.IP
+When designing a terminfo entry for a printer that requires setting both
+left and right or top and bottom margins simultaneously,
+only one capability in the pairs
+\fBsmglp\fP and \fBsmgrp\fP or
+\fBsmgtp\fP and \fBsmgbp\fP should be defined,
+leaving the other unset.
+.PP
+Except for very old terminal descriptions, e.g., those developed for SVr4,
+the scheme just described should be considered obsolete.
+An improved set of capabilities was added late in the SVr4 releases
+(\fBsmglr\fP and \fBsmgtb\fP),
+which explicitly use two parameters for setting the left/right or top/bottom
+margins.
+.PP
+When setting margins, the line- and column-values are zero-based.
+.PP
+The \fBmgc\fP string capability should be defined.
+Applications such as \fBtabs\fP(1) rely upon this to reset all margins.
+.\"
+.SS Area Clears
+.PP
+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 \fBel\fP.
+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 \fBel1\fP.
+If the terminal can clear from the current position to the end of the
+display, then this should be given as \fBed\fP.
+\fBEd\fP 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
+.B ed
+is not available.)
+.PP
+.\"
+.SS Insert/delete line and vertical motions
+.PP
+If the terminal can open a new blank line before the line where the cursor
+is, this should be given as \fBil1\fP; 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 \fBdl1\fP; this is done only from the first position on
+the line to be deleted.
+Versions of
+.B il1
+and
+.B dl1
+which take a single parameter and insert or delete that many lines can
+be given as
+.B il
+and
+.BR dl .
+.PP
+If the terminal has a settable scrolling region (like the vt100)
+the command to set this can be described with the
+.B 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.
+.PP
+It is possible to get the effect of insert or delete line using
+.B csr
+on a properly chosen region; the
+.B sc
+and
+.B 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 \fBncurses\fP(3NCURSES) library does this synthesis
+automatically, so you need not compose insert/delete strings for
+an entry with \fBcsr\fP).
+.PP
+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).
+.PP
+Inserting lines at the top or bottom of the screen can also be
+done using
+.B ri
+or
+.B ind
+on many terminals without a true insert/delete line,
+and is often faster even on terminals with those features.
+.PP
+The boolean \fBnon_dest_scroll_region\fP should be set if each scrolling
+window is effectively 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 \fBri\fP followed by \fBdl1\fP or \fBind\fP.
+If the data scrolled
+off the bottom of the region by the \fBri\fP re-appears, then scrolling
+is non-destructive.
+System V and XSI Curses expect that \fBind\fP, \fBri\fP,
+\fBindn\fP, and \fBrin\fP will simulate destructive scrolling; their
+documentation cautions you not to define \fBcsr\fP unless this is true.
+This \fBcurses\fP implementation is more liberal and will do explicit erases
+after scrolling if \fBndsrc\fP is defined.
+.PP
+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
+.BR wind .
+The four parameters are the starting and ending lines in memory
+and the starting and ending columns in memory, in that order.
+.PP
+If the terminal can retain display memory above, then the
+\fBda\fP capability should be given; if display memory can be retained
+below, then \fBdb\fP should be given.
+These indicate
+that deleting a line or scrolling may bring non-blank lines up from below
+or that scrolling back with \fBri\fP may bring down non-blank lines.
+.PP
+.SS Insert/Delete Character
+.PP
+There are two basic kinds of intelligent terminals with respect to
+insert/delete character which can be described using
+.I terminfo.
+The most common insert/delete character operations affect only the characters
+on the current line and shift characters 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.
+.PP
+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 capability \fBin\fP, which stands for
+\*(``insert null\*(''.
+.PP
+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.
+.PP
+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 \fBsmir\fP the sequence to get into insert mode.
+Give as \fBrmir\fP the sequence to leave insert mode.
+Now give as \fBich1\fP any sequence needed to be sent just before sending
+the character to be inserted.
+Most terminals with a true insert mode
+will not give \fBich1\fP; terminals which send a sequence to open a screen
+position should give it here.
+.PP
+If your terminal has both, insert mode is usually preferable to \fBich1\fP.
+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 \fBich\fP sequences do not
+require previous smir, and most smir insert modes do not require \fBich1\fP
+before each character.
+Therefore, the new \fBcurses\fP actually assumes this
+is the case and uses either \fBrmir\fP/\fBsmir\fP or \fBich\fP/\fBich1\fP 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
+\fBrmir\fP/\fBsmir\fP sequences in \fBich1\fP.
+.PP
+If post insert padding is needed, give this as a number of milliseconds
+in \fBip\fP (a string option).
+Any other sequence which may need to be
+sent after an insert of a single character may also be given in \fBip\fP.
+If your terminal needs both to be placed into an \*(``insert mode\*('' and
+a special code to precede each inserted character, then both
+.BR smir / rmir
+and
+.B ich1
+can be given, and both will be used.
+The
+.B ich
+capability, with one parameter,
+.IR n ,
+will repeat the effects of
+.B ich1
+.I n
+times.
+.PP
+If padding is necessary between characters typed while not
+in insert mode, give this as a number of milliseconds padding in \fBrmp\fP.
+.PP
+It is occasionally necessary to move around while in insert mode
+to delete characters 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 \fBmir\fP to speed up inserting
+in this case.
+Omitting \fBmir\fP will affect only speed.
+Some terminals
+(notably Datamedia's) must not have \fBmir\fP because of the way their
+insert mode works.
+.PP
+Finally, you can specify
+.B dch1
+to delete a single character,
+.B dch
+with one parameter,
+.IR n ,
+to delete
+.I n characters,
+and delete mode by giving \fBsmdc\fP and \fBrmdc\fP
+to enter and exit delete mode (any mode the terminal needs to be placed
+in for
+.B dch1
+to work).
+.PP
+A command to erase
+.I n
+characters (equivalent to outputting
+.I n
+blanks without moving the cursor)
+can be given as
+.B ech
+with one parameter.
+.PP
+.SS "Highlighting, Underlining, and Visible Bells"
+.PP
+If your terminal has one or more kinds of display attributes,
+these can be represented in a number of different ways.
+You should choose one display form as
+\f2standout mode\fP,
+representing a good, high contrast, easy-on-the-eyes,
+format for highlighting 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 \fBsmso\fP and \fBrmso\fP, 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 \fBxmc\fP should be given to tell how many spaces are left.
+.PP
+Codes to begin underlining and end underlining can be given as \fBsmul\fP
+and \fBrmul\fP 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 \fBuc\fP.
+.PP
+Other capabilities to enter various highlighting modes include
+.B blink
+(blinking)
+.B bold
+(bold or extra bright)
+.B dim
+(dim or half-bright)
+.B invis
+(blanking or invisible text)
+.B prot
+(protected)
+.B rev
+(reverse video)
+.B sgr0
+(turn off
+.I all
+attribute modes)
+.B smacs
+(enter alternate character set mode)
+and
+.B rmacs
+(exit alternate character set mode).
+Turning on any of these modes singly may or may not turn off other modes.
+.PP
+If there is a sequence to set arbitrary combinations of modes,
+this should be given as
+.B 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
+.BR sgr ,
+only those for which corresponding separate attribute commands exist.
+.PP
+For example, the DEC vt220 supports most of the modes:
+.PP
+.TS
+center;
+l l l
+l l l
+lw18 lw14 l.
+\fBtparm parameter attribute escape sequence\fP
+
+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)
+.TE
+.PP
+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 combination 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 resulting sequence is \\E[0;1;4;5;7;8m^N.
+.PP
+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 on.
+.PP
+Writing out the above sequences, along with their dependencies yields
+.PP
+.ne 11
+.TS
+center;
+l l l
+l l l
+lw18 lw14 l.
+\fBsequence when to output terminfo translation\fP
+
+.ft CW
+\\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%;
+.ft R
+.TE
+.PP
+Putting this all together into the sgr sequence gives:
+.PP
+.ft CW
+.nf
+ sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%;
+ %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;,
+.fi
+.ft R
+.PP
+Remember that if you specify sgr, you must also specify sgr0.
+Also, some implementations 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.
+.PP
+Terminals with the \*(``magic cookie\*('' glitch
+.RB ( 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, automatically 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
+.B msgr
+capability, asserting that it is safe to move in standout mode, is present.
+.PP
+If the terminal has
+a way of flashing the screen to indicate an error quietly (a bell replacement)
+then this can be given as \fBflash\fP; it must not move the cursor.
+.PP
+If the cursor needs to be made more visible than normal when it is
+not on the bottom line (to make, for example, a non-blinking underline into an
+easier to find block or blinking underline)
+give this sequence as
+.BR cvvis .
+If there is a way to make the cursor completely invisible, give that as
+.BR civis .
+The capability
+.B cnorm
+should be given which undoes the effects of both of these modes.
+.PP
+If your terminal correctly generates underlined characters
+(with no special codes needed)
+even though it does not overstrike,
+then you should give the capability \fBul\fP.
+If a character overstriking another leaves both characters on the screen,
+specify the capability \fBos\fP.
+If overstrikes are erasable with a blank,
+then this should be indicated by giving \fBeo\fP.
+.PP
+.SS Keypad and Function Keys
+.PP
+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 \fBsmkx\fP and \fBrmkx\fP.
+Otherwise the keypad is assumed to always transmit.
+.PP
+The codes sent by the left arrow, right arrow, up arrow, down arrow,
+and home keys can be given as
+\fBkcub1, kcuf1, kcuu1, kcud1, \fRand\fB khome\fP respectively.
+If there are function keys such as f0, f1, ..., f10, the codes they send
+can be given as \fBkf0, kf1, ..., kf10\fP.
+If these keys have labels other than the default f0 through f10, the labels
+can be given as \fBlf0, lf1, ..., lf10\fP.
+.PP
+The codes transmitted by certain other special keys can be given:
+.bP
+.B kll
+(home down),
+.bP
+.B kbs
+(backspace),
+.bP
+.B ktbc
+(clear all tabs),
+.bP
+.B kctab
+(clear the tab stop in this column),
+.bP
+.B kclr
+(clear screen or erase key),
+.bP
+.B kdch1
+(delete character),
+.bP
+.B kdl1
+(delete line),
+.bP
+.B krmir
+(exit insert mode),
+.bP
+.B kel
+(clear to end of line),
+.bP
+.B ked
+(clear to end of screen),
+.bP
+.B kich1
+(insert character or enter insert mode),
+.bP
+.B kil1
+(insert line),
+.bP
+.B knp
+(next page),
+.bP
+.B kpp
+(previous page),
+.bP
+.B kind
+(scroll forward/down),
+.bP
+.B kri
+(scroll backward/up),
+.bP
+.B khts
+(set a tab stop in this column).
+.PP
+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
+.BR ka1 ,
+.BR ka3 ,
+.BR kb2 ,
+.BR kc1 ,
+and
+.BR kc3 .
+These keys are useful when the effects of a 3 by 3 directional pad are needed.
+.PP
+Strings to program function keys can be given as
+.BR pfkey ,
+.BR pfloc ,
+and
+.BR pfx .
+A string to program screen labels should be specified as \fBpln\fP.
+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
+.B pfkey
+causes pressing the given key to be the same as the user typing the
+given string;
+.B pfloc
+causes the string to be executed by the terminal in local; and
+.B pfx
+causes the string to be transmitted to the computer.
+.PP
+The capabilities \fBnlab\fP, \fBlw\fP and \fBlh\fP
+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 \fBsmln\fP and \fBrmln\fP.
+\fBsmln\fP is normally output after one or more pln
+sequences to make sure that the change becomes visible.
+.PP
+.SS Tabs and Initialization
+.PP
+A few capabilities are used only for tabs:
+.bP
+If the terminal has hardware tabs, the command to advance to the next
+tab stop can be given as
+.B ht
+(usually control/I).
+.bP
+A \*(``back-tab\*('' command which moves leftward to the preceding tab stop can
+be given as
+.BR cbt .
+.IP
+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
+.B ht
+or
+.B cbt
+even if they are present, since the user may not have the tab stops
+properly set.
+.bP
+If the terminal has hardware tabs which are initially set every
+.I n
+spaces when the terminal is powered up,
+the numeric parameter
+.B it
+is given, showing the number of spaces the tabs are set to.
+.IP
+The \fBit\fP capability is normally used by the \fBtset\fP
+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.
+.PP
+Other capabilities
+include
+.bP
+.BR is1 ,
+.BR is2 ,
+and
+.BR is3 ,
+initialization strings for the terminal,
+.bP
+.BR iprog ,
+the path name of a program to be run to initialize the terminal,
+.bP
+and \fBif\fP, the name of a file containing long initialization strings.
+.PP
+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
+.I init
+option of the \fBtput\fP program, each time the user logs in.
+They will be printed in the following order:
+.RS
+.TP
+run the program
+.B iprog
+.TP
+output
+.br
+\fBis1\fP and
+.br
+\fBis2\fP
+.TP
+set the margins using
+\fBmgc\fP or
+.br
+\fBsmglp\fP and \fBsmgrp\fP or
+.br
+\fBsmgl\fP and \fBsmgr\fP
+.TP
+set tabs using
+.B tbc
+and
+.B hts
+.TP
+print the file
+\fBif\fP
+.TP
+and finally output
+\fBis3\fP.
+.RE
+.PP
+Most initialization is done with
+.BR is2 .
+Special terminal modes can be set up without duplicating strings
+by putting the common sequences in
+.B is2
+and special cases in
+.B is1
+and
+.BR is3 .
+.PP
+A set of sequences that does a harder reset from a totally unknown state
+can be given as
+.BR rs1 ,
+.BR rs2 ,
+.B rf
+and
+.BR rs3 ,
+analogous to
+.B is1 ,
+.B is2 ,
+.B if
+and
+.B is3
+respectively.
+These strings are output
+by \fIreset\fP option of \fBtput\fP,
+or by the \fBreset\fP program
+(an alias of \fBtset\fP),
+which is used when the terminal gets into a wedged state.
+Commands are normally placed in
+.BR rs1 ,
+.B rs2
+.B rs3
+and
+.B 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
+.BR 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.
+.PP
+The \fBreset\fP program writes strings including
+.BR iprog ,
+etc., in the same order as the
+.I init
+program, using
+.BR rs1 ,
+etc., instead of
+.BR is1 ,
+etc.
+If any of
+.BR rs1 ,
+.BR rs2 ,
+.BR rs3 ,
+or
+.B rf
+reset capability strings are missing,
+the \fBreset\fP program
+falls back upon the corresponding initialization capability string.
+.PP
+If there are commands to set and clear tab stops, they can be given as
+.B tbc
+(clear all tab stops)
+and
+.B 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
+.B is2
+or
+.BR if .
+.PP
+The \fBtput reset\fP command uses the same capability strings
+as the \fBreset\fP command,
+although the two programs (\fBtput\fP and \fBreset\fP)
+provide different command-line options.
+.PP
+In practice, these terminfo capabilities are not often used in
+initialization of tabs
+(though they are required for the \fBtabs\fP program):
+.bP
+Almost all hardware terminals (at least those which supported tabs)
+initialized those to every \fIeight\fP columns:
+.IP
+The only exception was the AT&T 2300 series,
+which set tabs to every \fIfive\fP columns.
+.bP
+In particular, developers of the hardware terminals which are commonly used
+as models for modern terminal emulators provided documentation demonstrating
+that \fIeight\fP columns were the standard.
+.bP
+Because of this, the terminal initialization programs
+\fBtput\fP and \fBtset\fP
+use the
+\fBtbc\fP (\fBclear_all_tabs\fP) and
+\fBhts\fP (\fBset_tab\fP) capabilities directly
+only when the \fBit\fP (\fBinit_tabs\fP) capability
+is set to a value other than \fIeight\fP.
+.SS Delays and Padding
+.PP
+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.
+.PP
+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
+.BR 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 decisions about relative costs, but actual pad characters will
+not be transmitted.
+.PP
+If \fBpb\fP (padding baud rate) is given, padding is suppressed at baud rates
+below the value of \fBpb\fP.
+If the entry has no padding baud rate, then
+whether padding is emitted or not is completely controlled by \fBxon\fP.
+.PP
+If the terminal requires other than a null (zero) character as a pad,
+then this can be given as \fBpad\fP.
+Only the first character of the
+.B pad
+string is used.
+.PP
+.SS Status Lines
+Some terminals have an extra \*(``status line\*('' which is not normally used by
+software (and thus not counted in the terminal's \fBlines\fP capability).
+.PP
+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 initialization.
+This situation is indicated
+by the \fBhs\fP capability.
+.PP
+Some terminals with status lines need special sequences to access the
+status line.
+These may be expressed as a string with single parameter
+\fBtsl\fP which takes the cursor to a given zero-origin column on the
+status line.
+The capability \fBfsl\fP must return to the main-screen
+cursor positions before the last \fBtsl\fP.
+You may need to embed the
+string values of \fBsc\fP (save cursor) and \fBrc\fP (restore cursor)
+in \fBtsl\fP and \fBfsl\fP to accomplish this.
+.PP
+The status line is normally assumed to be the same width as the width
+of the terminal.
+If this is untrue, you can specify it with the numeric
+capability \fBwsl\fP.
+.PP
+A command to erase or blank the status line may be specified as \fBdsl\fP.
+.PP
+The boolean capability \fBeslok\fP specifies that escape sequences, tabs,
+etc., work ordinarily in the status line.
+.PP
+The \fBncurses\fP implementation does not yet use any of these capabilities.
+They are documented here in case they ever become important.
+.PP
+.SS Line Graphics
+.PP
+Many terminals have alternate character sets useful for forms-drawing.
+Terminfo and \fBcurses\fP have built-in support
+for most of 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 \fBacsc\fP capability.
+.PP
+.TS H
+center;
+l l l l l
+l l l l l
+_ _ _ _ _
+lw25 lw10 lw6 lw6 l.
+.\".TH
+\fBGlyph ACS Ascii acsc acsc\fP
+\fBName Name Default Char Value\fP
+arrow pointing right ACS_RARROW > + 0x2b
+arrow pointing left ACS_LARROW < , 0x2c
+arrow pointing up ACS_UARROW ^ \- 0x2d
+arrow pointing down ACS_DARROW v . 0x2e
+solid square block ACS_BLOCK # 0 0x30
+diamond ACS_DIAMOND + ` 0x60
+checker board (stipple) ACS_CKBOARD : a 0x61
+degree symbol ACS_DEGREE \e f 0x66
+plus/minus ACS_PLMINUS # g 0x67
+board of squares ACS_BOARD # h 0x68
+lantern symbol ACS_LANTERN # i 0x69
+lower right corner ACS_LRCORNER + j 0x6a
+upper right corner ACS_URCORNER + k 0x6b
+upper left corner ACS_ULCORNER + l 0x6c
+lower left corner ACS_LLCORNER + m 0x6d
+large plus or crossover ACS_PLUS + n 0x6e
+scan line 1 ACS_S1 ~ o 0x6f
+scan line 3 ACS_S3 \- p 0x70
+horizontal line ACS_HLINE \- q 0x71
+scan line 7 ACS_S7 \- r 0x72
+scan line 9 ACS_S9 \&_ s 0x73
+tee pointing right ACS_LTEE + t 0x74
+tee pointing left ACS_RTEE + u 0x75
+tee pointing up ACS_BTEE + v 0x76
+tee pointing down ACS_TTEE + w 0x77
+vertical line ACS_VLINE | x 0x78
+less-than-or-equal-to ACS_LEQUAL < y 0x79
+greater-than-or-equal-to ACS_GEQUAL > z 0x7a
+greek pi ACS_PI * { 0x7b
+not-equal ACS_NEQUAL ! | 0x7c
+UK pound sign ACS_STERLING f } 0x7d
+bullet ACS_BULLET o ~ 0x7e
+.TE
+.PP
+A few notes apply to the table itself:
+.bP
+X/Open Curses incorrectly states that the mapping for \fIlantern\fP is
+uppercase \*(``I\*('' although Unix implementations use the
+lowercase \*(``i\*('' mapping.
+.bP
+The DEC VT100 implemented graphics using the alternate character set
+feature, temporarily switching \fImodes\fP and sending characters
+in the range 0x60 (96) to 0x7e (126)
+(the \fBacsc Value\fP column in the table).
+.bP
+The AT&T terminal added graphics characters outside that range.
+.IP
+Some of the characters within the range do not match the VT100;
+presumably they were used in the AT&T terminal:
+\fIboard of squares\fP replaces the VT100 \fInewline\fP symbol, while
+\fIlantern symbol\fP replaces the VT100 \fIvertical tab\fP symbol.
+The other VT100 symbols for control characters (\fIhorizontal tab\fP,
+\fIcarriage return\fP and \fIline-feed\fP) are not (re)used in curses.
+.PP
+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 \fBsmacs\fP/\fBrmacs\fP 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.
+.PP
+.SS Color Handling
+.PP
+The curses library functions \fBinit_pair\fP and \fBinit_color\fP
+manipulate the \fIcolor pairs\fP and \fIcolor values\fP discussed in this
+section
+(see \fBcolor\fP(3NCURSES) for details on these and related functions).
+.PP
+Most color terminals are either \*(``Tektronix-like\*('' or \*(``HP-like\*('':
+.bP
+Tektronix-like
+terminals have a predefined set of \fIN\fP colors
+(where \fIN\fP is usually 8),
+and can set
+character-cell foreground and background characters independently, mixing them
+into \fIN\fP\ *\ \fIN\fP color-pairs.
+.bP
+On HP-like terminals, the user must set each color
+pair up separately (foreground and background are not independently settable).
+Up to \fIM\fP color-pairs may be set up from 2*\fIM\fP different colors.
+ANSI-compatible terminals are Tektronix-like.
+.PP
+Some basic color capabilities are independent of the color method.
+The numeric
+capabilities \fBcolors\fP and \fBpairs\fP specify the maximum numbers of colors
+and color-pairs that can be displayed simultaneously.
+The \fBop\fP (original
+pair) string resets foreground and background colors to their default values
+for the terminal.
+The \fBoc\fP 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
+\fBbce\fP.
+.PP
+While the curses library works with \fIcolor pairs\fP
+(reflecting the inability of some devices to set foreground
+and background colors independently),
+there are separate capabilities for setting these features:
+.bP
+To change the current foreground or background color on a Tektronix-type
+terminal, use \fBsetaf\fP (set ANSI foreground) and \fBsetab\fP (set ANSI
+background) or \fBsetf\fP (set foreground) and \fBsetb\fP (set background).
+These take one parameter, the color number.
+The SVr4 documentation describes
+only \fBsetaf\fP/\fBsetab\fP; the XPG4 draft says that "If the terminal
+supports ANSI escape sequences to set background and foreground, they should
+be coded as \fBsetaf\fP and \fBsetab\fP, respectively.
+.bP
+If the terminal
+supports other escape sequences to set background and foreground, they should
+be coded as \fBsetf\fP and \fBsetb\fP, respectively.
+The \fBvidputs\fP and the \fBrefresh\fP(3X) functions
+use the \fBsetaf\fP and \fBsetab\fP capabilities if they are defined.
+.PP
+The \fBsetaf\fP/\fBsetab\fP and \fBsetf\fP/\fBsetb\fP capabilities take a
+single numeric argument each.
+Argument values 0-7 of \fBsetaf\fP/\fBsetab\fP are portably defined as
+follows (the middle column is the symbolic #define available in the header for
+the \fBcurses\fP or \fBncurses\fP libraries).
+The terminal hardware is free to
+map these as it likes, but the RGB values indicate normal locations in color
+space.
+.PP
+.TS H
+center;
+l c c c
+l l n l.
+\fBColor #define Value RGB\fP
+black \fBCOLOR_BLACK\fP 0 0, 0, 0
+red \fBCOLOR_RED\ \fP 1 max,0,0
+green \fBCOLOR_GREEN\fP 2 0,max,0
+yellow \fBCOLOR_YELLOW\fP 3 max,max,0
+blue \fBCOLOR_BLUE\fP 4 0,0,max
+magenta \fBCOLOR_MAGENTA\fP 5 max,0,max
+cyan \fBCOLOR_CYAN\fP 6 0,max,max
+white \fBCOLOR_WHITE\fP 7 max,max,max
+.TE
+.PP
+The argument values of \fBsetf\fP/\fBsetb\fP historically correspond to
+a different mapping, i.e.,
+.TS H
+center;
+l c c c
+l l n l.
+\fBColor #define Value RGB\fP
+black \fBCOLOR_BLACK\fP 0 0, 0, 0
+blue \fBCOLOR_BLUE\fP 1 0,0,max
+green \fBCOLOR_GREEN\fP 2 0,max,0
+cyan \fBCOLOR_CYAN\fP 3 0,max,max
+red \fBCOLOR_RED\ \fP 4 max,0,0
+magenta \fBCOLOR_MAGENTA\fP 5 max,0,max
+yellow \fBCOLOR_YELLOW\fP 6 max,max,0
+white \fBCOLOR_WHITE\fP 7 max,max,max
+.TE
+.PP
+It is important to not confuse the two sets of color capabilities;
+otherwise red/blue will be interchanged on the display.
+.PP
+On an HP-like terminal, use \fBscp\fP with a color-pair number parameter to set
+which color pair is current.
+.PP
+Some terminals allow the \fIcolor values\fP to be modified:
+.bP
+On a Tektronix-like terminal, the capability \fBccc\fP may be present to
+indicate that colors can be modified.
+If so, the \fBinitc\fP capability will
+take a color number (0 to \fBcolors\fP \- 1)and three more parameters which
+describe the color.
+These three parameters default to being interpreted as RGB
+(Red, Green, Blue) values.
+If the boolean capability \fBhls\fP is present,
+they are instead as HLS (Hue, Lightness, Saturation) indices.
+The ranges are
+terminal-dependent.
+.bP
+On an HP-like terminal, \fBinitp\fP may give a capability for changing a
+color-pair value.
+It will take seven parameters; a color-pair number (0 to
+\fBmax_pairs\fP \- 1), and two triples describing first background and then
+foreground colors.
+These parameters must be (Red, Green, Blue) or
+(Hue, Lightness, Saturation) depending on \fBhls\fP.
+.PP
+On some color terminals, colors collide with highlights.
+You can register
+these collisions with the \fBncv\fP capability.
+This is a bit-mask of
+attributes not to be used when colors are enabled.
+The correspondence with the
+attributes understood by \fBcurses\fP is as follows:
+.PP
+.TS
+center;
+l l l l
+lw20 lw2 lw10 l.
+\fBAttribute Bit Decimal Set by\fP
+A_STANDOUT 0 1 sgr
+A_UNDERLINE 1 2 sgr
+A_REVERSE 2 4 sgr
+A_BLINK 3 8 sgr
+A_DIM 4 16 sgr
+A_BOLD 5 32 sgr
+A_INVIS 6 64 sgr
+A_PROTECT 7 128 sgr
+A_ALTCHARSET 8 256 sgr
+A_HORIZONTAL 9 512 sgr1
+A_LEFT 10 1024 sgr1
+A_LOW 11 2048 sgr1
+A_RIGHT 12 4096 sgr1
+A_TOP 13 8192 sgr1
+A_VERTICAL 14 16384 sgr1
+A_ITALIC 15 32768 sitm
+.TE
+.PP
+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 \fBncv\fP capability of 2.
+.PP
+SVr4 curses does nothing with \fBncv\fP, ncurses recognizes it and optimizes
+the output in favor of colors.
+.PP
+.SS Miscellaneous
+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 terminal does not have a pad character, specify npc.
+Note that ncurses implements the termcap-compatible \fBPC\fP variable;
+though the application may set this value to something other than
+a null, ncurses will test \fBnpc\fP first and use napms if the terminal
+has no pad character.
+.PP
+If the terminal can move up or down half a line,
+this can be indicated with
+.B hu
+(half-line up)
+and
+.B 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
+.B ff
+(usually control/L).
+.PP
+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
+.BR 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, \(aqx\(aq, 10) is the same as \*(``xxxxxxxxxx\*(''.
+.PP
+If the terminal has a settable command character, such as the \s-1TEKTRONIX\s+1 4025,
+this can be indicated with
+.BR cmdch .
+A prototype command character is chosen which is used in all capabilities.
+This character is given in the
+.B cmdch
+capability to identify it.
+The following convention is supported on some UNIX systems:
+The environment is to be searched for a
+.B CC
+variable, and if found, all
+occurrences of the prototype character are replaced with the character
+in the environment variable.
+.PP
+Terminal descriptions that do not represent a specific kind of known
+terminal, such as
+.IR switch ,
+.IR dialup ,
+.IR patch ,
+and
+.IR network ,
+should include the
+.B 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
+.I virtual
+terminal descriptions for which the escape sequences are known.)
+.PP
+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
+.BR km .
+Otherwise, software 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
+.B smm
+and
+.BR rmm .
+.PP
+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
+.BR lm .
+A value of
+.BR lm #0
+indicates that the number of lines is not fixed,
+but that there is still more memory than fits on the screen.
+.PP
+If the terminal is one of those supported by the \s-1UNIX\s+1 virtual
+terminal protocol, the terminal number can be given as
+.BR vt .
+.PP
+Media copy
+strings which control an auxiliary printer connected to the terminal
+can be given as
+.BR mc0 :
+print the contents of the screen,
+.BR mc4 :
+turn off the printer, and
+.BR 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
+.B 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
+.BR mc4 ,
+is transparently passed to the printer while an
+.B mc5p
+is in effect.
+.PP
+.SS Glitches and Braindamage
+.PP
+Hazeltine terminals, which do not allow \*(``~\*('' characters to be displayed should
+indicate \fBhz\fP.
+.PP
+Terminals which ignore a line-feed immediately after an \fBam\fP wrap,
+such as the Concept and vt100,
+should indicate \fBxenl\fP.
+.PP
+If
+.B el
+is required to get rid of standout
+(instead of merely writing normal text on top of it),
+\fBxhp\fP should be given.
+.PP
+Teleray terminals, where tabs turn all characters moved over to blanks,
+should indicate \fBxt\fP (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.
+.PP
+The Beehive Superbee, which is unable to correctly transmit the escape
+or control/C characters, has
+.BR xsb ,
+indicating that the f1 key is used for escape and f2 for control/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\*(''.
+.PP
+Other specific terminal problems may be corrected by adding more
+capabilities of the form \fBx\fP\fIx\fP.
+.PP
+.SS Pitfalls of Long Entries
+.PP
+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 translations
+of long terminfo entries can cause problems.
+.PP
+The man pages for 4.3BSD and older versions of \fBtgetent\fP instruct the user to
+allocate a 1024-byte buffer for the termcap entry.
+The entry gets null-terminated by
+the termcap library, so that makes the maximum safe length for a termcap entry
+1k\-1 (1023) bytes.
+Depending on what the application and the termcap library
+being used does, and where in the termcap file the terminal type that \fBtgetent\fP
+is searching for is, several bad things can happen.
+.PP
+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.
+.PP
+Each termcap entry has two important sizes associated with it: before
+\*(``tc\*('' expansion, and after \*(``tc\*('' expansion.
+\*(``tc\*('' is the capability that
+tacks on another termcap entry to the end of the current one, to add
+on its capabilities.
+If a termcap entry does not use the \*(``tc\*(''
+capability, then of course the two lengths are the same.
+.PP
+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 \fBtgetent\fP strips out while reading it.
+Some termcap libraries strip off the final newline, too (GNU termcap does not).
+Now suppose:
+.bP
+a termcap entry before expansion is more than 1023 bytes long,
+.bP
+and the application has only allocated a 1k buffer,
+.bP
+and the termcap library (like the one in BSD/OS 1.1 and GNU) reads
+the whole entry into the buffer, no matter what its length, to see
+if it is the entry it wants,
+.bP
+and \fBtgetent\fP 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 \fBtgetent\fP has to search
+the whole termcap file).
+.PP
+Then \fBtgetent\fP will overwrite memory, perhaps its stack, and probably core dump
+the program.
+Programs like telnet are particularly vulnerable; modern telnets
+pass along values like the terminal type automatically.
+The results are almost
+as undesirable with a termcap library, like SunOS 4.1.3 and Ultrix 4.4, that
+prints warning messages when it reads an overly long termcap entry.
+If a
+termcap library truncates long entries, like OSF/1 3.0, it is immune to dying
+here but will return incorrect data for the terminal.
+.PP
+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 \fBtgetent\fP only does \*(``tc\*('' expansion once it is found the
+terminal type it was looking for, not while searching.
+.PP
+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 variable does not have a termcap
+entry.
+.PP
+When in \-C (translate to termcap) mode, the \fBncurses\fP implementation of
+\fBtic\fP(1) 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.
+.SS Binary Compatibility
+It is not wise to count on portability of binary terminfo entries between
+commercial UNIX versions.
+The problem is that there are at least two versions
+of terminfo (under HP\-UX and AIX) which diverged from System V terminfo after
+SVr1, and have added extension capabilities to the string table that (in the
+binary format) collide with System V and XSI Curses extensions.
+.SH EXTENSIONS
+.PP
+Searching for terminal descriptions in
+\fB$HOME/.terminfo\fP and TERMINFO_DIRS
+is not supported by older implementations.
+.PP
+Some SVr4 \fBcurses\fP implementations, and all previous to SVr4, do not
+interpret the %A and %O operators in parameter strings.
+.PP
+SVr4/XPG4 do not specify whether \fBmsgr\fP licenses movement while in
+an alternate-character-set mode (such modes may, among other things, map
+CR and NL to characters that do not trigger local motions).
+The \fBncurses\fP implementation ignores \fBmsgr\fP in \fBALTCHARSET\fP
+mode.
+This raises the possibility that an XPG4
+implementation making the opposite interpretation may need terminfo
+entries made for \fBncurses\fP to have \fBmsgr\fP turned off.
+.PP
+The \fBncurses\fP library handles insert-character and insert-character modes
+in a slightly non-standard way to get better update efficiency.
+See
+the \fBInsert/Delete Character\fP subsection above.
+.PP
+The parameter substitutions for \fBset_clock\fP and \fBdisplay_clock\fP are
+not documented in SVr4 or the XSI Curses standard.
+They are deduced from the
+documentation for the AT&T 505 terminal.
+.PP
+Be careful assigning the \fBkmous\fP capability.
+The \fBncurses\fP library wants to interpret it as \fBKEY_MOUSE\fP,
+for use by terminals and emulators like xterm
+that can return mouse-tracking information in the keyboard-input stream.
+.PP
+X/Open Curses does not mention italics.
+Portable applications must assume that numeric capabilities are
+signed 16-bit values.
+This includes the \fIno_color_video\fP (ncv) capability.
+The 32768 mask value used for italics with ncv can be confused with
+an absent or cancelled ncv.
+If italics should work with colors,
+then the ncv value must be specified, even if it is zero.
+.PP
+Different commercial ports of terminfo and curses support different subsets of
+the XSI Curses standard and (in some cases) different extension sets.
+Here
+is a summary, accurate as of October 1995:
+.bP
+\fBSVR4, Solaris, ncurses\fP \-\-
+These support all SVr4 capabilities.
+.bP
+\fBSGI\fP \-\-
+Supports the SVr4 set, adds one undocumented extended string
+capability (\fBset_pglen\fP).
+.bP
+\fBSVr1, Ultrix\fP \-\-
+These support a restricted subset of terminfo capabilities.
+The booleans end with \fBxon_xoff\fP;
+the numerics with \fBwidth_status_line\fP;
+and the strings with \fBprtr_non\fP.
+.bP
+\fBHP/UX\fP \-\-
+Supports the SVr1 subset, plus the SVr[234] numerics \fBnum_labels\fP,
+\fBlabel_height\fP, \fBlabel_width\fP, plus function keys 11 through 63, plus
+\fBplab_norm\fP, \fBlabel_on\fP, and \fBlabel_off\fP, plus some incompatible
+extensions in the string table.
+.bP
+\fBAIX\fP \-\-
+Supports the SVr1 subset, plus function keys 11 through 63, plus a number
+of incompatible string table extensions.
+.bP
+\fBOSF\fP \-\-
+Supports both the SVr4 set and the AIX extensions.
+.SH FILES
+.TP 25
+\*d/?/*
+files containing terminal descriptions
+.SH SEE ALSO
+\fBinfocmp\fP(1),
+\fBtabs\fP(1),
+\fBtic\fP(1),
+\fBncurses\fP(3NCURSES),
+\fBcolor\fP(3NCURSES),
+\fBcurses_variables\fP(3NCURSES),
+\fBprintf\fP(3),
+\fBterminfo_variables\fP(3NCURSES).
+\fBterm\fP(\*n).
+\fBuser_caps\fP(5).
+.SH AUTHORS
+Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
+Based on \fIpcurses\fP by Pavel Curtis.