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