diff options
Diffstat (limited to 'upstream/fedora-40/man5/terminfo.5')
-rw-r--r-- | upstream/fedora-40/man5/terminfo.5 | 4345 |
1 files changed, 4345 insertions, 0 deletions
diff --git a/upstream/fedora-40/man5/terminfo.5 b/upstream/fedora-40/man5/terminfo.5 new file mode 100644 index 00000000..e2b051b9 --- /dev/null +++ b/upstream/fedora-40/man5/terminfo.5 @@ -0,0 +1,4345 @@ +'\" 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-2023,2024 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.63 2024/01/13 23:07:27 tom Exp $ +.TH terminfo 5 2024-01-13 "ncurses 6.4" "File formats" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.ds ' \(aq +.ds ^ \(ha +.ds ~ \(ti +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.ds ' ' +.ds ^ ^ +.ds ~ ~ +.\} +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +. +.ds d /usr/share/terminfo +.SH NAME +\fB\%terminfo\fP \- +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 \fBcurses\fP(3X). +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 \fI\%ncurses\fP +version 6.4 (patch 20240127). +.SS "\fIterminfo\fP Entry Syntax" +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 \*(``\e054\*(''). +.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 valid 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; +Lb Lb Lb +L L Lx. +Suffix Example Meaning +_ +\-\fInn\fP aaa\-60 Number of lines on the screen +\-\fIn\fPp c100\-4p Number of pages of memory +\-am vt100\-am With automargins (usually the default) +\-m ansi\-m Mono mode; suppress color +\-mc wy30\-mc Magic cookie; spaces when highlighting +\-na c100\-na No arrow keys (leave them in local) +\-nam vt100\-nam Without automatic margins +\-nl hp2621\-nl No status line +\-ns hp2626\-ns No status line +\-rv c100\-rv Reverse video +\-s vt100\-s Enable status line +\-vb wy370\-vb Use visible bell instead of beep +\-w vt100\-w Wide mode (> 80 columns, usually 132) +.TE +.PP +For more on terminal naming conventions, see the \fBterm\fP(7) manual page. +.SS "\fIterminfo\fP Capabilities Syntax" +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" +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, +.bP +The \fBvariable\fR is the name by which the programmer (at the terminfo level) +accesses the capability. +.bP +The \fBcapname\fR (\fICap-name\fP) +is the short name used in the text of the database, +and is used by a person updating the database. +.IP +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. +.IP +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. +.bP +The \fBtermcap\fP (\fITcap\fP) code is the old capability name +(some capabilities are new, and have names which termcap did not originate). +.bP +Finally, the \fBdescription\fP field attempts to convey the semantics of the +capability. +.PP +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 +.TS +center; +Lb Cb S Lb +Lb Lb Lb Lb +Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +\& Code \& +Boolean Capability Name TI TC Description +_ +auto_left_margin bw bw T{ +.ad l +cub1 wraps from column 0 to last column +T} +auto_right_margin am am T{ +.ad l +terminal has automatic margins +T} +no_esc_ctlc xsb xb T{ +.ad l +beehive (f1=escape, f2=ctrl C) +T} +ceol_standout_glitch xhp xs T{ +.ad l +standout not erased by overwriting (hp) +T} +eat_newline_glitch xenl xn T{ +.ad l +newline ignored after 80 cols (concept) +T} +erase_overstrike eo eo T{ +.ad l +can erase overstrikes with a blank +T} +generic_type gn gn T{ +.ad l +generic line type +T} +hard_copy hc hc T{ +.ad l +hardcopy terminal +T} +has_meta_key km km T{ +.ad l +Has a meta key (i.e., sets 8th-bit) +T} +has_status_line hs hs T{ +.ad l +has extra status line +T} +insert_null_glitch in in T{ +.ad l +insert mode distinguishes nulls +T} +memory_above da da T{ +.ad l +display may be retained above the screen +T} +memory_below db db T{ +.ad l +display may be retained below the screen +T} +move_insert_mode mir mi T{ +.ad l +safe to move while in insert mode +T} +move_standout_mode msgr ms T{ +.ad l +safe to move while in standout mode +T} +over_strike os os T{ +.ad l +terminal can overstrike +T} +status_line_esc_ok eslok es T{ +.ad l +escape can be used on the status line +T} +dest_tabs_magic_smso xt xt T{ +.ad l +tabs destructive, magic so char (t1061) +T} +tilde_glitch hz hz T{ +.ad l +cannot print ~'s (Hazeltine) +T} +transparent_underline ul ul T{ +.ad l +underline character overstrikes +T} +xon_xoff xon xo T{ +.ad l +terminal uses xon/xoff handshaking +T} +needs_xon_xoff nxon nx T{ +.ad l +padding will not work, xon/xoff required +T} +prtr_silent mc5i 5i T{ +.ad l +printer will not echo on screen +T} +hard_cursor chts HC T{ +.ad l +cursor is hard to see +T} +non_rev_rmcup nrrmc NR T{ +.ad l +smcup does not reverse rmcup +T} +no_pad_char npc NP T{ +.ad l +pad character does not exist +T} +non_dest_scroll_region ndscr ND T{ +.ad l +scrolling region is non-destructive +T} +can_change ccc cc T{ +.ad l +terminal can re-define existing colors +T} +back_color_erase bce ut T{ +.ad l +screen erased with background color +T} +hue_lightness_saturation hls hl T{ +.ad l +terminal uses only HLS color notation (Tektronix) +T} +col_addr_glitch xhpa YA T{ +.ad l +only positive motion for hpa/mhpa caps +T} +cr_cancels_micro_mode crxm YB T{ +.ad l +using cr turns off micro mode +T} +has_print_wheel daisy YC T{ +.ad l +printer needs operator to change character set +T} +row_addr_glitch xvpa YD T{ +.ad l +only positive motion for vpa/mvpa caps +T} +semi_auto_right_margin sam YE T{ +.ad l +printing in last column causes cr +T} +cpi_changes_res cpix YF T{ +.ad l +changing character pitch changes resolution +T} +lpi_changes_res lpix YG T{ +.ad l +changing line pitch changes resolution +T} +.TE +.PP +. +.TS +center; +Lb Cb S Lb +Lb Lb Lb Lb +Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +\& Code \& +Numeric Capability Name TI TC Description +_ +columns cols co T{ +.ad l +number of columns in a line +T} +init_tabs it it T{ +.ad l +tabs initially every # spaces +T} +lines lines li T{ +.ad l +number of lines on screen or page +T} +lines_of_memory lm lm T{ +.ad l +lines of memory if > line. 0 means varies +T} +magic_cookie_glitch xmc sg T{ +.ad l +number of blank characters left by smso or rmso +T} +padding_baud_rate pb pb T{ +.ad l +lowest baud rate where padding needed +T} +virtual_terminal vt vt T{ +.ad l +virtual terminal number (CB/unix) +T} +width_status_line wsl ws T{ +.ad l +number of columns in status line +T} +num_labels nlab Nl T{ +.ad l +number of labels on screen +T} +label_height lh lh T{ +.ad l +rows in each label +T} +label_width lw lw T{ +.ad l +columns in each label +T} +max_attributes ma ma T{ +.ad l +maximum combined attributes terminal can handle +T} +maximum_windows wnum MW T{ +.ad l +maximum number of definable windows +T} +max_colors colors Co T{ +.ad l +maximum number of colors on screen +T} +max_pairs pairs pa T{ +.ad l +maximum number of color-pairs on the screen +T} +no_color_video ncv NC T{ +.ad l +video attributes that cannot be used with colors +T} +.TE +.PP +. +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. +. +.PP +.TS +center; +Lb Cb S Lb +Lb Lb Lb Lb +Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +\& Code \& +Numeric Capability Name TI TC Description +_ +buffer_capacity bufsz Ya T{ +.ad l +numbers of bytes buffered before printing +T} +dot_vert_spacing spinv Yb T{ +.ad l +spacing of pins vertically in pins per inch +T} +dot_horz_spacing spinh Yc T{ +.ad l +spacing of dots horizontally in dots per inch +T} +max_micro_address maddr Yd T{ +.ad l +maximum value in micro_..._address +T} +max_micro_jump mjump Ye T{ +.ad l +maximum value in parm_..._micro +T} +micro_col_size mcs Yf T{ +.ad l +character step size when in micro mode +T} +micro_line_size mls Yg T{ +.ad l +line step size when in micro mode +T} +number_of_pins npins Yh T{ +.ad l +numbers of pins in print-head +T} +output_res_char orc Yi T{ +.ad l +horizontal resolution in units per line +T} +output_res_line orl Yj T{ +.ad l +vertical resolution in units per line +T} +output_res_horz_inch orhi Yk T{ +.ad l +horizontal resolution in units per inch +T} +output_res_vert_inch orvi Yl T{ +.ad l +vertical resolution in units per inch +T} +print_rate cps Ym T{ +.ad l +print rate in characters per second +T} +wide_char_size widcs Yn T{ +.ad l +character step size when in double wide mode +T} +buttons btns BT T{ +.ad l +number of buttons on mouse +T} +bit_image_entwining bitwin Yo T{ +.ad l +number of passes for each bit-image row +T} +bit_image_type bitype Yp T{ +.ad l +type of bit-image device +T} +.TE +.PP +. +.TS +center; +Lb Cb S Lb +Lb Lb Lb Lb +Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +\& Code \& +String Capability Name TI TC Description +_ +back_tab cbt bt T{ +.ad l +back tab (P) +T} +bell bel bl T{ +.ad l +audible signal (bell) (P) +T} +carriage_return cr cr T{ +.ad l +carriage return (P*) (P*) +T} +change_scroll_region csr cs T{ +.ad l +change region to line #1 to line #2 (P) +T} +clear_all_tabs tbc ct T{ +.ad l +clear all tab stops (P) +T} +clear_screen clear cl T{ +.ad l +clear screen and home cursor (P*) +T} +clr_eol el ce T{ +.ad l +clear to end of line (P) +T} +clr_eos ed cd T{ +.ad l +clear to end of screen (P*) +T} +column_address hpa ch T{ +.ad l +horizontal position #1, absolute (P) +T} +command_character cmdch CC T{ +.ad l +terminal settable cmd character in prototype !? +T} +cursor_address cup cm T{ +.ad l +move to row #1 columns #2 +T} +cursor_down cud1 do T{ +.ad l +down one line +T} +cursor_home home ho T{ +.ad l +home cursor (if no cup) +T} +cursor_invisible civis vi T{ +.ad l +make cursor invisible +T} +cursor_left cub1 le T{ +.ad l +move left one space +T} +cursor_mem_address mrcup CM T{ +.ad l +memory relative cursor addressing, move to row #1 columns #2 +T} +cursor_normal cnorm ve T{ +.ad l +make cursor appear normal (undo civis/cvvis) +T} +cursor_right cuf1 nd T{ +.ad l +non-destructive space (move right one space) +T} +cursor_to_ll ll ll T{ +.ad l +last line, first column (if no cup) +T} +cursor_up cuu1 up T{ +.ad l +up one line +T} +cursor_visible cvvis vs T{ +.ad l +make cursor very visible +T} +delete_character dch1 dc T{ +.ad l +delete character (P*) +T} +delete_line dl1 dl T{ +.ad l +delete line (P*) +T} +dis_status_line dsl ds T{ +.ad l +disable status line +T} +down_half_line hd hd T{ +.ad l +half a line down +T} +enter_alt_charset_mode smacs as T{ +.ad l +start alternate character set (P) +T} +enter_blink_mode blink mb T{ +.ad l +turn on blinking +T} +enter_bold_mode bold md T{ +.ad l +turn on bold (extra bright) mode +T} +enter_ca_mode smcup ti T{ +.ad l +string to start programs using cup +T} +enter_delete_mode smdc dm T{ +.ad l +enter delete mode +T} +enter_dim_mode dim mh T{ +.ad l +turn on half-bright mode +T} +enter_insert_mode smir im T{ +.ad l +enter insert mode +T} +enter_secure_mode invis mk T{ +.ad l +turn on blank mode (characters invisible) +T} +enter_protected_mode prot mp T{ +.ad l +turn on protected mode +T} +enter_reverse_mode rev mr T{ +.ad l +turn on reverse video mode +T} +enter_standout_mode smso so T{ +.ad l +begin standout mode +T} +enter_underline_mode smul us T{ +.ad l +begin underline mode +T} +erase_chars ech ec T{ +.ad l +erase #1 characters (P) +T} +exit_alt_charset_mode rmacs ae T{ +.ad l +end alternate character set (P) +T} +exit_attribute_mode sgr0 me T{ +.ad l +turn off all attributes +T} +exit_ca_mode rmcup te T{ +.ad l +strings to end programs using cup +T} +exit_delete_mode rmdc ed T{ +.ad l +end delete mode +T} +exit_insert_mode rmir ei T{ +.ad l +exit insert mode +T} +exit_standout_mode rmso se T{ +.ad l +exit standout mode +T} +exit_underline_mode rmul ue T{ +.ad l +exit underline mode +T} +flash_screen flash vb T{ +.ad l +visible bell (may not move cursor) +T} +form_feed ff ff T{ +.ad l +hardcopy terminal page eject (P*) +T} +from_status_line fsl fs T{ +.ad l +return from status line +T} +init_1string is1 i1 T{ +.ad l +initialization string +T} +init_2string is2 is T{ +.ad l +initialization string +T} +init_3string is3 i3 T{ +.ad l +initialization string +T} +init_file if if T{ +.ad l +name of initialization file +T} +insert_character ich1 ic T{ +.ad l +insert character (P) +T} +insert_line il1 al T{ +.ad l +insert line (P*) +T} +insert_padding ip ip T{ +.ad l +insert padding after inserted character +T} +key_backspace kbs kb T{ +.ad l +backspace key +T} +key_catab ktbc ka T{ +.ad l +clear-all-tabs key +T} +key_clear kclr kC T{ +.ad l +clear-screen or erase key +T} +key_ctab kctab kt T{ +.ad l +clear-tab key +T} +key_dc kdch1 kD T{ +.ad l +delete-character key +T} +key_dl kdl1 kL T{ +.ad l +delete-line key +T} +key_down kcud1 kd T{ +.ad l +down-arrow key +T} +key_eic krmir kM T{ +.ad l +sent by rmir or smir in insert mode +T} +key_eol kel kE T{ +.ad l +clear-to-end-of-line key +T} +key_eos ked kS T{ +.ad l +clear-to-end-of-screen key +T} +key_f0 kf0 k0 T{ +.ad l +F0 function key +T} +key_f1 kf1 k1 T{ +.ad l +F1 function key +T} +key_f10 kf10 k; T{ +.ad l +F10 function key +T} +key_f2 kf2 k2 T{ +.ad l +F2 function key +T} +key_f3 kf3 k3 T{ +.ad l +F3 function key +T} +key_f4 kf4 k4 T{ +.ad l +F4 function key +T} +key_f5 kf5 k5 T{ +.ad l +F5 function key +T} +key_f6 kf6 k6 T{ +.ad l +F6 function key +T} +key_f7 kf7 k7 T{ +.ad l +F7 function key +T} +key_f8 kf8 k8 T{ +.ad l +F8 function key +T} +key_f9 kf9 k9 T{ +.ad l +F9 function key +T} +key_home khome kh T{ +.ad l +home key +T} +key_ic kich1 kI T{ +.ad l +insert-character key +T} +key_il kil1 kA T{ +.ad l +insert-line key +T} +key_left kcub1 kl T{ +.ad l +left-arrow key +T} +key_ll kll kH T{ +.ad l +lower-left key (home down) +T} +key_npage knp kN T{ +.ad l +next-page key +T} +key_ppage kpp kP T{ +.ad l +previous-page key +T} +key_right kcuf1 kr T{ +.ad l +right-arrow key +T} +key_sf kind kF T{ +.ad l +scroll-forward key +T} +key_sr kri kR T{ +.ad l +scroll-backward key +T} +key_stab khts kT T{ +.ad l +set-tab key +T} +key_up kcuu1 ku T{ +.ad l +up-arrow key +T} +keypad_local rmkx ke T{ +.ad l +leave keyboard transmit mode +T} +keypad_xmit smkx ks T{ +.ad l +enter keyboard transmit mode +T} +lab_f0 lf0 l0 T{ +.ad l +label on function key f0 if not f0 +T} +lab_f1 lf1 l1 T{ +.ad l +label on function key f1 if not f1 +T} +lab_f10 lf10 la T{ +.ad l +label on function key f10 if not f10 +T} +lab_f2 lf2 l2 T{ +.ad l +label on function key f2 if not f2 +T} +lab_f3 lf3 l3 T{ +.ad l +label on function key f3 if not f3 +T} +lab_f4 lf4 l4 T{ +.ad l +label on function key f4 if not f4 +T} +lab_f5 lf5 l5 T{ +.ad l +label on function key f5 if not f5 +T} +lab_f6 lf6 l6 T{ +.ad l +label on function key f6 if not f6 +T} +lab_f7 lf7 l7 T{ +.ad l +label on function key f7 if not f7 +T} +lab_f8 lf8 l8 T{ +.ad l +label on function key f8 if not f8 +T} +lab_f9 lf9 l9 T{ +.ad l +label on function key f9 if not f9 +T} +meta_off rmm mo T{ +.ad l +turn off meta mode +T} +meta_on smm mm T{ +.ad l +turn on meta mode (8th-bit on) +T} +newline nel nw T{ +.ad l +newline (behave like cr followed by lf) +T} +pad_char pad pc T{ +.ad l +padding char (instead of null) +T} +parm_dch dch DC T{ +.ad l +delete #1 characters (P*) +T} +parm_delete_line dl DL T{ +.ad l +delete #1 lines (P*) +T} +parm_down_cursor cud DO T{ +.ad l +down #1 lines (P*) +T} +parm_ich ich IC T{ +.ad l +insert #1 characters (P*) +T} +parm_index indn SF T{ +.ad l +scroll forward #1 lines (P) +T} +parm_insert_line il AL T{ +.ad l +insert #1 lines (P*) +T} +parm_left_cursor cub LE T{ +.ad l +move #1 characters to the left (P) +T} +parm_right_cursor cuf RI T{ +.ad l +move #1 characters to the right (P*) +T} +parm_rindex rin SR T{ +.ad l +scroll back #1 lines (P) +T} +parm_up_cursor cuu UP T{ +.ad l +up #1 lines (P*) +T} +pkey_key pfkey pk T{ +.ad l +program function key #1 to type string #2 +T} +pkey_local pfloc pl T{ +.ad l +program function key #1 to execute string #2 +T} +pkey_xmit pfx px T{ +.ad l +program function key #1 to transmit string #2 +T} +print_screen mc0 ps T{ +.ad l +print contents of screen +T} +prtr_off mc4 pf T{ +.ad l +turn off printer +T} +prtr_on mc5 po T{ +.ad l +turn on printer +T} +repeat_char rep rp T{ +.ad l +repeat char #1 #2 times (P*) +T} +reset_1string rs1 r1 T{ +.ad l +reset string +T} +reset_2string rs2 r2 T{ +.ad l +reset string +T} +reset_3string rs3 r3 T{ +.ad l +reset string +T} +reset_file rf rf T{ +.ad l +name of reset file +T} +restore_cursor rc rc T{ +.ad l +restore cursor to position of last save_cursor +T} +row_address vpa cv T{ +.ad l +vertical position #1 absolute (P) +T} +save_cursor sc sc T{ +.ad l +save current cursor position (P) +T} +scroll_forward ind sf T{ +.ad l +scroll text up (P) +T} +scroll_reverse ri sr T{ +.ad l +scroll text down (P) +T} +set_attributes sgr sa T{ +.ad l +define video attributes #1-#9 (PG9) +T} +set_tab hts st T{ +.ad l +set a tab in every row, current columns +T} +set_window wind wi T{ +.ad l +current window is lines #1-#2 cols #3-#4 +T} +tab ht ta T{ +.ad l +tab to next 8-space hardware tab stop +T} +to_status_line tsl ts T{ +.ad l +move to status line, column #1 +T} +underline_char uc uc T{ +.ad l +underline char and move past it +T} +up_half_line hu hu T{ +.ad l +half a line up +T} +init_prog iprog iP T{ +.ad l +path name of program for initialization +T} +key_a1 ka1 K1 T{ +.ad l +upper left of keypad +T} +key_a3 ka3 K3 T{ +.ad l +upper right of keypad +T} +key_b2 kb2 K2 T{ +.ad l +center of keypad +T} +key_c1 kc1 K4 T{ +.ad l +lower left of keypad +T} +key_c3 kc3 K5 T{ +.ad l +lower right of keypad +T} +prtr_non mc5p pO T{ +.ad l +turn on printer for #1 bytes +T} +char_padding rmp rP T{ +.ad l +like ip but when in insert mode +T} +acs_chars acsc ac T{ +.ad l +graphics charset pairs, based on vt100 +T} +plab_norm pln pn T{ +.ad l +program label #1 to show string #2 +T} +key_btab kcbt kB T{ +.ad l +back-tab key +T} +enter_xon_mode smxon SX T{ +.ad l +turn on xon/xoff handshaking +T} +exit_xon_mode rmxon RX T{ +.ad l +turn off xon/xoff handshaking +T} +enter_am_mode smam SA T{ +.ad l +turn on automatic margins +T} +exit_am_mode rmam RA T{ +.ad l +turn off automatic margins +T} +xon_character xonc XN T{ +.ad l +XON character +T} +xoff_character xoffc XF T{ +.ad l +XOFF character +T} +ena_acs enacs eA T{ +.ad l +enable alternate char set +T} +label_on smln LO T{ +.ad l +turn on soft labels +T} +label_off rmln LF T{ +.ad l +turn off soft labels +T} +key_beg kbeg @1 T{ +.ad l +begin key +T} +key_cancel kcan @2 T{ +.ad l +cancel key +T} +key_close kclo @3 T{ +.ad l +close key +T} +key_command kcmd @4 T{ +.ad l +command key +T} +key_copy kcpy @5 T{ +.ad l +copy key +T} +key_create kcrt @6 T{ +.ad l +create key +T} +key_end kend @7 T{ +.ad l +end key +T} +key_enter kent @8 T{ +.ad l +enter/send key +T} +key_exit kext @9 T{ +.ad l +exit key +T} +key_find kfnd @0 T{ +.ad l +find key +T} +key_help khlp %1 T{ +.ad l +help key +T} +key_mark kmrk %2 T{ +.ad l +mark key +T} +key_message kmsg %3 T{ +.ad l +message key +T} +key_move kmov %4 T{ +.ad l +move key +T} +key_next knxt %5 T{ +.ad l +next key +T} +key_open kopn %6 T{ +.ad l +open key +T} +key_options kopt %7 T{ +.ad l +options key +T} +key_previous kprv %8 T{ +.ad l +previous key +T} +key_print kprt %9 T{ +.ad l +print key +T} +key_redo krdo %0 T{ +.ad l +redo key +T} +key_reference kref &1 T{ +.ad l +reference key +T} +key_refresh krfr &2 T{ +.ad l +refresh key +T} +key_replace krpl &3 T{ +.ad l +replace key +T} +key_restart krst &4 T{ +.ad l +restart key +T} +key_resume kres &5 T{ +.ad l +resume key +T} +key_save ksav &6 T{ +.ad l +save key +T} +key_suspend kspd &7 T{ +.ad l +suspend key +T} +key_undo kund &8 T{ +.ad l +undo key +T} +key_sbeg kBEG &9 T{ +.ad l +shifted begin key +T} +key_scancel kCAN &0 T{ +.ad l +shifted cancel key +T} +key_scommand kCMD *1 T{ +.ad l +shifted command key +T} +key_scopy kCPY *2 T{ +.ad l +shifted copy key +T} +key_screate kCRT *3 T{ +.ad l +shifted create key +T} +key_sdc kDC *4 T{ +.ad l +shifted delete-character key +T} +key_sdl kDL *5 T{ +.ad l +shifted delete-line key +T} +key_select kslt *6 T{ +.ad l +select key +T} +key_send kEND *7 T{ +.ad l +shifted end key +T} +key_seol kEOL *8 T{ +.ad l +shifted clear-to-end-of-line key +T} +key_sexit kEXT *9 T{ +.ad l +shifted exit key +T} +key_sfind kFND *0 T{ +.ad l +shifted find key +T} +key_shelp kHLP #1 T{ +.ad l +shifted help key +T} +key_shome kHOM #2 T{ +.ad l +shifted home key +T} +key_sic kIC #3 T{ +.ad l +shifted insert-character key +T} +key_sleft kLFT #4 T{ +.ad l +shifted left-arrow key +T} +key_smessage kMSG %a T{ +.ad l +shifted message key +T} +key_smove kMOV %b T{ +.ad l +shifted move key +T} +key_snext kNXT %c T{ +.ad l +shifted next key +T} +key_soptions kOPT %d T{ +.ad l +shifted options key +T} +key_sprevious kPRV %e T{ +.ad l +shifted previous key +T} +key_sprint kPRT %f T{ +.ad l +shifted print key +T} +key_sredo kRDO %g T{ +.ad l +shifted redo key +T} +key_sreplace kRPL %h T{ +.ad l +shifted replace key +T} +key_sright kRIT %i T{ +.ad l +shifted right-arrow key +T} +key_srsume kRES %j T{ +.ad l +shifted resume key +T} +key_ssave kSAV !1 T{ +.ad l +shifted save key +T} +key_ssuspend kSPD !2 T{ +.ad l +shifted suspend key +T} +key_sundo kUND !3 T{ +.ad l +shifted undo key +T} +req_for_input rfi RF T{ +.ad l +send next input char (for ptys) +T} +key_f11 kf11 F1 T{ +.ad l +F11 function key +T} +key_f12 kf12 F2 T{ +.ad l +F12 function key +T} +key_f13 kf13 F3 T{ +.ad l +F13 function key +T} +key_f14 kf14 F4 T{ +.ad l +F14 function key +T} +key_f15 kf15 F5 T{ +.ad l +F15 function key +T} +key_f16 kf16 F6 T{ +.ad l +F16 function key +T} +key_f17 kf17 F7 T{ +.ad l +F17 function key +T} +key_f18 kf18 F8 T{ +.ad l +F18 function key +T} +key_f19 kf19 F9 T{ +.ad l +F19 function key +T} +key_f20 kf20 FA T{ +.ad l +F20 function key +T} +key_f21 kf21 FB T{ +.ad l +F21 function key +T} +key_f22 kf22 FC T{ +.ad l +F22 function key +T} +key_f23 kf23 FD T{ +.ad l +F23 function key +T} +key_f24 kf24 FE T{ +.ad l +F24 function key +T} +key_f25 kf25 FF T{ +.ad l +F25 function key +T} +key_f26 kf26 FG T{ +.ad l +F26 function key +T} +key_f27 kf27 FH T{ +.ad l +F27 function key +T} +key_f28 kf28 FI T{ +.ad l +F28 function key +T} +key_f29 kf29 FJ T{ +.ad l +F29 function key +T} +key_f30 kf30 FK T{ +.ad l +F30 function key +T} +key_f31 kf31 FL T{ +.ad l +F31 function key +T} +key_f32 kf32 FM T{ +.ad l +F32 function key +T} +key_f33 kf33 FN T{ +.ad l +F33 function key +T} +key_f34 kf34 FO T{ +.ad l +F34 function key +T} +key_f35 kf35 FP T{ +.ad l +F35 function key +T} +key_f36 kf36 FQ T{ +.ad l +F36 function key +T} +key_f37 kf37 FR T{ +.ad l +F37 function key +T} +key_f38 kf38 FS T{ +.ad l +F38 function key +T} +key_f39 kf39 FT T{ +.ad l +F39 function key +T} +key_f40 kf40 FU T{ +.ad l +F40 function key +T} +key_f41 kf41 FV T{ +.ad l +F41 function key +T} +key_f42 kf42 FW T{ +.ad l +F42 function key +T} +key_f43 kf43 FX T{ +.ad l +F43 function key +T} +key_f44 kf44 FY T{ +.ad l +F44 function key +T} +key_f45 kf45 FZ T{ +.ad l +F45 function key +T} +key_f46 kf46 Fa T{ +.ad l +F46 function key +T} +key_f47 kf47 Fb T{ +.ad l +F47 function key +T} +key_f48 kf48 Fc T{ +.ad l +F48 function key +T} +key_f49 kf49 Fd T{ +.ad l +F49 function key +T} +key_f50 kf50 Fe T{ +.ad l +F50 function key +T} +key_f51 kf51 Ff T{ +.ad l +F51 function key +T} +key_f52 kf52 Fg T{ +.ad l +F52 function key +T} +key_f53 kf53 Fh T{ +.ad l +F53 function key +T} +key_f54 kf54 Fi T{ +.ad l +F54 function key +T} +key_f55 kf55 Fj T{ +.ad l +F55 function key +T} +key_f56 kf56 Fk T{ +.ad l +F56 function key +T} +key_f57 kf57 Fl T{ +.ad l +F57 function key +T} +key_f58 kf58 Fm T{ +.ad l +F58 function key +T} +key_f59 kf59 Fn T{ +.ad l +F59 function key +T} +key_f60 kf60 Fo T{ +.ad l +F60 function key +T} +key_f61 kf61 Fp T{ +.ad l +F61 function key +T} +key_f62 kf62 Fq T{ +.ad l +F62 function key +T} +key_f63 kf63 Fr T{ +.ad l +F63 function key +T} +clr_bol el1 cb T{ +.ad l +Clear to beginning of line +T} +clear_margins mgc MC T{ +.ad l +clear right and left soft margins +T} +set_left_margin smgl ML T{ +.ad l +set left soft margin at current column. (ML is not in BSD termcap). +T} +set_right_margin smgr MR T{ +.ad l +set right soft margin at current column +T} +label_format fln Lf T{ +.ad l +label format +T} +set_clock sclk SC T{ +.ad l +set clock, #1 hrs #2 mins #3 secs +T} +display_clock dclk DK T{ +.ad l +display clock +T} +remove_clock rmclk RC T{ +.ad l +remove clock +T} +create_window cwin CW T{ +.ad l +define a window #1 from #2,#3 to #4,#5 +T} +goto_window wingo WG T{ +.ad l +go to window #1 +T} +hangup hup HU T{ +.ad l +hang-up phone +T} +dial_phone dial DI T{ +.ad l +dial number #1 +T} +quick_dial qdial QD T{ +.ad l +dial number #1 without checking +T} +tone tone TO T{ +.ad l +select touch tone dialing +T} +pulse pulse PU T{ +.ad l +select pulse dialing +T} +flash_hook hook fh T{ +.ad l +flash switch hook +T} +fixed_pause pause PA T{ +.ad l +pause for 2-3 seconds +T} +wait_tone wait WA T{ +.ad l +wait for dial-tone +T} +user0 u0 u0 T{ +.ad l +User string #0 +T} +user1 u1 u1 T{ +.ad l +User string #1 +T} +user2 u2 u2 T{ +.ad l +User string #2 +T} +user3 u3 u3 T{ +.ad l +User string #3 +T} +user4 u4 u4 T{ +.ad l +User string #4 +T} +user5 u5 u5 T{ +.ad l +User string #5 +T} +user6 u6 u6 T{ +.ad l +User string #6 +T} +user7 u7 u7 T{ +.ad l +User string #7 +T} +user8 u8 u8 T{ +.ad l +User string #8 +T} +user9 u9 u9 T{ +.ad l +User string #9 +T} +orig_pair op op T{ +.ad l +Set default pair to its original value +T} +orig_colors oc oc T{ +.ad l +Set all color pairs to the original ones +T} +initialize_color initc Ic T{ +.ad l +initialize color #1 to (#2,#3,#4) +T} +initialize_pair initp Ip T{ +.ad l +Initialize color pair #1 to fg=(#2,#3,#4), bg=(#5,#6,#7) +T} +set_color_pair scp sp T{ +.ad l +Set current color pair to #1 +T} +set_foreground setf Sf T{ +.ad l +Set foreground color #1 +T} +set_background setb Sb T{ +.ad l +Set background color #1 +T} +change_char_pitch cpi ZA T{ +.ad l +Change number of characters per inch to #1 +T} +change_line_pitch lpi ZB T{ +.ad l +Change number of lines per inch to #1 +T} +change_res_horz chr ZC T{ +.ad l +Change horizontal resolution to #1 +T} +change_res_vert cvr ZD T{ +.ad l +Change vertical resolution to #1 +T} +define_char defc ZE T{ +.ad l +Define a character #1, #2 dots wide, descender #3 +T} +enter_doublewide_mode swidm ZF T{ +.ad l +Enter double-wide mode +T} +enter_draft_quality sdrfq ZG T{ +.ad l +Enter draft-quality mode +T} +enter_italics_mode sitm ZH T{ +.ad l +Enter italic mode +T} +enter_leftward_mode slm ZI T{ +.ad l +Start leftward carriage motion +T} +enter_micro_mode smicm ZJ T{ +.ad l +Start micro-motion mode +T} +enter_near_letter_quality snlq ZK T{ +.ad l +Enter NLQ mode +T} +enter_normal_quality snrmq ZL T{ +.ad l +Enter normal-quality mode +T} +enter_shadow_mode sshm ZM T{ +.ad l +Enter shadow-print mode +T} +enter_subscript_mode ssubm ZN T{ +.ad l +Enter subscript mode +T} +enter_superscript_mode ssupm ZO T{ +.ad l +Enter superscript mode +T} +enter_upward_mode sum ZP T{ +.ad l +Start upward carriage motion +T} +exit_doublewide_mode rwidm ZQ T{ +.ad l +End double-wide mode +T} +exit_italics_mode ritm ZR T{ +.ad l +End italic mode +T} +exit_leftward_mode rlm ZS T{ +.ad l +End left-motion mode +T} +exit_micro_mode rmicm ZT T{ +.ad l +End micro-motion mode +T} +exit_shadow_mode rshm ZU T{ +.ad l +End shadow-print mode +T} +exit_subscript_mode rsubm ZV T{ +.ad l +End subscript mode +T} +exit_superscript_mode rsupm ZW T{ +.ad l +End superscript mode +T} +exit_upward_mode rum ZX T{ +.ad l +End reverse character motion +T} +micro_column_address mhpa ZY T{ +.ad l +Like column_address in micro mode +T} +micro_down mcud1 ZZ T{ +.ad l +Like cursor_down in micro mode +T} +micro_left mcub1 Za T{ +.ad l +Like cursor_left in micro mode +T} +micro_right mcuf1 Zb T{ +.ad l +Like cursor_right in micro mode +T} +micro_row_address mvpa Zc T{ +.ad l +Like row_address #1 in micro mode +T} +micro_up mcuu1 Zd T{ +.ad l +Like cursor_up in micro mode +T} +order_of_pins porder Ze T{ +.ad l +Match software bits to print-head pins +T} +parm_down_micro mcud Zf T{ +.ad l +Like parm_down_cursor in micro mode +T} +parm_left_micro mcub Zg T{ +.ad l +Like parm_left_cursor in micro mode +T} +parm_right_micro mcuf Zh T{ +.ad l +Like parm_right_cursor in micro mode +T} +parm_up_micro mcuu Zi T{ +.ad l +Like parm_up_cursor in micro mode +T} +select_char_set scs Zj T{ +.ad l +Select character set, #1 +T} +set_bottom_margin smgb Zk T{ +.ad l +Set bottom margin at current line +T} +set_bottom_margin_parm smgbp Zl T{ +.ad l +Set bottom margin at line #1 or (if smgtp is not given) #2 lines from bottom +T} +set_left_margin_parm smglp Zm T{ +.ad l +Set left (right) margin at column #1 +T} +set_right_margin_parm smgrp Zn T{ +.ad l +Set right margin at column #1 +T} +set_top_margin smgt Zo T{ +.ad l +Set top margin at current line +T} +set_top_margin_parm smgtp Zp T{ +.ad l +Set top (bottom) margin at row #1 +T} +start_bit_image sbim Zq T{ +.ad l +Start printing bit image graphics +T} +start_char_set_def scsd Zr T{ +.ad l +Start character set definition #1, with #2 characters in the set +T} +stop_bit_image rbim Zs T{ +.ad l +Stop printing bit image graphics +T} +stop_char_set_def rcsd Zt T{ +.ad l +End definition of character set #1 +T} +subscript_characters subcs Zu T{ +.ad l +List of subscriptable characters +T} +superscript_characters supcs Zv T{ +.ad l +List of superscriptable characters +T} +these_cause_cr docr Zw T{ +.ad l +Printing any of these characters causes CR +T} +zero_motion zerom Zx T{ +.ad l +No motion for subsequent character +T} +.TE +.PP +. +The following string capabilities are present in the SVr4.0 term structure, +but were originally not documented in the man page. +. +.PP +.TS +center; +Lb Cb S Lb +Lb Lb Lb Lb +Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +\& Code \& +String Capability Name TI TC Description +_ +char_set_names csnm Zy T{ +.ad l +Produce #1'th item from list of character set names +T} +key_mouse kmous Km T{ +.ad l +Mouse event has occurred +T} +mouse_info minfo Mi T{ +.ad l +Mouse status information +T} +req_mouse_pos reqmp RQ T{ +.ad l +Request mouse position +T} +get_mouse getm Gm T{ +.ad l +Curses should get button events, parameter #1 not documented. +T} +set_a_foreground setaf AF T{ +.ad l +Set foreground color to #1, using ANSI escape +T} +set_a_background setab AB T{ +.ad l +Set background color to #1, using ANSI escape +T} +pkey_plab pfxl xl T{ +.ad l +Program function key #1 to type string #2 and show string #3 +T} +device_type devt dv T{ +.ad l +Indicate language, codeset support +T} +code_set_init csin ci T{ +.ad l +Init sequence for multiple codesets +T} +set0_des_seq s0ds s0 T{ +.ad l +Shift to codeset 0 (EUC set 0, ASCII) +T} +set1_des_seq s1ds s1 T{ +.ad l +Shift to codeset 1 +T} +set2_des_seq s2ds s2 T{ +.ad l +Shift to codeset 2 +T} +set3_des_seq s3ds s3 T{ +.ad l +Shift to codeset 3 +T} +set_lr_margin smglr ML T{ +.ad l +Set both left and right margins to #1, #2. (ML is not in BSD termcap). +T} +set_tb_margin smgtb MT T{ +.ad l +Sets both top and bottom margins to #1, #2 +T} +bit_image_repeat birep Xy T{ +.ad l +Repeat bit image cell #1 #2 times +T} +bit_image_newline binel Zz T{ +.ad l +Move to next row of the bit image +T} +bit_image_carriage_return bicr Yv T{ +.ad l +Move to beginning of same row +T} +color_names colornm Yw T{ +.ad l +Give name for color #1 +T} +define_bit_image_region defbi Yx T{ +.ad l +Define rectangular bit image region +T} +end_bit_image_region endbi Yy T{ +.ad l +End a bit-image region +T} +set_color_band setcolor Yz T{ +.ad l +Change to ribbon color #1 +T} +set_page_length slines YZ T{ +.ad l +Set page length to #1 lines +T} +display_pc_char dispc S1 T{ +.ad l +Display PC character #1 +T} +enter_pc_charset_mode smpch S2 T{ +.ad l +Enter PC character display mode +T} +exit_pc_charset_mode rmpch S3 T{ +.ad l +Exit PC character display mode +T} +enter_scancode_mode smsc S4 T{ +.ad l +Enter PC scancode mode +T} +exit_scancode_mode rmsc S5 T{ +.ad l +Exit PC scancode mode +T} +pc_term_options pctrm S6 T{ +.ad l +PC terminal options +T} +scancode_escape scesc S7 T{ +.ad l +Escape for scancode emulation +T} +alt_scancode_esc scesa S8 T{ +.ad l +Alternate escape for scancode emulation +T} +.TE +.PP +. +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! +. +.PP +.TS +center; +Lb Cb S Lb +Lb Lb Lb Lb +Lbw(25n)2 Lbw(8n)2 Lb2 Lx. +\& Code \& +String Capability Name TI TC Description +_ +enter_horizontal_hl_mode ehhlm Xh T{ +.ad l +Enter horizontal highlight mode +T} +enter_left_hl_mode elhlm Xl T{ +.ad l +Enter left highlight mode +T} +enter_low_hl_mode elohlm Xo T{ +.ad l +Enter low highlight mode +T} +enter_right_hl_mode erhlm Xr T{ +.ad l +Enter right highlight mode +T} +enter_top_hl_mode ethlm Xt T{ +.ad l +Enter top highlight mode +T} +enter_vertical_hl_mode evhlm Xv T{ +.ad l +Enter vertical highlight mode +T} +set_a_attributes sgr1 sA T{ +.ad l +Define second set of video attributes #1-#6 +T} +set_pglen_inch slength YI T{ +.ad l +Set page length to #1 hundredth of an inch (some implementations use sL for termcap). +T} +.TE +.\"*************************************************************************** +.\" Copyright 2018-2023,2024 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.143 2024/01/13 22:05:39 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 +\fI\%ncurses\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 \fI\%ncurses\fP 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. +.PP +The \fI\%ncurses\fP library uses a few of these user-defined +capabilities, +as described in \fBuser_caps\fR(5). +Other user-defined capabilities (including function keys) are +described in the terminal database, in the section on +.I "NCURSES USER-DEFINABLE CAPABILITIES" +. +.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 +.EX +\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=+\e020\e,\e021\-\e030.\*^Y0\e333\(ga\e004a\e261f\e370g\e361h\e260 + j\e331k\e277l\e332m\e300n\e305o\*~p\e304q\e304r\e304s_t\e303 + u\e264v\e301w\e302x\e263y\e363z\e362{\e343|\e330}\e234\*~\e376, + bel=\*^G, blink=\eE[5m, bold=\eE[1m, cbt=\eE[Z, clear=\eE[H\eE[J, + cr=\*^M, cub=\eE[%p1%dD, cub1=\eE[D, cud=\eE[%p1%dB, cud1=\eE[B, + cuf=\eE[%p1%dC, cuf1=\eE[C, cup=\eE[%i%p1%d;%p2%dH, + cuu=\eE[%p1%dA, cuu1=\eE[A, dch=\eE[%p1%dP, dch1=\eE[P, + dl=\eE[%p1%dM, dl1=\eE[M, ech=\eE[%p1%dX, ed=\eE[J, el=\eE[K, + el1=\eE[1K, home=\eE[H, hpa=\eE[%i%p1%dG, ht=\eE[I, hts=\eEH, + ich=\eE[%p1%d@, il=\eE[%p1%dL, il1=\eE[L, ind=\*^J, + indn=\eE[%p1%dS, invis=\eE[8m, kbs=\*^H, kcbt=\eE[Z, kcub1=\eE[D, + kcud1=\eE[B, kcuf1=\eE[C, kcuu1=\eE[A, khome=\eE[H, kich1=\eE[L, + mc4=\eE[4i, mc5=\eE[5i, nel=\er\eE[S, op=\eE[39;49m, + rep=%p1%c\eE[%p2%{1}%\-%db, rev=\eE[7m, rin=\eE[%p1%dT, + rmacs=\eE[10m, rmpch=\eE[10m, rmso=\eE[m, rmul=\eE[m, + s0ds=\eE(B, s1ds=\eE)B, s2ds=\eE*B, s3ds=\eE+B, + setab=\eE[4%p1%dm, setaf=\eE[3%p1%dm, + sgr=\eE[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=\eE[0;10m, smacs=\eE[11m, smpch=\eE[11m, smso=\eE[7m, + smul=\eE[4m, tbc=\eE[3g, u6=\eE[%i%d;%dR, u7=\eE[6n, + u8=\eE[?%[;0123456789]c, u9=\eE[c, vpa=\eE[%i%p1%dd, +.EE +.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. +.SS "Types of Capabilities" +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\*^\f(BIx\fR maps to a control-\fIx\fP 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 +.SS "Fetching Compiled Descriptions" +Terminal descriptions in \fI\%ncurses\fP are stored in terminal +databases. +These databases, which are found by their pathname, +may be configured either as directory trees or hashed databases +(see \fBterm\fR(5)), +.PP +The library uses a compiled-in list of pathnames, +which can be overridden by environment variables. +Before starting to search, +\fI\%ncurses\fP checks the search list, +eliminating duplicates and pathnames where no terminal database is found. +The \fI\%ncurses\fP library reads the first description +which passes its consistency checks. +.bP +The environment variable \fBTERMINFO\fR is checked first, for +a terminal database containing the terminal description. +.bP +Next, +\fI\%ncurses\fP looks in \fI$HOME/.terminfo\fP +for a compiled description. +.IP +This is an optional feature which may be omitted entirely from +the library, or limited to prevent accidental use by privileged applications. +.bP +Next, +if the environment variable \fI\%TERMINFO_DIRS\fP is set, +\fI\%ncurses\fP interprets the contents of that variable +as a list of colon-separated pathnames of terminal databases to be searched. +.IP +An empty pathname (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, \fI\%ncurses\fP searches these compiled-in locations: +.RS +.bP +a list of directories (/etc/terminfo:/usr/share/terminfo), and +.bP +the system terminfo directory, \fI\*d\fP +.RE +.PP +The \fBTERMINFO\fP variable can contain a terminal description instead +of the pathname of a terminal database. +If this variable begins with \*(``hex:\*('' or \*(``b64:\*('' +then \fI\%ncurses\fP reads a terminal description from +hexadecimal- or base64-encoded data, +and if that description matches the name sought, will use that. +This encoded data can be set using the \*(``\-Q\*('' option of +\fBtic\fR or \fBinfocmp\fR. +.PP +The preceding addresses the usual configuration of \fI\%ncurses\fP, +which uses terminal descriptions prepared in \fIterminfo\fP format. +While \fItermcap\fP is less expressive, +\fI\%ncurses\fP can also be configured to read \fItermcap\fP +descriptions. +In that configuration, +it checks the \fI\%TERMCAP\fP and \fI\%TERMPATH\fP variables +(for content and search path, +respectively) +after the system terminal database. +.SS "Preparing Descriptions" +We now outline how to prepare descriptions of terminals. +The most effective way to prepare a terminal description is by imitating +the description of a similar 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. +.SS "Basic Capabilities" +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 +.EX +.\".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 +.EE +.PP +while the Lear Siegler \s-1ADM-3\s0 is described as +.PP +.EX +.\".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 +.EE +.SS "Parameterized Strings" +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: +.TP 5 +\fB%%\fP +outputs \*(``%\*('' +.TP +\fB%\fI[[\fR:\fI]flags][width[.precision]][\fBdoxXs\fI]\fR +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 +\fB%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\fI[1\-9]\fR +push \fIi\fP'th parameter +.TP +\fB%P\fI[a\-z]\fR +set dynamic variable \fI[a\-z]\fP to \fIpop()\fP +.TP +\fB%g\fI[a\-z]\fR +get dynamic variable \fI[a\-z]\fP and push it +.TP +\fB%P\fI[A\-Z]\fR +set static variable \fI[a\-z]\fP to \fIpop()\fP +.TP +\fB%g\fI[A\-Z]\fR +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 \fI\%TERMINAL\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, +\fI\%ncurses\fP stores both \fIdynamic\fP and \fIstatic\fP +variables in persistent storage, initialized to zeros. +.bP +Beginning with version 6.3, +\fI\%ncurses\fP stores \fIstatic\fP and \fIdynamic\fP +variables in the same manner as SVr4. +.RS +.bP +Unlike other implementations, \fI\%ncurses\fP zeros dynamic variables +before the first \fB%g\fP or \fB%P\fP operator. +.bP +Like SVr2, +the scope of dynamic variables in \fI\%ncurses\fP +is within the current call to +\fBtparm\fP. +Use static variables if persistent storage is needed. +.RE +.RE +.TP +\fB%\*'\fIc\fB\*'\fR +char constant \fIc\fP +.TP +\fB%{\fInn\fB}\fR +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. +The order of the rows and columns is inverted here, +and the row and column are printed as two digits. +The corresponding terminal description is expressed thus: +.RS +cup=\eE&a%p2%dc%p1%dY$<6>, +.RE +.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, +.RS +cup=\*^T%p1%c%p2%c +.RE +.PP +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 +.RS +cup=\eE=%p1%\*' \*'%+%c%p2%\*' \*'%+%c +.RE +.PP +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. +.SS "Cursor Motions" +If the terminal has a fast way to home the cursor +(to very upper left corner of screen) then this can be given as +\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. +.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 +.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: +.PP +.TS +center; +lb lb +lb l . +Name Description +_ +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" +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.) +.\" +.SS "Insert/Delete Line and Vertical Motions" +If the terminal can open a new blank line before the line where the cursor +is, this should be given as \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 \fB\%ncurses\fP(3X) 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. +.SS "Insert/Delete Character" +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. +.SS "Highlighting, Underlining, and Visible Bells" +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 zero (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; +lb lb lb +l l l . +tparm Parameter Attribute Escape Sequence +_ +none none \eE[0m +p1 standout \eE[0;1;7m +p2 underline \eE[0;4m +p3 reverse \eE[0;7m +p4 blink \eE[0;5m +p5 dim not available +p6 bold \eE[0;1m +p7 invis \eE[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 \eE[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; +lb lb lb +l l l . +Sequence When to Output terminfo Translation +_ +\eE[0 always \eE[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%; +.TE +.PP +Putting this all together into the sgr sequence gives: +.PP +.EX + sgr=\eE[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%; + %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\e016%e\e017%;, +.EE +.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. +.SS "Keypad and Function Keys" +If the terminal has a keypad that transmits codes when the keys are pressed, +this information can be given. +Note that it is not possible to handle +terminals where the keypad only works in local (this applies, for example, +to the unshifted HP 2621 keys). +If the keypad can be set to transmit or not transmit, +give these codes as \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. +.SS "Tabs and Initialization" +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" +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. +.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 \fI\%ncurses\fP implementation does not yet use any of these +capabilities. +They are documented here in case they ever become important. +.SS "Line Graphics" +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 +center; +Lb Cb S L Lb +Lb2 Lb2 Lb Lb1 S +Lb L C Lb Lx. +\& acsc \& \& +ACS Name Value Symbol ASCII Fallback / Glyph Name +_ +ACS_RARROW 0x2b + > arrow pointing right +ACS_LARROW 0x2c , < arrow pointing left +ACS_UARROW 0x2d \- \*^ arrow pointing up +ACS_DARROW 0x2e . v arrow pointing down +ACS_BLOCK 0x30 0 # solid square block +ACS_DIAMOND 0x60 \(ga + diamond +ACS_CKBOARD 0x61 a : checker board (stipple) +ACS_DEGREE 0x66 f \e degree symbol +ACS_PLMINUS 0x67 g # plus/minus +ACS_BOARD 0x68 h # board of squares +ACS_LANTERN 0x69 i # lantern symbol +ACS_LRCORNER 0x6a j + lower right corner +ACS_URCORNER 0x6b k + upper right corner +ACS_ULCORNER 0x6c l + upper left corner +ACS_LLCORNER 0x6d m + lower left corner +ACS_PLUS 0x6e n + large plus or crossover +ACS_S1 0x6f o \*~ scan line 1 +ACS_S3 0x70 p \- scan line 3 +ACS_HLINE 0x71 q \- horizontal line +ACS_S7 0x72 r \- scan line 7 +ACS_S9 0x73 s \&_ scan line 9 +ACS_LTEE 0x74 t + tee pointing right +ACS_RTEE 0x75 u + tee pointing left +ACS_BTEE 0x76 v + tee pointing up +ACS_TTEE 0x77 w + tee pointing down +ACS_VLINE 0x78 x | vertical line +ACS_LEQUAL 0x79 y < less-than-or-equal-to +ACS_GEQUAL 0x7a z > greater-than-or-equal-to +ACS_PI 0x7b { * greek pi +ACS_NEQUAL 0x7c | ! not-equal +ACS_STERLING 0x7d } f UK pound sign +ACS_BULLET 0x7e \*~ o bullet +.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. +.SS "Color Handling" +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 \fBcurs_color\fP(3X) 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 \fI\%ncurses\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 +center; +cb cb cb cb s s +l lb c l1 l1 l . +Color #define Value RGB +_ +black COLOR_BLACK 0 0, 0, 0 +red COLOR_RED 1 max, 0, 0 +green COLOR_GREEN 2 0, max, 0 +yellow COLOR_YELLOW 3 max, max, 0 +blue COLOR_BLUE 4 0, 0, max +magenta COLOR_MAGENTA 5 max, 0, max +cyan COLOR_CYAN 6 0, max, max +white COLOR_WHITE 7 max, max, max +.TE +.PP +The argument values of \fBsetf\fP/\fBsetb\fP historically correspond to +a different mapping, i.e., +.PP +.TS +center; +cb cb cb cb s s +l lb c l1 l1 l . +Color #define Value RGB +_ +black COLOR_BLACK 0 0, 0, 0 +blue COLOR_BLUE 1 0, 0, max +green COLOR_GREEN 2 0, max, 0 +cyan COLOR_CYAN 3 0, max, max +red COLOR_RED 4 max, 0, 0 +magenta COLOR_MAGENTA 5 max, 0, max +yellow COLOR_YELLOW 6 max, max, 0 +white COLOR_WHITE 7 max, max, max +.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; +cb cb cb cb +lb n n lb. +Attribute Bit Decimal Set by +_ +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, +\fI\%ncurses\fP recognizes it and optimizes +the output in favor of colors. +.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 \fI\%ncurses\fP implements the termcap-compatible \fBPC\fP +variable; +though the application may set this value to something other than +a null, +\fI\%ncurses\fP 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, \*'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 Unix 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. +.SS "Glitches and Brain Damage" +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 \fI\%ncurses\fP 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. +.SS "Pitfalls of Long Entries" +Long terminfo entries are unlikely to be a problem; to date, no entry has even +approached terminfo's 4096-byte string-table maximum. +Unfortunately, the termcap +translations are much more strictly limited (to 1023 bytes), +thus termcap 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: +.bP +some termcap libraries print a warning message, +.bP +some exit if they find an entry that's longer than 1023 bytes, +.bP +some neither exit nor warn, doing nothing useful, and +.bP +some simply truncate the entries to 1023 bytes. +.PP +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 \fITERM\fP 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 \fITERM\fP variable does not have a termcap +entry. +.PP +When in \-C (translate to termcap) mode, +the \fI\%ncurses\fP implementation of +\fBtic\fP(1M) issues warning messages when the pre-tc length of a termcap +translation is too long. +The \-c (check) option also checks resolved (after tc +expansion) lengths. +.SH FILES +.TP +.I \*d +compiled terminal description database directory +.SH EXTENSIONS +Searching for terminal descriptions in +\fI$HOME/.terminfo\fP and \fI\%TERMINFO_DIRS\fP +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 \fI\%ncurses\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 \fI\%ncurses\fP to have \fBmsgr\fP turned off. +.PP +The \fI\%ncurses\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 \fI\%ncurses\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 (\fBncv\fP) capability. +The 32768 mask value used for italics with \fBncv\fP can be confused with +an absent or cancelled \fBncv\fP. +If italics should work with colors, +then the \fBncv\fP value must be specified, even if it is zero. +.PP +Different commercial ports of \fI\%terminfo\fP and \fIcurses\fP support +different subsets of XSI Curses and +(in some cases) +different extensions. +Here is a summary, +accurate as of October 1995, +after which the commercial Unix market contracted and lost diversity. +.bP +SVr4, +Solaris, +and \fI\%ncurses\fP support all SVr4 capabilities. +.bP +IRIX supports the SVr4 set and adds one undocumented extended string +capability (\fB\%set_pglen\fP). +.bP +SVr1 and Ultrix support a restricted subset of \fI\%terminfo\fP +capabilities. +The Booleans end with \fB\%xon_xoff\fP; +the numerics with \fB\%width_status_line\fP; +and the strings with \fB\%prtr_non\fP. +.bP +HP/UX supports the SVr1 subset, +plus the SVr[234] numerics +\fB\%num_labels\fP, +\fB\%label_height\fP, +\fB\%label_width\fP, +plus function keys 11 through 63, +plus +\fB\%plab_norm\fP, +\fB\%label_on\fP, +and +\fB\%label_off\fP, +plus a number of incompatible string table extensions. +.bP +AIX supports the SVr1 subset, +plus function keys 11 through 63, +plus a number of incompatible string table extensions. +.bP +OSF/1 supports both the SVr4 set and the AIX extensions. +.SH PORTABILITY +Do not count on compiled (binary) \fI\%terminfo\fP entries being +portable between commercial Unix systems. +At least two implementations of \fI\%terminfo\fP +(those of HP-UX and AIX) +diverged from those of other System V Unices after SVr1, +adding extension capabilities to the string table that +(in the binary format) +collide with subsequent System V and XSI Curses extensions. +.SH AUTHORS +Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. +Based on \fIpcurses\fP by Pavel Curtis. +.SH SEE ALSO +\fB\%infocmp\fP(1M), +\fB\%tabs\fP(1), +\fB\%tic\fP(1M), +\fB\%curses\fP(3X), +\fB\%curs_color\fP(3X), +\fB\%curs_terminfo\fP(3X), +\fB\%curs_variables\fP(3X), +\fB\%printf\fP(3), +\fB\%term_variables\fP(3X), +\fB\%term\fP(5), +\fB\%user_caps\fP(5) |