summaryrefslogtreecommitdiff
path: root/lib/libcurses/terminfo.5tbl
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>1998-07-23 21:20:13 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>1998-07-23 21:20:13 +0000
commita8d3a59992970b350c84b6330592df657f919080 (patch)
treeecdb217d8210502c80484fb89fdaa25775a54fb1 /lib/libcurses/terminfo.5tbl
parent65d74b2bc105ada6c49c16682e6ee5bb92b84b03 (diff)
ncurses-4.2-980718
Diffstat (limited to 'lib/libcurses/terminfo.5tbl')
-rw-r--r--lib/libcurses/terminfo.5tbl3027
1 files changed, 3027 insertions, 0 deletions
diff --git a/lib/libcurses/terminfo.5tbl b/lib/libcurses/terminfo.5tbl
new file mode 100644
index 00000000000..ccddc4c2e3d
--- /dev/null
+++ b/lib/libcurses/terminfo.5tbl
@@ -0,0 +1,3027 @@
+'\" t
+.\" DO NOT EDIT THIS FILE BY HAND!
+.\" It is generated from terminfo.head, Caps, 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 (c) 1998 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. *
+.\"***************************************************************************
+.\"
+.\" $From: terminfo.head,v 1.8 1998/03/11 21:12:53 juergen Exp $
+.\" $OpenBSD: terminfo.5tbl,v 1.1 1998/07/23 21:20:05 millert Exp $
+.TH TERMINFO 5 "" "" "File Formats"
+.ds n 5
+.ds d /usr/share/terminfo
+.SH NAME
+terminfo \- terminal capability data base
+.SH SYNOPSIS
+\*d.db
+.br
+\*d/*/*
+.SH DESCRIPTION
+.I Terminfo
+is a data base describing terminals, used by screen-oriented programs such as
+\fBvi\fR(1),
+\fBrogue\fR(1)
+and libraries such as
+\fBcurses\fR(3).
+.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
+Entries in
+.I terminfo
+consist of a sequence of `,' separated fields (embedded commas may be
+escaped with a backslash or notated as \e072).
+White space after the `,' separator is ignored.
+The first entry for each terminal gives the names which are known for the
+terminal, separated by `|' characters.
+The first name given is the most common abbreviation for the terminal,
+the last name given should be a long name fully identifying the terminal,
+and all others are understood as synonyms for the terminal name.
+All names but the last should be in lower case and contain no blanks;
+the last name may well contain upper case and blanks for readability.
+.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(7)\fR manual page.
+.SS 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 tparm with
+parms as given (#\fIi\fP).
+.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 expand;
+c l l c
+c l l c
+lw25 lw6 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}
+no_esc_ctlc xsb xb T{
+beehive (f1=escape, f2=ctrl C)
+T}
+ceol_standout_glitch xhp xs T{
+standout not erased by overwriting (hp)
+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}
+has_meta_key km km T{
+Has a meta key, sets msb high
+T}
+has_status_line hs hs T{
+has extra status line
+T}
+insert_null_glitch in in T{
+insert mode distinguishes nulls
+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}
+over_strike os os T{
+terminal can overstrike
+T}
+status_line_esc_ok eslok es T{
+escape can be used on the status line
+T}
+dest_tabs_magic_smso xt xt T{
+tabs destructive, magic so char (t1061)
+T}
+tilde_glitch hz hz T{
+can't print ~'s (hazeltine)
+T}
+transparent_underline ul ul T{
+underline character overstrikes
+T}
+xon_xoff xon xo T{
+terminal uses xon/xoff handshaking
+T}
+needs_xon_xoff nxon nx T{
+padding won't work, xon/xoff required
+T}
+prtr_silent mc5i 5i T{
+printer won't echo on screen
+T}
+hard_cursor chts HC T{
+cursor is hard to see
+T}
+non_rev_rmcup nrrmc NR T{
+smcup does not reverse rmcup
+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}
+can_change ccc cc T{
+terminal can re-define existing colors
+T}
+back_color_erase bce ut T{
+screen erased with background color
+T}
+hue_lightness_saturation hls hl T{
+terminal uses only HLS color notation (tektronix)
+T}
+col_addr_glitch xhpa YA T{
+only positive motion for hpa/mhpa caps
+T}
+cr_cancels_micro_mode crxm YB T{
+using cr turns off micro mode
+T}
+has_print_wheel daisy YC T{
+printer needs operator to change character set
+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}
+cpi_changes_res cpix YF T{
+changing character pitch changes resolution
+T}
+lpi_changes_res lpix YG T{
+changing line pitch changes resolution
+T}
+.TE
+.ad
+
+These are the numeric capabilities:
+
+.na
+.TS H
+center expand;
+c l l c
+c l l c
+lw25 lw6 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}
+lines lines li T{
+number of lines on screen or page
+T}
+lines_of_memory lm lm T{
+lines of memory if > line. 0 => varies
+T}
+magic_cookie_glitch xmc sg T{
+number of blank characters left by smso or rmso
+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{
+columns in status line
+T}
+num_labels nlab Nl T{
+number of labels on screen
+T}
+label_height lh lh T{
+rows in each label
+T}
+label_width lw lw T{
+columns in each label
+T}
+max_attributes ma ma T{
+maximum combined attributes terminal can handle
+T}
+maximum_windows wnum MW T{
+maximum number of defineable windows
+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}
+no_color_video ncv NC T{
+video attributes that can't be used with colors
+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 expand;
+c l l c
+c l l c
+lw25 lw6 lw2 lw20.
+\fBVariable Cap- TCap Description\fR
+\fBNumeric name Code\fR
+buffer_capacity bufsz Ya T{
+numbers of bytes buffered before printing
+T}
+dot_vert_spacing spinv Yb T{
+spacing of pins vertically in pins per inch
+T}
+dot_horz_spacing spinh Yc T{
+spacing of dots horizontally in dots 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_char_size mcs Yf T{
+character size when in micro mode
+T}
+micro_line_size mls Yg T{
+line 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_line orl Yj T{
+vertical resolution in units per line
+T}
+output_res_horz_inch orhi Yk T{
+horizontal resolution in units per inch
+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}
+buttons btns BT T{
+number of buttons on mouse
+T}
+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}
+.TE
+.ad
+
+These are the string capabilities:
+
+.na
+.TS H
+center expand;
+c l l c
+c l l c
+lw25 lw6 lw2 lw20.
+\fBVariable Cap- TCap Description\fR
+\fBString name Code\fR
+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_scroll_region csr cs T{
+change region to line #1 to line #2 (P)
+T}
+clear_all_tabs tbc ct T{
+clear all tab stops (P)
+T}
+clear_screen clear cl T{
+clear screen and home cursor (P*)
+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}
+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
+T}
+cursor_normal cnorm ve T{
+make cursor appear normal (undo civis/cvvis)
+T}
+cursor_right cuf1 nd T{
+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}
+delete_character dch1 dc T{
+delete character (P*)
+T}
+delete_line dl1 dl T{
+delete line (P*)
+T}
+dis_status_line dsl ds T{
+disable status line
+T}
+down_half_line hd hd T{
+half a line down
+T}
+enter_alt_charset_mode smacs as T{
+start alternate character set (P)
+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_insert_mode smir im T{
+enter insert mode
+T}
+enter_secure_mode invis mk T{
+turn on blank mode (characters invisible)
+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_standout_mode smso so T{
+begin standout mode
+T}
+enter_underline_mode smul us T{
+begin underline mode
+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_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_insert_mode rmir ei T{
+exit insert mode
+T}
+exit_standout_mode rmso se T{
+exit standout mode
+T}
+exit_underline_mode rmul ue T{
+exit underline mode
+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}
+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}
+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_backspace kbs kb T{
+backspace key
+T}
+key_catab ktbc ka T{
+clear-all-tabs key
+T}
+key_clear kclr kC T{
+clear-screen or erase 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_eol kel kE T{
+clear-to-end-of-line key
+T}
+key_eos ked kS T{
+clear-to-end-of-screen 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_f2 kf2 k2 T{
+F2 function key
+T}
+key_f3 kf3 k3 T{
+F3 function key
+T}
+key_f4 kf4 k4 T{
+F4 function key
+T}
+key_f5 kf5 k5 T{
+F5 function key
+T}
+key_f6 kf6 k6 T{
+F6 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_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_npage knp kN T{
+next-page key
+T}
+key_ppage kpp kP T{
+previous-page key
+T}
+key_right kcuf1 kr T{
+right-arrow key
+T}
+key_sf kind kF T{
+scroll-forward key
+T}
+key_sr kri kR T{
+scroll-backward key
+T}
+key_stab khts kT T{
+set-tab 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}
+meta_off rmm mo T{
+turn off meta mode
+T}
+meta_on smm mm T{
+turn on meta mode (8th-bit on)
+T}
+newline nel nw T{
+newline (behave like cr followed by lf)
+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_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_right_cursor cuf RI T{
+move #1 characters to the right (P*)
+T}
+parm_rindex rin SR T{
+scroll back #1 lines (P)
+T}
+parm_up_cursor cuu UP T{
+up #1 lines (P*)
+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}
+print_screen mc0 ps T{
+print contents of screen
+T}
+prtr_off mc4 pf T{
+turn off printer
+T}
+prtr_on mc5 po T{
+turn on printer
+T}
+repeat_char rep rp T{
+repeat char #1 #2 times (P*)
+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}
+set_attributes sgr sa T{
+define video attributes #1-#9 (PG9)
+T}
+set_tab hts st T{
+set a tab in every row, current columns
+T}
+set_window wind wi T{
+current window is lines #1-#2 cols #3-#4
+T}
+tab ht ta T{
+tab to next 8-space hardware tab stop
+T}
+to_status_line tsl ts T{
+move to status line
+T}
+underline_char uc uc T{
+underline char and move past it
+T}
+up_half_line hu hu T{
+half a line up
+T}
+init_prog iprog iP T{
+path name of program for initialization
+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_c1 kc1 K4 T{
+lower left of keypad
+T}
+key_c3 kc3 K5 T{
+lower right of keypad
+T}
+prtr_non mc5p pO T{
+turn on printer for #1 bytes
+T}
+char_padding rmp rP T{
+like ip but when in insert mode
+T}
+acs_chars acsc ac T{
+graphics charset pairs, based on vt100
+T}
+plab_norm pln pn T{
+program label #1 to show string #2
+T}
+key_btab kcbt kB T{
+back-tab key
+T}
+enter_xon_mode smxon SX T{
+turn on xon/xoff handshaking
+T}
+exit_xon_mode rmxon RX T{
+turn off xon/xoff handshaking
+T}
+enter_am_mode smam SA T{
+turn on automatic margins
+T}
+exit_am_mode rmam RA T{
+turn off automatic margins
+T}
+xon_character xonc XN T{
+XON character
+T}
+xoff_character xoffc XF T{
+XOFF character
+T}
+ena_acs enacs eA T{
+enable alternate char set
+T}
+label_on smln LO T{
+turn on soft labels
+T}
+label_off rmln LF T{
+turn off soft labels
+T}
+key_beg kbeg @1 T{
+begin key
+T}
+key_cancel kcan @2 T{
+cancel 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_end kend @7 T{
+end key
+T}
+key_enter kent @8 T{
+enter/send key
+T}
+key_exit kext @9 T{
+exit key
+T}
+key_find kfnd @0 T{
+find key
+T}
+key_help khlp %1 T{
+help key
+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_open kopn %6 T{
+open key
+T}
+key_options kopt %7 T{
+options 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_save ksav &6 T{
+save key
+T}
+key_suspend kspd &7 T{
+suspend key
+T}
+key_undo kund &8 T{
+undo 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_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_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_sundo kUND !3 T{
+shifted undo key
+T}
+req_for_input rfi RF T{
+send next input char (for ptys)
+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_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_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_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_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_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}
+clr_bol el1 cb T{
+Clear to beginning of line
+T}
+clear_margins mgc MC T{
+clear right and left soft margins
+T}
+set_left_margin smgl ML T{
+set left soft margin at current column
+T}
+set_right_margin smgr MR T{
+set right soft margin at current column
+T}
+label_format fln Lf T{
+label format
+T}
+set_clock sclk SC T{
+set clock, #1 hrs #2 mins #3 secs
+T}
+display_clock dclk DK T{
+display clock at (#1,#2)
+T}
+remove_clock rmclk RC T{
+remove clock
+T}
+create_window cwin CW T{
+define a window #1 from #2,#3 to #4,#5
+T}
+goto_window wingo WG T{
+go to window #1
+T}
+hangup hup HU T{
+hang-up phone
+T}
+dial_phone dial DI T{
+dial number #1
+T}
+quick_dial qdial QD T{
+dial number #1 without checking
+T}
+tone tone TO T{
+select touch tone dialing
+T}
+pulse pulse PU T{
+select pulse dialing
+T}
+flash_hook hook fh T{
+flash switch hook
+T}
+fixed_pause pause PA T{
+pause for 2-3 seconds
+T}
+wait_tone wait WA T{
+wait for dial-tone
+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}
+orig_pair op op T{
+Set default pair to its original value
+T}
+orig_colors oc oc T{
+Set all color pairs to the original ones
+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}
+set_color_pair scp sp T{
+Set current color pair to #1
+T}
+set_foreground setf Sf T{
+Set foreground color #1
+T}
+set_background setb Sb T{
+Set background color #1
+T}
+change_char_pitch cpi ZA T{
+Change number of characters per inch
+T}
+change_line_pitch lpi ZB T{
+Change number of lines per inch
+T}
+change_res_horz chr ZC T{
+Change horizontal resolution
+T}
+change_res_vert cvr ZD T{
+Change vertical resolution
+T}
+define_char defc ZE T{
+Define a character
+T}
+enter_doublewide_mode swidm ZF T{
+Enter double-wide mode
+T}
+enter_draft_quality sdrfq ZG T{
+Enter draft-quality 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_shadow_mode sshm ZM T{
+Enter shadow-print mode
+T}
+enter_subscript_mode ssubm ZN T{
+Enter subscript mode
+T}
+enter_superscript_mode ssupm ZO T{
+Enter superscript mode
+T}
+enter_upward_mode sum ZP T{
+Start upward carriage motion
+T}
+exit_doublewide_mode rwidm ZQ T{
+End double-wide 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_subscript_mode rsubm ZV T{
+End subscript mode
+T}
+exit_superscript_mode rsupm ZW T{
+End superscript mode
+T}
+exit_upward_mode rum ZX T{
+End reverse character motion
+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 in micro mode
+T}
+micro_up mcuu1 Zd T{
+Like cursor_up in micro mode
+T}
+order_of_pins porder Ze T{
+Match software bits to print-head pins
+T}
+parm_down_micro mcud Zf T{
+Like parm_down_cursor in micro mode
+T}
+parm_left_micro mcub Zg T{
+Like parm_left_cursor in micro mode
+T}
+parm_right_micro mcuf Zh T{
+Like parm_right_cursor in micro mode
+T}
+parm_up_micro mcuu Zi T{
+Like parm_up_cursor in micro mode
+T}
+select_char_set scs Zj T{
+Select character set
+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 #2 lines from bottom
+T}
+set_left_margin_parm smglp Zm T{
+Set left (right) margin at column #1 (#2)
+T}
+set_right_margin_parm smgrp Zn T{
+Set right margin at column #1
+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 (#2)
+T}
+start_bit_image sbim Zq T{
+Start printing bit image graphics
+T}
+start_char_set_def scsd Zr T{
+Start character set definition
+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
+T}
+subscript_characters subcs Zu T{
+List of subscriptable characters
+T}
+superscript_characters supcs Zv T{
+List of superscriptable characters
+T}
+these_cause_cr docr Zw T{
+Printing any of these characters causes CR
+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 expand;
+c l l c
+c l l c
+lw25 lw6 lw2 lw18.
+\fBVariable Cap- TCap Description\fR
+\fBString name Code\fR
+char_set_names csnm Zy T{
+List of character set names
+T}
+key_mouse kmous Km T{
+Mouse event has occurred
+T}
+mouse_info minfo Mi T{
+Mouse status information
+T}
+req_mouse_pos reqmp RQ T{
+Request mouse position
+T}
+get_mouse getm Gm T{
+Curses should get button events
+T}
+set_a_foreground setaf AF T{
+Set foreground color using ANSI escape
+T}
+set_a_background setab AB T{
+Set background color using ANSI escape
+T}
+pkey_plab pfxl xl T{
+Program function key #1 to type string #2 and show string #3
+T}
+device_type devt dv T{
+Indicate language/codeset support
+T}
+code_set_init csin ci T{
+Init sequence for multiple codesets
+T}
+set0_des_seq s0ds s0 T{
+Shift to code set 0 (EUC set 0, ASCII)
+T}
+set1_des_seq s1ds s1 T{
+Shift to code set 1
+T}
+set2_des_seq s2ds s2 T{
+Shift to code set 2
+T}
+set3_des_seq s3ds s3 T{
+Shift to code set 3
+T}
+set_lr_margin smglr ML T{
+Set both left and right margins to #1, #2
+T}
+set_tb_margin smgtb MT T{
+Sets both top and bottom margins to #1, #2
+T}
+bit_image_repeat birep Xy T{
+Repeat bit image cell #1 #2 times
+T}
+bit_image_newline binel Zz T{
+Move to next row of the bit image
+T}
+bit_image_carriage_return bicr Yv T{
+Move to beginning of same row
+T}
+color_names colornm Yw T{
+Give name for color #1
+T}
+define_bit_image_region defbi Yx T{
+Define rectangualar bit image region
+T}
+end_bit_image_region endbi Yy T{
+End a bit-image region
+T}
+set_color_band setcolor Yz T{
+Change to ribbon color #1
+T}
+set_page_length slines YZ T{
+Set page length to #1 lines
+T}
+display_pc_char dispc S1 T{
+Display PC character
+T}
+enter_pc_charset_mode smpch S2 T{
+Enter PC character display mode
+T}
+exit_pc_charset_mode rmpch S3 T{
+Exit PC character display mode
+T}
+enter_scancode_mode smsc S4 T{
+Enter PC scancode mode
+T}
+exit_scancode_mode rmsc S5 T{
+Exit PC scancode mode
+T}
+pc_term_options pctrm S6 T{
+PC terminal options
+T}
+scancode_escape scesc S7 T{
+Escape for scancode emulation
+T}
+alt_scancode_esc scesa S8 T{
+Alternate escape for scancode emulation
+T}
+.TE
+.ad
+
+.in .8i
+The XSI Curses standard added these. They are probably in some post-4.1
+version of System V curses as well, but because XSI Curses lists them in
+strict alphabetical order we don't know if this is the right binary order.
+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 expand;
+c l l c
+c l l c
+lw25 lw6 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}
+.TE
+.ad
+.\" $From: terminfo.tail,v 1.19 1998/06/30 01:10:04 tom Exp $
+.\" Beginning of terminfo.tail file
+.ps +1
+.PP
+.SS A Sample Entry
+.PP
+The following entry, describing an ANSI-standard terminal, is representative
+of what a \fBterminfo\fR entry for a modern terminal typically looks like.
+.PP
+.nf
+.in -2
+.ta .3i
+.ft CW
+\s-2ansi|ansi/pc-term compatible with color,
+ mc5i,
+ colors#8, ncv#3, pairs#64,
+ cub=\\E[%p1%dD, cud=\\E[%p1%dB, cuf=\\E[%p1%dC,
+ cuu=\\E[%p1%dA, dch=\\E[%p1%dP, dl=\\E[%p1%dM,
+ ech=\\E[%p1%dX, el1=\\E[1K, hpa=\\E[%p1%dG, ht=\\E[I,
+ ich=\\E[%p1%d@, il=\\E[%p1%dL, indn=\\E[%p1%dS,
+ kbs=^H, kcbt=\\E[Z, kcub1=\\E[D, kcud1=\\E[B,
+ kcuf1=\\E[C, kcuu1=\\E[A, kf1=\\E[M, kf10=\\E[V,
+ kf11=\\E[W, kf12=\\E[X, kf2=\\E[N, kf3=\\E[O, kf4=\\E[P,
+ kf5=\\E[Q, kf6=\\E[R, kf7=\\E[S, kf8=\\E[T, kf9=\\E[U,
+ kich1=\\E[L, mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S,
+ op=\\E[37;40m, rep=%p1%c\\E[%p2%{1}%-%db,
+ rin=\\E[%p1%dT, s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B,
+ s3ds=\\E+B, setab=\\E[4%p1%dm, setaf=\\E[3%p1%dm,
+ setb=\\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+ setf=\\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+ sgr=\\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m,
+ sgr0=\\E[0;10m, tbc=\\E[2g, u6=\\E[%d;%dR, u7=\\E[6n,
+ u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%p1%dd,\s+2
+.in +2
+.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:
+Boolean capabilities which indicate that the terminal has
+some particular feature, numeric capabilities giving the size of the terminal
+or the size of particular delays, and string
+capabilities, which give a sequence which can be used to perform particular
+terminal operations.
+.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\fR.
+Hence the description of ansi includes \fBam\fR.
+Numeric capabilities are followed by the character `#' and then the value.
+Thus \fBcols\fR, which indicates the number of columns the terminal has,
+gives the value `80' for ansi.
+.PP
+Finally, string valued capabilities, such as \fBel\fR (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. Both \fB\eE\fR and \fB\ee\fR
+map to an \s-1ESCAPE\s0 character,
+\fB^x\fR maps to a control-x for any appropriate x, and the sequences
+\fB\en \el \er \et \eb \ef \es\fR give
+a newline, line-feed, return, tab, backspace, form-feed, and space.
+Other escapes include \fB\e^\fR for \fB^\fR,
+\fB\e\e\fR for \fB\e\fR,
+\fB\e\fR, for comma,
+\fB\e:\fR for \fB:\fR,
+and \fB\e0\fR for null.
+(\fB\e0\fR will produce \e200, which does not terminate a string but behaves
+as a null character on most terminals, providing CS7 is specified. See stty(1).)
+Finally, characters may be given as three octal digits after a \fB\e\fR.
+.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
+.I tputs
+to provide this delay. The delay must be a number with at most one decimal
+place of precision; it may be followed by suffixes `*' or '/' or both. A `*'
+indicates that the padding required is proportional to the number of lines
+affected by the 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
+.IR lines
+affected.) Normally, padding is advisory if the device has the \fBxon\fR
+capability; it is used for cost computation but does not trigger delays. A `/'
+suffix indicates that the padding is mandatory and forces a delay of the given
+number of milliseconds even on devices for which \fBxon\fR 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
+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.
+.PP
+If TERMINFO is not set, the \fBncurses\fR version of the terminfo reader code
+will instead look in the directory \fB$HOME/.terminfo\fR
+for a compiled description.
+If it fails to find one there, and the environment variable TERMINFO_DIRS is
+set, it will interpret the contents of that variable as a list of colon-
+separated directories to be searched (an empty entry is interpreted as a
+command to search \fI\*d\fR). If no description is found in any of the
+TERMINFO_DIRS directories, the fetch fails.
+.PP
+If neither TERMINFO nor TERMINFO_DIRS is set, the last place tried will be the
+system terminfo directory, \fI\*d\fR.
+.PP
+(Neither the \fB$HOME/.terminfo\fR lookups nor TERMINFO_DIRS extensions are
+supported under stock System V terminfo/curses.)
+.PP
+.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\fR numeric capability. If the terminal is a \s-1CRT\s0, then the
+number of lines on the screen is given by the \fBlines\fR 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\fR capability.
+If the terminal can clear its screen, leaving the cursor in the home
+position, then this is given by the \fBclear\fR string capability.
+If the terminal overstrikes
+(rather than clearing a position when a character is struck over)
+then it should have the \fBos\fR 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\fR 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\fR.
+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 \*(lqglass-tty\*(rq terminals.
+Thus the model 33 teletype is described as
+.PP
+.DT
+.nf
+.ft CW
+.in -7
+ \s-133\||\|tty33\||\|tty\||\|model 33 teletype,
+ bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1
+.in +7
+.ft R
+.PP
+while the Lear Siegler \s-1ADM\-3\s0 is described as
+.PP
+.DT
+.nf
+.ft CW
+.in -7
+ \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 +7
+.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
+.IR printf (3S)
+like escapes \fB%x\fR 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.
+Often more complex operations are necessary.
+.PP
+The \fB%\fR encodings have the following meanings:
+.PP
+.DT
+.nf
+.ta .5i 1.5i
+ \s-1%% outputs `%'
+ %\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP
+ as in \fBprintf\fP, flags are [-+#] and space
+ %c print pop() gives %c
+
+ %p[1-9] push \fIi\fP'th parm
+ %P[a-z] set dynamic variable [a-z] to pop()
+ %g[a-z] get dynamic variable [a-z] and push it
+ %P[A-Z] set static variable [a-z] to pop()
+ %g[A-Z] get static variable [a-z] and push it
+ %'\fIc\fP' char constant \fIc\fP
+ %{\fInn\fP} integer constant \fInn\fP
+ %l push strlen(pop)
+
+ %+ %- %* %/ %m
+ arithmetic (%m is mod): push(pop() op pop())
+ %& %| %^ bit operations: push(pop() op pop())
+ %= %> %< logical operations: push(pop() op pop())
+ %A, %O logical and & or operations (for conditionals)
+ %! %~ unary operations push(op pop())
+ %i add 1 to first two parms (for ANSI terminals)
+
+ %? expr %t thenpart %e elsepart %;
+ if-then-else, %e elsepart is optional.
+ else-if's are possible a la Algol 68:
+ %? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %;
+\s+1 c\di\u are conditions, b\di\u are bodies.
+.fi
+.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}%-". %P and %g 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\fR capability is \*(lqcup=6\eE&%p2%2dc%p1%2dY\*(rq.
+.PP
+The Microterm \s-1ACT-IV\s0 needs the current row and column sent
+preceded by a \fB^T\fR, with the row and column simply encoded in binary,
+\*(lqcup=^T%p1%c%p2%c\*(rq.
+Terminals which use \*(lq%c\*(rq need to be able to
+backspace the cursor (\fBcub1\fR),
+and to move the cursor up one line on the screen (\fBcuu1\fR).
+This is necessary because it is not always safe to transmit \fB\en\fR
+\fB^D\fR and \fB\er\fR, 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 \*(lqcup=\eE=%p1%' '%+%c%p2%' '%+%c\*(rq.
+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\fR; similarly a fast way of getting to the lower left-hand corner
+can be given as \fBll\fR; this may involve going up with \fBcuu1\fR
+from the home position,
+but a program should never do this itself (unless \fBll\fR 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
+.BR 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\fR and \fBrmcup\fR.
+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 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\fR.
+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\fR.
+\fBEd\fR 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\fR; 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\fR; 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\fR(3) library does this synthesis
+automatically, so you need not compose insert/delete strings for
+an entry with \fBcsr\fR).
+.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\fR 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\fR followed by \fBdl1\fR or \fBind\fR. If the data scrolled
+off the bottom of the region by the \fBri\fR re-appears, then scrolling
+is non-destructive. System V and XSI Curses expect that \fBind\fR, \fBri\fR,
+\fBindn\fR, and \fBrin\fR will simulate destructive scrolling; their
+documentation cautions you not to define \fBcsr\fR unless this is true.
+This \fBcurses\fR implementation is more liberal and will do explicit erases
+after scrolling if \fBndstr\fR 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\fR capability should be given; if display memory can be retained
+below, then \fBdb\fR 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\fR 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. You can determine the
+kind of terminal you have by clearing the screen and then typing
+text separated by cursor motions. Type \*(lqabc\ \ \ \ def\*(rq using local
+cursor motions (not spaces) between the \*(lqabc\*(rq and the \*(lqdef\*(rq.
+Then position the cursor before the \*(lqabc\*(rq 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 \*(lqabc\*(rq
+shifts over to the \*(lqdef\*(rq 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\fR, which stands for
+\*(lqinsert null\*(rq.
+While these are two logically separate attributes (one line vs. 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\fR the sequence to get into insert mode.
+Give as \fBrmir\fR the sequence to leave insert mode.
+Now give as \fBich1\fR 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\fR; 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\fR.
+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\fR sequences do not
+require previous smir, and most smir insert modes do not require \fBich1\fR
+before each character. Therefore, the new \fBcurses\fR actually assumes this
+is the case and uses either \fBrmir\fR/\fBsmir\fR or \fBich\fR/\fBich1\fR 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\fR/\fBsmir\fR sequences in \fBich1\fR.
+.PP
+If post insert padding is needed, give this as a number of milliseconds
+in \fBip\fR (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\fR.
+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\fR to speed up inserting
+in this case. Omitting \fBmir\fR will affect only speed. Some terminals
+(notably Datamedia's) must not have \fBmir\fR 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\fR and \fBrmdc\fR
+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\fR,
+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\fR and \fBrmso\fR, 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\fR should be given to tell how many spaces are left.
+.PP
+Codes to begin underlining and end underlining can be given as \fBsmul\fR
+and \fBrmul\fR 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\fR.
+.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
+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\fR; 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
+.BR 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\fR.
+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\fR.
+.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\fR and \fBrmkx\fR.
+Otherwise the keypad is assumed to always transmit.
+The codes sent by the left arrow, right arrow, up arrow, down arrow,
+and home keys can be given as \fBkcub1, kcuf1, kcuu1, kcud1,
+\fRand\fB khome\fR respectively.
+If there are function keys such as f0, f1, ..., f10, the codes they send
+can be given as \fBkf0, kf1, ..., kf10\fR.
+If these keys have labels other than the default f0 through f10, the labels
+can be given as \fBlf0, lf1, ..., lf10\fR.
+The codes transmitted by certain other special keys can be given:
+.B kll
+(home down),
+.B kbs
+(backspace),
+.B ktbc
+(clear all tabs),
+.B kctab
+(clear the tab stop in this column),
+.B kclr
+(clear screen or erase key),
+.B kdch1
+(delete character),
+.B kdl1
+(delete line),
+.B krmir
+(exit insert mode),
+.B kel
+(clear to end of line),
+.B ked
+(clear to end of screen),
+.B kich1
+(insert character or enter insert mode),
+.B kil1
+(insert line),
+.B knp
+(next page),
+.B kpp
+(previous page),
+.B kind
+(scroll forward/down),
+.B kri
+(scroll backward/up),
+.B khts
+(set a tab stop in this column).
+In addition, if the keypad has a 3 by 3 array of keys including the four
+arrow keys, the other five keys can be given as
+.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
+If the terminal has hardware tabs, the command to advance to the next
+tab stop can be given as
+.B ht
+(usually control I).
+A ``back-tab'' command which moves leftward to the preceding tab stop can
+be given as
+.BR cbt .
+By convention, if the teletype modes indicate that tabs are being
+expanded by the computer rather than being sent to the terminal,
+programs should not use
+.B ht
+or
+.B cbt
+even if they are present, since the user may not have the tab stops
+properly set.
+If the terminal has hardware tabs which are initially set every
+.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.
+This is normally used by the
+.IR tset
+command to determine whether to set the mode for hardware tab expansion,
+and whether to set the tab stops.
+If the terminal has tab stops that can be saved in non-volatile memory,
+the terminfo description can assume that they are properly set.
+.PP
+Other capabilities
+include
+.BR is1 ,
+.BR is2 ,
+and
+.BR is3 ,
+initialization strings for the terminal,
+.BR iprog ,
+the path name of a program to be run to initialize the terminal,
+and \fBif\fR, the name of a file containing long initialization strings.
+These strings are expected to set the terminal into modes consistent
+with the rest of the terminfo description.
+They are normally sent to the terminal, by the
+.IR tset
+program, each time the user logs in.
+They will be printed in the following order:
+.BR is1 ;
+.BR is2 ;
+setting tabs using
+.B tbc
+and
+.BR hts ;
+.BR if ;
+running the program
+.BR iprog ;
+and finally
+.BR is3 .
+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 .
+A pair of sequences that does a harder reset from a totally unknown state
+can be analogously given as
+.BR rs1 ,
+.BR rs2 ,
+.BR rf ,
+and
+.BR rs3 ,
+analogous to
+.B is2
+and
+.BR if .
+These strings are output by the
+.IR reset
+program, which is used when the terminal gets into a wedged state.
+Commands are normally placed in
+.BR rs1 ,
+.BR 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
+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 .
+.SS Delays and Padding
+.PP
+Many older and slower terminals don't 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 don't 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\fR (padding baud rate) is given, padding is suppressed at baud rates
+below the value of \fBpb\fR. If the entry has no padding baud rate, then
+whether padding is emitted or not is completely controlled by \fBxon\fR.
+.PP
+If the terminal requires other than a null (zero) character as a pad,
+then this can be given as \fBpad\fR.
+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\fR 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\fR 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\fR which takes the cursor to a given zero-origin column on the
+status line. The capability \fBfsl\fR must return to the main-screen
+cursor positions before the last \fBtsl\fR. You may need to embed the
+string values of \fBsc\fR (save cursor) and \fBrc\fR (restore cursor)
+in \fBtsl\fR and \fBfsl\fR 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\fR.
+.PP
+A command to erase or blank the status line may be specified as \fBdsl\fR.
+.PP
+The boolean capability \fBeslok\fR specifies that escape sequences, tabs,
+etc. work ordinarily in the status line.
+.PP
+The \fBncurses\fR 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\fR build in support for the drawing characters
+supported by the VT100, with some characters from the AT&T 4410v1 added.
+This alternate character set may be specified by the \fBacsc\fR capability.
+.PP
+.TS H
+center expand;
+c l l c
+c l l c
+lw25 lw6 lw2 lw20.
+.\".TH
+\fBGlyph ACS Ascii VT100
+Name Name Default Name\fR
+upper left corner ACS_ULCORNER + l
+lower left corner ACS_LLCORNER + m
+upper right corner ACS_URCORNER + k
+lower right corner ACS_LRCORNER + j
+tee pointing right ACS_LTEE + t
+tee pointing left ACS_RTEE + u
+tee pointing up ACS_BTEE + v
+tee pointing down ACS_TTEE + w
+horizontal line ACS_HLINE - q
+vertical line ACS_VLINE | x
+large plus or crossover ACS_PLUS + n
+scan line 1 ACS_S1 ~ o
+scan line 9 ACS_S9 \&_ s
+diamond ACS_DIAMOND + `
+checker board (stipple) ACS_CKBOARD : a
+degree symbol ACS_DEGREE \e f
+plus/minus ACS_PLMINUS # g
+bullet ACS_BULLET o ~
+arrow pointing left ACS_LARROW < ,
+arrow pointing right ACS_RARROW > +
+arrow pointing down ACS_DARROW v .
+arrow pointing up ACS_UARROW ^ -
+board of squares ACS_BOARD # h
+lantern symbol ACS_LANTERN # i
+solid square block ACS_BLOCK # 0
+.TE
+.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\fR/\fBrmacs\fR 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
+Most color terminals are either `Tektronix-like' or `HP-like'. Tektronix-like
+terminals have a predefined set of N colors (where N usually 8), and can set
+character-cell foreground and background characters independently, mixing them
+into N * N color-pairs. On HP-like terminals, the use must set each color
+pair up separately (foreground and background are not independently settable).
+Up to M color-pairs may be set up from 2*M different colors. ANSI-compatible
+terminals are Tektronix-like.
+.PP
+Some basic color capabilities are independent of the color method. The numeric
+capabilities \fBcolors\fR and \fBpairs\fR specify the maximum numbers of colors
+and color-pairs that can be displayed simultaneously. The \fBop\fR (original
+pair) string resets foreground and background colors to their default values
+for the terminal. The \fBoc\fR 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\fR.
+.PP
+To change the current foreground or background color on a Tektronix-type
+terminal, use \fBsetaf\fR (set ANSI foreground) and \fBsetab\fR (set ANSI
+background) or \fBsetf\fR (set foreground) and \fBsetb\fR (set background).
+These take one parameter, the color number. The SVr4 documentation describes
+only \fBsetaf\fR/\fBsetab\fR; the XPG4 draft says that "If the terminal
+supports ANSI escape sequences to set background and foreground, they should
+be coded as \fBsetaf\fR and \fBsetab\fR, respectively. If the terminal
+supports other escape sequences to set background and foreground, they should
+be coded as \fBsetf\fR and \fBsetb\fR, respectively. The \fIvidputs()\fR
+function and the refresh functions use \fBsetaf\fR and \fBsetab\fR if they are
+defined."
+.PP
+The \fBsetaf\fR/\fBsetab\fR and \fBsetf\fR/\fBsetb\fR capabilities take a
+single numeric argument each. Argument values 0-7 are portably defined as
+follows (the middle column is the symbolic #define available in the header for
+the \fBcurses\fR or \fBncurses\fR 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\fR
+black \fBCOLOR_BLACK\fR 0 0, 0, 0
+red \fBCOLOR_RED\ \fR 1 max,0,0
+green \fBCOLOR_GREEN\fR 2 0,max,0
+yellow \fBCOLOR_YELLOW\fR 3 max,max,0
+blue \fBCOLOR_BLUE\fR 4 0,0,max
+magenta \fBCOLOR_MAGENTA\fR 5 max,0,max
+cyan \fBCOLOR_CYAN\fR 6 0,max,max
+white \fBCOLOR_WHITE\fR 7 max,max,max
+.TE
+.PP
+On an HP-like terminal, use \fBscp\fR with a color-pair number parameter to set
+which color pair is current.
+.PP
+On a Tektronix-like terminal, the capability \fBccc\fR may be present to
+indicate that colors can be modified. If so, the \fBinitc\fR capability will
+take a color number (0 to \fBcolors\fR - 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\fR is present,
+they are instead as HLS (Hue, Lightness, Saturation) indices. The ranges are
+terminal-dependent.
+.PP
+On an HP-like terminal, \fBinitp\fR may give a capability for changing a
+color-pair value. It will take seven parameters; a color-pair number (0 to
+\fBmax_pairs\fR - 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\fR.
+.PP
+On some color terminals, colors collide with highlights. You can register
+these collisions with the \fBncv\fR capability. This is a bit-mask of
+attributes not to be used when colors are enabled. The correspondence with the
+attributes understood by \fBcurses\fR is as follows:
+.PP
+.TS
+center;
+l c c
+lw25 lw2 lw10.
+\fBAttribute Bit Decimal\fR
+A_STANDOUT 0 1
+A_UNDERLINE 1 2
+A_REVERSE 2 4
+A_BLINK 3 8
+A_DIM 4 16
+A_BOLD 5 32
+A_INVIS 6 64
+A_PROTECT 7 128
+A_ALTCHARSET 8 256
+.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\fR capability of 2.
+.PP
+.SS Miscellaneous
+.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, 'x', 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\fR.
+.PP
+Terminals which ignore a line-feed immediately after an \fBam\fR wrap,
+such as the Concept and vt100,
+should indicate \fBxenl\fR.
+.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\fR (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\fIx\fR.
+.PP
+.SS Similar Terminals
+.PP
+If there are two very similar terminals,
+one can be defined as being just like the other with certain exceptions.
+The string capability \fBuse\fR can be given
+with the name of the similar terminal.
+The capabilities given before
+.B use
+override those in the terminal type invoked by
+.BR use .
+A capability can be canceled by placing \fBxx@\fR to the left of the
+capability definition, where xx is the capability.
+For example, the entry
+.PP
+ 2621-nl, smkx@, rmkx@, use=2621,
+.PP
+defines a 2621-nl that does not have the \fBsmkx\fR or \fBrmkx\fR 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
+.SS Pitfalls of Long Entries
+.PP
+Long terminfo entries are unlikely to be a problem; to date, no entry has even
+approached terminfo's 4K string-table maximum. Unfortunately, the termcap
+translations are much more strictly limited (to 1K), thus termcap translations
+of long terminfo entries can cause problems.
+.PP
+The man pages for 4.3BSD and older versions of tgetent() instruct the user to
+allocate a 1K buffer for the termcap entry. The entry gets null-terminated by
+the termcap library, so that makes the maximum safe length for a termcap entry
+1k-1 (1023) bytes. Depending on what the application and the termcap library
+being used does, and where in the termcap file the terminal type that tgetent()
+is searching for is, several bad things can happen.
+.PP
+Some termcap libraries print a warning message or exit if they find an
+entry that's longer than 1023 bytes; others don't; others truncate the
+entries to 1023 bytes. Some application programs allocate more than
+the recommended 1K for the termcap entry; others don't.
+.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 doesn't 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 tgetent() strips out while reading it.
+Some termcap libraries strip off the final newline, too (GNU termcap does not).
+Now suppose:
+.TP 5
+*
+a termcap entry before expansion is more than 1023 bytes long,
+.TP 5
+*
+and the application has only allocated a 1k buffer,
+.TP 5
+*
+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's the entry it wants,
+.TP 5
+*
+and tgetent() is searching for a terminal type that either is the
+long entry, appears in the termcap file after the long entry, or
+doesn't appear in the file at all (so that tgetent() has to search
+the whole termcap file).
+.PP
+Then tgetent() will overwrite memory, perhaps its stack, and probably core dump
+the program. Programs like telnet are particularly vulnerable; modern telnets
+pass along values like the terminal type automatically. The results are almost
+as 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 tgetent() only does "tc" expansion once it's 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's 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\fR implementation of
+\fBtic\fR(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
+The %x operator in parameterized strings is unique to the ncurses implementation
+of \fBtparm\fR (it is required in order to support an unfortunate choice of
+\fBinitc\fR format on the Linux console).
+.PP
+Some SVr4 \fBcurses\fR implementations, and all previous to SVr4, don't
+interpret the %A and %O operators in parameter strings.
+.PP
+SVr4/XPG4 do not specify whether \fBmsgr\fR licenses movement while in
+an alternate-character-set mode (such modes may, among other things, map
+CR and NL to characters that don't trigger local motions).
+The \fBncurses\fR implementation ignores \fBmsgr\fR in \fBALTCHARSET\fR
+mode. This raises the possibility that an XPG4
+implementation making the opposite interpretation may need terminfo
+entries made for \fBncurses\fR to have \fBmsgr\fR turned off.
+.PP
+The \fBncurses\fR library handles insert-character and insert-character modes
+in a slightly non-standard way in order to get better update efficiency. See
+the \fBInsert/Delete Character\fR subsection above.
+.PP
+The parameter substitutions for \fBset_clock\fR and \fBdisplay_clock\fR 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\fR capability. The \fBncurses\fR wants to
+interpret it as \fBKEY_MOUSE\fR, for use by terminals and emulators like xterm
+that can return mouse-tracking information in the keyboard-input stream.
+.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:
+.PP
+\fBSVR4, Solaris, ncurses\fR --
+These support all SVr4 capabilities.
+.PP
+\fBSGI\fR --
+Supports the SVr4 set, adds one undocumented extended string
+capability (\fBset_pglen\fR).
+.PP
+\fBSVr1, Ultrix\fR --
+These support a restricted subset of terminfo capabilities. The booleans
+end with \fBxon_xoff\fR; the numerics with \fBwidth_status_line\fR; and the
+strings with \fBprtr_non\fR.
+.PP
+\fBHP/UX\fR --
+Supports the SVr1 subset, plus the SVr[234] numerics \fBnum_labels\fR,
+\fBlabel_height\fR, \fBlabel_width\fR, plus function keys 11 through 63, plus
+\fBplab_norm\fR, \fBlabel_on\fR, and \fBlabel_off\fR, plus some incompatible
+extensions in the string table.
+.PP
+\fBAIX\fR --
+Supports the SVr1 subset, plus function keys 11 through 63, plus a number
+of incompatible string table extensions.
+.PP
+\fBOSF\fR --
+Supports both the SVr4 set and the AIX extensions.
+.SH FILES
+.TP 25
+\*d.db
+file containing terminal descriptions on OpenBSD
+.TP 25
+\*d/?/*
+files containing terminal descriptions on other systems
+.SH "SEE ALSO"
+\fBinfo_mkdb(1)\fR, \fBtic\fR(1), \fBcurses\fR(3), \fBprintf\fR(3), \fBterm\fR(\*n).
+.SH AUTHORS
+Zeyd M. Ben-Halim, Eric S. Raymond. Descends from the original pcurses
+by Pavel Curtis.
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End: