* Note: this must be run through tbl before nroff.
* The magic cookie on the first line triggers this under some man programs.
****************************************************************************
- * Copyright (c) 1998-2013,2016 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: terminfo.head,v 1.22 2016/10/15 17:02:31 tom Exp @
+ * @Id: terminfo.head,v 1.32 2017/04/22 13:52:49 tom Exp @
* Head of terminfo man page ends here
- * @Id: terminfo.tail,v 1.76 2017/01/07 18:32:49 tom Exp @
+ * @Id: terminfo.tail,v 1.84 2017/04/22 16:00:56 tom Exp @
* Beginning of terminfo.tail file
* This file is part of ncurses.
* See "terminfo.head" for copyright.
nals by giving a set of capabilities which they have, by
specifying how to perform screen operations, and by speci-
fying padding requirements and initialization sequences.
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20170107).
-
- Entries in <EM>terminfo</EM> consist of a sequence of `,' separated
- fields (embedded commas may be escaped with a backslash or
- notated as \054). White space after the `,' separator is
- ignored. The first entry for each terminal gives the
- names which are known for the terminal, separated by `|'
- characters. The first name given is the most common
- abbreviation for the terminal, the last name given should
- be a long name fully identifying the terminal, and all
- others are understood as synonyms for the terminal name.
- All names but the last should be in lower case and contain
- no blanks; the last name may well contain upper case and
- blanks for readability.
-
- Lines beginning with a `#' in the first column are treated
- as comments. While comment lines are legal at any point,
- the output of <STRONG>captoinfo</STRONG> and <STRONG>infotocap</STRONG> (aliases for <STRONG>tic</STRONG>)
- will move comments so they occur only between entries.
-
- Newlines and leading tabs may be used for formatting
- entries for readability. These are removed from parsed
- entries. The <STRONG>infocmp</STRONG> <STRONG>-f</STRONG> option relies on this to format
- if-then-else expressions: the result can be read by <STRONG>tic</STRONG>.
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20170422).
+
+
+</PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
+ Entries in <EM>terminfo</EM> consist of a sequence of fields:
+
+ <STRONG>o</STRONG> Each field ends with a comma "," (embedded commas may
+ be escaped with a backslash or written as "\054").
+
+ <STRONG>o</STRONG> White space between fields is ignored.
+
+ <STRONG>o</STRONG> The first field in a <EM>terminfo</EM> entry begins in the
+ first column.
+
+ <STRONG>o</STRONG> Newlines and leading whitespace (spaces or tabs) may
+ be used for formatting entries for readability. These
+ are removed from parsed entries.
+
+ The <STRONG>infocmp</STRONG> <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options rely on this to format
+ if-then-else expressions, or to enforce maximum line-
+ width. The resulting formatted terminal description
+ can be read by <STRONG>tic</STRONG>.
+
+ <STRONG>o</STRONG> The first field for each terminal gives the names
+ which are known for the terminal, separated by "|"
+ characters.
+
+ The first name given is the most common abbreviation
+ for the terminal (its primary name), the last name
+ given should be a long name fully identifying the ter-
+ minal (see <STRONG><A HREF="curs_termattrs.3x.html">longname(3x)</A></STRONG>), and all others are treated
+ as synonyms (aliases) for the primary terminal name.
+
+ X/Open Curses advises that all names but the last
+ should be in lower case and contain no blanks; the
+ last name may well contain upper case and blanks for
+ readability.
+
+ This implementation is not so strict; it allows mixed
+ case in the primary name and aliases. If the last
+ name has no embedded blanks, it allows that to be both
+ an alias and a verbose name (but will warn about this
+ ambiguity).
+
+ <STRONG>o</STRONG> Lines beginning with a "#" in the first column are
+ treated as comments.
+
+ While comment lines are legal at any point, the output
+ of <STRONG>captoinfo</STRONG> and <STRONG>infotocap</STRONG> (aliases for <STRONG>tic</STRONG>) will move
+ comments so they occur only between entries.
Terminal names (except for the last, verbose entry) should
be chosen using the following conventions. The particular
-rv Reverse video c100-rv
-s Enable status line vt100-s
-vb Use visible bell instead of beep wy370-vb
-
-w Wide mode (> 80 columns, usually 132) vt100-w
For more on terminal naming conventions, see the <STRONG>term(7)</STRONG>
manual page.
+</PRE><H3><a name="h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></H3><PRE>
+ The terminfo entry consists of several <EM>capabilities</EM>, i.e.,
+ features that the terminal has, or methods for exercising
+ the terminal's features.
+
+ After the first field (giving the name(s) of the terminal
+ entry), there should be one or more <EM>capability</EM> fields.
+ These are boolean, numeric or string names with corre-
+ sponding values:
+
+ <STRONG>o</STRONG> Boolean capabilities are true when present, false when
+ absent. There is no explicit value for boolean capa-
+ bilities.
+
+ <STRONG>o</STRONG> Numeric capabilities have a "#" following the name,
+ then an unsigned decimal integer value.
+
+ <STRONG>o</STRONG> String capabilities have a "=" following the name,
+ then an string of characters making up the capability
+ value.
+
+ String capabilities can be split into multiple lines,
+ just as the fields comprising a terminal entry can be
+ split into multiple lines. While blanks between
+ fields are ignored, blanks embedded within a string
+ value are retained, except for leading blanks on a
+ line.
+
+ Any capability can be <EM>canceled</EM>, i.e., suppressed from the
+ terminal entry, by following its name with "@" rather than
+ a capability value.
+
+
+</PRE><H3><a name="h3-Similar-Terminals">Similar Terminals</a></H3><PRE>
+ If there are two very similar terminals, one (the variant)
+ can be defined as being just like the other (the base)
+ with certain exceptions. In the definition of the vari-
+ ant, the string capability <STRONG>use</STRONG> can be given with the name
+ of the base terminal:
+
+ <STRONG>o</STRONG> The capabilities given before <STRONG>use</STRONG> override those in
+ the base type named by <STRONG>use</STRONG>.
+
+ <STRONG>o</STRONG> If there are multiple <STRONG>use</STRONG> capabilities, they are
+ merged in reverse order. That is, the rightmost <STRONG>use</STRONG>
+ reference is processed first, then the one to its
+ left, and so forth.
+
+ <STRONG>o</STRONG> Capabilities given explicitly in the entry override
+ those brought in by <STRONG>use</STRONG> references.
+
+ A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of
+ the use reference that imports it, where <EM>xx</EM> is the capa-
+ bility. For example, the entry
+
+ 2621-nl, smkx@, rmkx@, use=2621,
+
+ defines a 2621-nl that does not have the <STRONG>smkx</STRONG> or <STRONG>rmkx</STRONG>
+ capabilities, and hence does not turn on the function key
+ labels when in visual mode. This is useful for different
+ modes for a terminal, or for different user preferences.
+
+ An entry included via <STRONG>use</STRONG> can contain canceled capabili-
+ ties, which have the same effect as if those cancels were
+ inline in the using terminal entry.
+
+
</PRE><H3><a name="h3-Predefined-Capabilities">Predefined Capabilities</a></H3><PRE>
- The following is a complete table of the capabilities
- included in a terminfo description block and available to
+ The following is a complete table of the capabilities
+ included in a terminfo description block and available to
terminfo-using code. In each line of the table,
- The <STRONG>variable</STRONG> is the name by which the programmer (at the
+ The <STRONG>variable</STRONG> is the name by which the programmer (at the
terminfo level) accesses the capability.
- The <STRONG>capname</STRONG> is the short name used in the text of the
- database, and is used by a person updating the database.
- Whenever possible, capnames are chosen to be the same as
+ The <STRONG>capname</STRONG> is the short name used in the text of the
+ database, and is used by a person updating the database.
+ Whenever possible, capnames are chosen to be the same as
or similar to the ANSI X3.64-1979 standard (now superseded
- by ECMA-48, which uses identical or very similar names).
+ by ECMA-48, which uses identical or very similar names).
Semantics are also intended to match those of the specifi-
cation.
- The termcap code is the old <STRONG>termcap</STRONG> capability name (some
+ The termcap code is the old <STRONG>termcap</STRONG> capability name (some
capabilities are new, and have names which termcap did not
originate).
- Capability names have no hard length limit, but an infor-
- mal limit of 5 characters has been adopted to keep them
- short and to allow the tabs in the source file <STRONG>Caps</STRONG> to
+ Capability names have no hard length limit, but an infor-
+ mal limit of 5 characters has been adopted to keep them
+ short and to allow the tabs in the source file <STRONG>Caps</STRONG> to
line up nicely.
- Finally, the description field attempts to convey the
- semantics of the capability. You may find some codes in
+ Finally, the description field attempts to convey the
+ semantics of the capability. You may find some codes in
the description field:
(P) indicates that padding may be specified
- #[1-9] in the description field indicates that the string
+ #[1-9] in the description field indicates that the string
is passed through tparm with parms as given (#<EM>i</EM>).
- (P*) indicates that padding may vary in proportion to
+ (P*) indicates that padding may vary in proportion to
the number of lines affected
(#<EM>i</EM>) indicates the <EM>i</EM>th parameter.
by overwriting (hp)
col_addr_glitch xhpa YA only positive motion
for hpa/mhpa caps
-
-
-
cpi_changes_res cpix YF changing character
pitch changes reso-
lution
required
no_esc_ctlc xsb xb beehive (f1=escape,
f2=ctrl C)
+
+
no_pad_char npc NP pad character does
not exist
non_dest_scroll_region ndscr ND scrolling region is
on the status line
tilde_glitch hz hz cannot print ~'s
(Hazeltine)
-
-
transparent_underline ul ul underline character
overstrikes
xon_xoff xon xo terminal uses
width_status_line wsl ws number of columns in
status line
- The following numeric capabilities are present in the
- SVr4.0 term structure, but are not yet documented in the
+ The following numeric capabilities are present in the
+ SVr4.0 term structure, but are not yet documented in the
man page. They came in with SVr4's printer support.
dot_horz_spacing spinh Yc spacing of dots hor-
izontally in dots
per inch
-
dot_vert_spacing spinv Yb spacing of pins ver-
tically in pins per
inch
to #1
change_line_pitch lpi ZB Change number of
lines per inch to #1
+
change_res_horz chr ZC Change horizontal
resolution to #1
+
+
change_res_vert cvr ZD Change vertical res-
olution to #1
change_scroll_region csr cs change region to
home cursor (P*)
clr_bol el1 cb Clear to beginning
of line
-
-
clr_eol el ce clear to end of line
(P)
clr_eos ed cd clear to end of
char set
enter_alt_charset_mode smacs as start alternate
character set (P)
+
enter_am_mode smam SA turn on automatic
margins
enter_blink_mode blink mb turn on blinking
+
+
enter_bold_mode bold md turn on bold (extra
bright) mode
enter_ca_mode smcup ti string to start pro-
enter_italics_mode sitm ZH Enter italic mode
enter_leftward_mode slm ZI Start leftward car-
riage motion
-
enter_micro_mode smicm ZJ Start micro-motion
mode
enter_near_letter_quality snlq ZK Enter NLQ mode
ter motion
exit_xon_mode rmxon RX turn off xon/xoff
handshaking
+
+
fixed_pause pause PA pause for 2-3 sec-
onds
flash_hook hook fh flash switch hook
string
init_2string is2 is initialization
string
-
init_3string is3 i3 initialization
string
init_file if if name of initializa-
key_f1 kf1 k1 F1 function key
key_f10 kf10 k; F10 function key
key_f11 kf11 F1 F11 function key
+
key_f12 kf12 F2 F12 function key
key_f13 kf13 F3 F13 function key
key_f14 kf14 F4 F14 function key
key_f22 kf22 FC F22 function key
key_f23 kf23 FD F23 function key
key_f24 kf24 FE F24 function key
-
key_f25 kf25 FF F25 function key
key_f26 kf26 FG F26 function key
key_f27 kf27 FH F27 function key
key_ic kich1 kI insert-character key
key_il kil1 kA insert-line key
key_left kcub1 kl left-arrow key
+
key_ll kll kH lower-left key (home
down)
key_mark kmrk %2 mark key
key_previous kprv %8 previous key
key_print kprt %9 print key
key_redo krdo %0 redo key
-
key_reference kref &1 reference key
key_refresh krfr &2 refresh key
key_replace krpl &3 replace key
board_transmit' mode
keypad_xmit smkx ks enter 'key-
board_transmit' mode
+
+
lab_f0 lf0 l0 label on function
key f0 if not f0
lab_f1 lf1 l1 label on function
key f3 if not f3
lab_f4 lf4 l4 label on function
key f4 if not f4
-
-
lab_f5 lf5 l5 label on function
key f5 if not f5
lab_f6 lf6 l6 label on function
to the left (P)
parm_left_micro mcub Zg Like parm_left_cur-
sor in micro mode
+
+
parm_right_cursor cuf RI move #1 characters
to the right (P*)
parm_right_micro mcuf Zh Like parm_right_cur-
in micro mode
pkey_key pfkey pk program function key
#1 to type string #2
-
-
pkey_local pfloc pl program function key
#1 to execute string
#2
pair to #1
set_foreground setf Sf Set foreground color
#1
+
+
set_left_margin smgl ML set left soft margin
at current column.
See smgl. (ML is not
umn
set_right_margin_parm smgrp Zn Set right margin at
column #1
-
set_tab hts st set a tab in every
row, current columns
set_top_margin smgt Zo Set top margin at
zero_motion zerom Zx No motion for subse-
quent character
- The following string capabilities are present in the
- SVr4.0 term structure, but were originally not documented
+ The following string capabilities are present in the
+ SVr4.0 term structure, but were originally not documented
in the man page.
of same row
bit_image_newline binel Zz Move to next row
of the bit image
-
bit_image_repeat birep Xy Repeat bit image
cell #1 #2 times
char_set_names csnm Zy Produce #1'th item
ANSI escape
set_color_band setcolor Yz Change to ribbon
color #1
+
set_lr_margin smglr ML Set both left and
right margins to
#1, #2. (ML is
cap).
set_page_length slines YZ Set page length to
#1 lines
-
-
set_tb_margin smgtb MT Sets both top and
bottom margins to
#1, #2
- The XSI Curses standard added these hardcopy capabili-
+ The XSI Curses standard added these hardcopy capabili-
ties. They were used in some post-4.1 versions of System
V curses, e.g., Solaris 2.5 and IRIX 6.x. Except for <STRONG>YI</STRONG>,
the <STRONG>ncurses</STRONG> termcap names for them are invented. Accord-
- ing to the XSI Curses standard, they have no termcap
+ ing to the XSI Curses standard, they have no termcap
names. If your compiled terminfo entries use these, they
- may not be binary-compatible with System V terminfo
+ may not be binary-compatible with System V terminfo
entries after SVr4.1; beware!
</PRE><H3><a name="h3-User-Defined-Capabilities">User-Defined Capabilities</a></H3><PRE>
- The preceding section listed the <EM>predefined</EM> capabilities.
- They deal with some special features for terminals no
- longer (or possibly never) produced. Occasionally there
- are special features of newer terminals which are awkward
+ The preceding section listed the <EM>predefined</EM> capabilities.
+ They deal with some special features for terminals no
+ longer (or possibly never) produced. Occasionally there
+ are special features of newer terminals which are awkward
or impossible to represent by reusing the predefined capa-
bilities.
<STRONG>ncurses</STRONG> addresses this limitation by allowing user-defined
capabilities. The <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> programs provide the <STRONG>-x</STRONG>
- option for this purpose. When <STRONG>-x</STRONG> is set, <STRONG>tic</STRONG> treats
- unknown capabilities as user-defined. That is, if <STRONG>tic</STRONG>
- encounters a capability name which it does not recognize,
- it infers its type (boolean, number or string) from the
+ option for this purpose. When <STRONG>-x</STRONG> is set, <STRONG>tic</STRONG> treats
+ unknown capabilities as user-defined. That is, if <STRONG>tic</STRONG>
+ encounters a capability name which it does not recognize,
+ it infers its type (boolean, number or string) from the
syntax and makes an extended table entry for that capabil-
- ity. The <STRONG>use_extended_names</STRONG> function makes this informa-
- tion conditionally available to applications. The ncurses
- library provides the data leaving most of the behavior to
- applications:
+ ity. The <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG> function makes this
+ information conditionally available to applications. The
+ ncurses library provides the data leaving most of the
+ behavior to applications:
<STRONG>o</STRONG> User-defined capability strings whose name begins with
"k" are treated as function keys.
- <STRONG>o</STRONG> The types (boolean, number, string) determined by <STRONG>tic</STRONG>
+ <STRONG>o</STRONG> The types (boolean, number, string) determined by <STRONG>tic</STRONG>
can be inferred by successful calls on <STRONG>tigetflag</STRONG>, etc.
- <STRONG>o</STRONG> If the capability name happens to be two characters,
- the capability is also available through the termcap
+ <STRONG>o</STRONG> If the capability name happens to be two characters,
+ the capability is also available through the termcap
interface.
While termcap is said to be extensible because it does not
- use a predefined set of capabilities, in practice it has
- been limited to the capabilities defined by terminfo
- implementations. As a rule, user-defined capabilities
+ use a predefined set of capabilities, in practice it has
+ been limited to the capabilities defined by terminfo
+ implementations. As a rule, user-defined capabilities
intended for use by termcap applications should be limited
- to booleans and numbers to avoid running past the 1023
- byte limit assumed by termcap implementations and their
- applications. In particular, providing extended sets of
- function keys (past the 60 numbered keys and the handful
+ to booleans and numbers to avoid running past the 1023
+ byte limit assumed by termcap implementations and their
+ applications. In particular, providing extended sets of
+ function keys (past the 60 numbered keys and the handful
of special named keys) is best done using the longer names
available using terminfo.
</PRE><H3><a name="h3-A-Sample-Entry">A Sample Entry</a></H3><PRE>
The following entry, describing an ANSI-standard terminal,
- is representative of what a <STRONG>terminfo</STRONG> entry for a modern
+ is representative of what a <STRONG>terminfo</STRONG> entry for a modern
terminal typically looks like.
ansi|ansi/pc-term compatible with color,
smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,
- Entries may continue onto multiple lines by placing white
- space at the beginning of each line except the first.
- Comments may be included on lines beginning with "#".
+ Entries may continue onto multiple lines by placing white
+ space at the beginning of each line except the first.
+ Comments may be included on lines beginning with "#".
Capabilities in <EM>terminfo</EM> are of three types:
- <STRONG>o</STRONG> Boolean capabilities which indicate that the terminal
+ <STRONG>o</STRONG> Boolean capabilities which indicate that the terminal
has some particular feature,
- <STRONG>o</STRONG> numeric capabilities giving the size of the terminal
+ <STRONG>o</STRONG> numeric capabilities giving the size of the terminal
or the size of particular delays, and
- <STRONG>o</STRONG> string capabilities, which give a sequence which can
+ <STRONG>o</STRONG> string capabilities, which give a sequence which can
be used to perform particular terminal operations.
</PRE><H3><a name="h3-Types-of-Capabilities">Types of Capabilities</a></H3><PRE>
- All capabilities have names. For instance, the fact that
- ANSI-standard terminals have <EM>automatic</EM> <EM>margins</EM> (i.e., an
- automatic return and line-feed when the end of a line is
- reached) is indicated by the capability <STRONG>am</STRONG>. Hence the
+ All capabilities have names. For instance, the fact that
+ ANSI-standard terminals have <EM>automatic</EM> <EM>margins</EM> (i.e., an
+ automatic return and line-feed when the end of a line is
+ reached) is indicated by the capability <STRONG>am</STRONG>. Hence the
description of ansi includes <STRONG>am</STRONG>. Numeric capabilities are
- followed by the character "#" and then a positive value.
- Thus <STRONG>cols</STRONG>, which indicates the number of columns the ter-
- minal has, gives the value "80" for ansi. Values for
+ followed by the character "#" and then a positive value.
+ Thus <STRONG>cols</STRONG>, which indicates the number of columns the ter-
+ minal has, gives the value "80" for ansi. Values for
numeric capabilities may be specified in decimal, octal or
- hexadecimal, using the C programming language conventions
+ hexadecimal, using the C programming language conventions
(e.g., 255, 0377 and 0xff or 0xFF).
- Finally, string valued capabilities, such as <STRONG>el</STRONG> (clear to
+ Finally, string valued capabilities, such as <STRONG>el</STRONG> (clear to
end of line sequence) are given by the two-character code,
- an "=", and then a string ending at the next following
+ an "=", and then a string ending at the next following
",".
- A number of escape sequences are provided in the string
- valued capabilities for easy encoding of characters there.
- Both <STRONG>\E</STRONG> and <STRONG>\e</STRONG> map to an ESCAPE character, <STRONG>^x</STRONG> maps to a
- control-x for any appropriate x, and the sequences <STRONG>\n</STRONG> <STRONG>\l</STRONG>
- <STRONG>\r</STRONG> <STRONG>\t</STRONG> <STRONG>\b</STRONG> <STRONG>\f</STRONG> <STRONG>\s</STRONG> give a newline, line-feed, return, tab,
- backspace, form-feed, and space. Other escapes include
+ A number of escape sequences are provided in the string
+ valued capabilities for easy encoding of characters there:
+
+ <STRONG>o</STRONG> Both <STRONG>\E</STRONG> and <STRONG>\e</STRONG> map to an ESCAPE character,
+
+ <STRONG>o</STRONG> <STRONG>^x</STRONG> maps to a control-x for any appropriate <EM>x</EM>, and
+
+ <STRONG>o</STRONG> the sequences
+
+ <STRONG>\n</STRONG>, <STRONG>\l</STRONG>, <STRONG>\r</STRONG>, <STRONG>\t</STRONG>, <STRONG>\b</STRONG>, <STRONG>\f</STRONG>, and <STRONG>\s</STRONG>
+
+ produce
+
+ <EM>newline</EM>, <EM>line-feed</EM>, <EM>return</EM>, <EM>tab</EM>, <EM>backspace</EM>, <EM>form-</EM>
+ <EM>feed</EM>, and <EM>space</EM>,
+
+ respectively.
+
+ X/Open Curses does not say what "appropriate <EM>x</EM>" might be.
+ In practice, that is a printable ASCII graphic character.
+ The special case "^?" is interpreted as DEL (127). In all
+ other cases, the character value is AND'd with 0x1f, map-
+ ping to ASCII control codes in the range 0 through 31.
+
+ Other escapes include
<STRONG>o</STRONG> <STRONG>\^</STRONG> for <STRONG>^</STRONG>,
</PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE>
Many terminals have alternate character sets useful for
- forms-drawing. Terminfo and <STRONG>curses</STRONG> build in support for
+ forms-drawing. Terminfo and <STRONG>curses</STRONG> built-in support for
the drawing characters supported by the VT100, with some
characters from the AT&T 4410v1 added. This alternate
character set may be specified by the <STRONG>acsc</STRONG> capability.
- <STRONG>Glyph</STRONG> <STRONG>ACS</STRONG> <STRONG>Ascii</STRONG> <STRONG>VT100</STRONG>
- <STRONG>Name</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Name</STRONG>
- UK pound sign ACS_STERLING f }
- arrow pointing down ACS_DARROW v .
- arrow pointing left ACS_LARROW < ,
- arrow pointing right ACS_RARROW > +
- arrow pointing up ACS_UARROW ^ -
- board of squares ACS_BOARD # h
- bullet ACS_BULLET o ~
- checker board (stipple) ACS_CKBOARD : a
- degree symbol ACS_DEGREE \ f
- diamond ACS_DIAMOND + `
- greater-than-or-equal-to ACS_GEQUAL > z
- greek pi ACS_PI * {
- horizontal line ACS_HLINE - q
- lantern symbol ACS_LANTERN # i
- large plus or crossover ACS_PLUS + n
- less-than-or-equal-to ACS_LEQUAL < y
- lower left corner ACS_LLCORNER + m
- lower right corner ACS_LRCORNER + j
- not-equal ACS_NEQUAL ! |
- plus/minus ACS_PLMINUS # g
- scan line 1 ACS_S1 ~ o
- scan line 3 ACS_S3 - p
- scan line 7 ACS_S7 - r
- scan line 9 ACS_S9 _ s
- solid square block ACS_BLOCK # 0
- tee pointing down ACS_TTEE + w
- tee pointing left ACS_RTEE + u
- tee pointing right ACS_LTEE + t
- tee pointing up ACS_BTEE + v
- upper left corner ACS_ULCORNER + l
- upper right corner ACS_URCORNER + k
- vertical line ACS_VLINE | x
+ <STRONG>Glyph</STRONG> <STRONG>ACS</STRONG> <STRONG>Ascii</STRONG> <STRONG>VT100</STRONG> <STRONG>VT100</STRONG>
+
+ <STRONG>Name</STRONG> <STRONG>Name</STRONG> <STRONG>DefaultChar</STRONG> <STRONG>Code</STRONG>
+ -----------------------------------------------------------
+ arrow pointing right ACS_RARROW > + 0x2b
+ arrow pointing left ACS_LARROW < , 0x2c
+ arrow pointing up ACS_UARROW ^ - 0x2d
+ arrow pointing down ACS_DARROW v . 0x2e
+ solid square block ACS_BLOCK # 0 0x30
+ diamond ACS_DIAMOND + ` 0x60
+ checker board (stipple) ACS_CKBOARD : a 0x61
+ degree symbol ACS_DEGREE \ f 0x66
+ plus/minus ACS_PLMINUS # g 0x67
+ board of squares ACS_BOARD # h 0x68
+ lantern symbol ACS_LANTERN # i 0x69
+ lower right corner ACS_LRCORNER + j 0x6a
+ upper right corner ACS_URCORNER + k 0x6b
+ upper left corner ACS_ULCORNER + l 0x6c
+ lower left corner ACS_LLCORNER + m 0x6d
+ large plus or crossover ACS_PLUS + n 0x6e
+ scan line 1 ACS_S1 ~ o 0x6f
+ scan line 3 ACS_S3 - p 0x70
+ horizontal line ACS_HLINE - q 0x71
+ scan line 7 ACS_S7 - r 0x72
+ scan line 9 ACS_S9 _ s 0x73
+ tee pointing right ACS_LTEE + t 0x74
+ tee pointing left ACS_RTEE + u 0x75
+ tee pointing up ACS_BTEE + v 0x76
+ tee pointing down ACS_TTEE + w 0x77
+ vertical line ACS_VLINE | x 0x78
+ less-than-or-equal-to ACS_LEQUAL < y 0x79
+ greater-than-or-equal-to ACS_GEQUAL > z 0x7a
+ greek pi ACS_PI * { 0x7b
+ not-equal ACS_NEQUAL ! | 0x7c
+ UK pound sign ACS_STERLING f } 0x7d
+ bullet ACS_BULLET o ~ 0x7e
+
+ A few notes apply to the table itself:
+
+ <STRONG>o</STRONG> X/Open Curses incorrectly states that the mapping for
+ <EM>lantern</EM> is uppercase "I" although Unix implementations
+ use the lowercase "i" mapping.
+
+ <STRONG>o</STRONG> The DEC VT100 implemented graphics using the alternate
+ character set feature, temporarily switching <EM>modes</EM> and
+ sending characters in the range 0x60 (96) to 0x7e
+ (126).
+
+ <STRONG>o</STRONG> The AT&T terminal added graphics characters outside
+ that range.
The best way to define a new device's graphics set is to
add a column to a copy of this table for your terminal,
blue <STRONG>COLOR_BLUE</STRONG> 4 0,0,max
magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max,0,max
cyan <STRONG>COLOR_CYAN</STRONG> 6 0,max,max
-
white <STRONG>COLOR_WHITE</STRONG> 7 max,max,max
The argument values of <STRONG>setf</STRONG>/<STRONG>setb</STRONG> historically correspond
adding more capabilities of the form <STRONG>x</STRONG><EM>x</EM>.
-</PRE><H3><a name="h3-Similar-Terminals">Similar Terminals</a></H3><PRE>
- If there are two very similar terminals, one (the variant)
- can be defined as being just like the other (the base)
- with certain exceptions. In the definition of the vari-
- ant, the string capability <STRONG>use</STRONG> can be given with the name
- of the base terminal. The capabilities given before <STRONG>use</STRONG>
- override those in the base type named by <STRONG>use</STRONG>. If there
- are multiple <STRONG>use</STRONG> capabilities, they are merged in reverse
- order. That is, the rightmost <STRONG>use</STRONG> reference is processed
- first, then the one to its left, and so forth. Capabili-
- ties given explicitly in the entry override those brought
- in by <STRONG>use</STRONG> references.
-
- A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of
- the use reference that imports it, where <EM>xx</EM> is the capa-
- bility. For example, the entry
-
- 2621-nl, smkx@, rmkx@, use=2621,
-
- defines a 2621-nl that does not have the <STRONG>smkx</STRONG> or <STRONG>rmkx</STRONG>
- capabilities, and hence does not turn on the function key
- labels when in visual mode. This is useful for different
- modes for a terminal, or for different user preferences.
-
-
</PRE><H3><a name="h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></H3><PRE>
- Long terminfo entries are unlikely to be a problem; to
- date, no entry has even approached terminfo's 4096-byte
+ Long terminfo entries are unlikely to be a problem; to
+ date, no entry has even approached terminfo's 4096-byte
string-table maximum. Unfortunately, the termcap transla-
tions are much more strictly limited (to 1023 bytes), thus
- termcap translations of long terminfo entries can cause
+ termcap translations of long terminfo entries can cause
problems.
- The man pages for 4.3BSD and older versions of <STRONG>tgetent</STRONG>
- instruct the user to allocate a 1024-byte buffer for the
- termcap entry. The entry gets null-terminated by the
+ The man pages for 4.3BSD and older versions of <STRONG>tgetent</STRONG>
+ instruct the user to allocate a 1024-byte buffer for the
+ termcap entry. The entry gets null-terminated by the
termcap library, so that makes the maximum safe length for
- a termcap entry 1k-1 (1023) bytes. Depending on what the
- application and the termcap library being used does, and
- where in the termcap file the terminal type that <STRONG>tgetent</STRONG>
+ a termcap entry 1k-1 (1023) bytes. Depending on what the
+ application and the termcap library being used does, and
+ where in the termcap file the terminal type that <STRONG>tgetent</STRONG>
is searching for is, several bad things can happen.
- Some termcap libraries print a warning message or exit if
- they find an entry that's longer than 1023 bytes; others
- do not; others truncate the entries to 1023 bytes. Some
+ Some termcap libraries print a warning message or exit if
+ they find an entry that's longer than 1023 bytes; others
+ do not; others truncate the entries to 1023 bytes. Some
application programs allocate more than the recommended 1K
for the termcap entry; others do not.
Each termcap entry has two important sizes associated with
it: before "tc" expansion, and after "tc" expansion. "tc"
- is the capability that tacks on another termcap entry to
- the end of the current one, to add on its capabilities.
- If a termcap entry does not use the "tc" capability, then
+ is the capability that tacks on another termcap entry to
+ the end of the current one, to add on its capabilities.
+ If a termcap entry does not use the "tc" capability, then
of course the two lengths are the same.
- The "before tc expansion" length is the most important
- one, because it affects more than just users of that par-
- ticular terminal. This is the length of the entry as it
+ The "before tc expansion" length is the most important
+ one, because it affects more than just users of that par-
+ ticular terminal. This is the length of the entry as it
exists in /etc/termcap, minus the backslash-newline pairs,
- which <STRONG>tgetent</STRONG> strips out while reading it. Some termcap
- libraries strip off the final newline, too (GNU termcap
+ which <STRONG>tgetent</STRONG> strips out while reading it. Some termcap
+ libraries strip off the final newline, too (GNU termcap
does not). Now suppose:
- <STRONG>o</STRONG> a termcap entry before expansion is more than 1023
+ <STRONG>o</STRONG> a termcap entry before expansion is more than 1023
bytes long,
<STRONG>o</STRONG> and the application has only allocated a 1k buffer,
- <STRONG>o</STRONG> and the termcap library (like the one in BSD/OS 1.1
- and GNU) reads the whole entry into the buffer, no
- matter what its length, to see if it is the entry it
+ <STRONG>o</STRONG> and the termcap library (like the one in BSD/OS 1.1
+ and GNU) reads the whole entry into the buffer, no
+ matter what its length, to see if it is the entry it
wants,
- <STRONG>o</STRONG> and <STRONG>tgetent</STRONG> is searching for a terminal type that
- either is the long entry, appears in the termcap file
- after the long entry, or does not appear in the file
- at all (so that <STRONG>tgetent</STRONG> has to search the whole term-
+ <STRONG>o</STRONG> and <STRONG>tgetent</STRONG> is searching for a terminal type that
+ either is the long entry, appears in the termcap file
+ after the long entry, or does not appear in the file
+ at all (so that <STRONG>tgetent</STRONG> has to search the whole term-
cap file).
Then <STRONG>tgetent</STRONG> will overwrite memory, perhaps its stack, and
- probably core dump the program. Programs like telnet are
- particularly vulnerable; modern telnets pass along values
- like the terminal type automatically. The results are
- almost as undesirable with a termcap library, like SunOS
+ probably core dump the program. Programs like telnet are
+ particularly vulnerable; modern telnets pass along values
+ like the terminal type automatically. The results are
+ almost as undesirable with a termcap library, like SunOS
4.1.3 and Ultrix 4.4, that prints warning messages when it
- reads an overly long termcap entry. If a termcap library
- truncates long entries, like OSF/1 3.0, it is immune to
- dying here but will return incorrect data for the termi-
+ reads an overly long termcap entry. If a termcap library
+ truncates long entries, like OSF/1 3.0, it is immune to
+ dying here but will return incorrect data for the termi-
nal.
The "after tc expansion" length will have a similar effect
while searching.
In summary, a termcap entry that is longer than 1023 bytes
- can cause, on various combinations of termcap libraries
- and applications, a core dump, warnings, or incorrect
- operation. If it is too long even before "tc" expansion,
+ can cause, on various combinations of termcap libraries
+ and applications, a core dump, warnings, or incorrect
+ operation. If it is too long even before "tc" expansion,
it will have this effect even for users of some other ter-
- minal types and users whose TERM variable does not have a
+ minal types and users whose TERM variable does not have a
termcap entry.
When in -C (translate to termcap) mode, the <STRONG>ncurses</STRONG> imple-
mentation of <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> issues warning messages when the pre-
- tc length of a termcap translation is too long. The -c
- (check) option also checks resolved (after tc expansion)
+ tc length of a termcap translation is too long. The -c
+ (check) option also checks resolved (after tc expansion)
lengths.
</PRE><H3><a name="h3-Binary-Compatibility">Binary Compatibility</a></H3><PRE>
- It is not wise to count on portability of binary terminfo
- entries between commercial UNIX versions. The problem is
- that there are at least two versions of terminfo (under
+ It is not wise to count on portability of binary terminfo
+ entries between commercial UNIX versions. The problem is
+ that there are at least two versions of terminfo (under
HP-UX and AIX) which diverged from System V terminfo after
- SVr1, and have added extension capabilities to the string
- table that (in the binary format) collide with System V
+ SVr1, and have added extension capabilities to the string
+ table that (in the binary format) collide with System V
and XSI Curses extensions.
Searching for terminal descriptions in <STRONG>$HOME/.terminfo</STRONG> and
TERMINFO_DIRS is not supported by older implementations.
- Some SVr4 <STRONG>curses</STRONG> implementations, and all previous to
- SVr4, do not interpret the %A and %O operators in parame-
+ Some SVr4 <STRONG>curses</STRONG> implementations, and all previous to
+ SVr4, do not interpret the %A and %O operators in parame-
ter strings.
- SVr4/XPG4 do not specify whether <STRONG>msgr</STRONG> licenses movement
- while in an alternate-character-set mode (such modes may,
- among other things, map CR and NL to characters that do
- not trigger local motions). The <STRONG>ncurses</STRONG> implementation
- ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode. This raises the possi-
- bility that an XPG4 implementation making the opposite
- interpretation may need terminfo entries made for <STRONG>ncurses</STRONG>
+ SVr4/XPG4 do not specify whether <STRONG>msgr</STRONG> licenses movement
+ while in an alternate-character-set mode (such modes may,
+ among other things, map CR and NL to characters that do
+ not trigger local motions). The <STRONG>ncurses</STRONG> implementation
+ ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode. This raises the possi-
+ bility that an XPG4 implementation making the opposite
+ interpretation may need terminfo entries made for <STRONG>ncurses</STRONG>
to have <STRONG>msgr</STRONG> turned off.
- The <STRONG>ncurses</STRONG> library handles insert-character and insert-
+ The <STRONG>ncurses</STRONG> library handles insert-character and insert-
character modes in a slightly non-standard way to get bet-
- ter update efficiency. See the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG>
+ ter update efficiency. See the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG>
subsection above.
- The parameter substitutions for <STRONG>set_clock</STRONG> and <STRONG>dis-</STRONG>
- <STRONG>play_clock</STRONG> are not documented in SVr4 or the XSI Curses
+ The parameter substitutions for <STRONG>set_clock</STRONG> and <STRONG>dis-</STRONG>
+ <STRONG>play_clock</STRONG> are not documented in SVr4 or the XSI Curses
standard. They are deduced from the documentation for the
AT&T 505 terminal.
- Be careful assigning the <STRONG>kmous</STRONG> capability. The <STRONG>ncurses</STRONG>
- wants to interpret it as <STRONG>KEY_MOUSE</STRONG>, for use by terminals
- and emulators like xterm that can return mouse-tracking
- information in the keyboard-input stream.
+ Be careful assigning the <STRONG>kmous</STRONG> capability. The <STRONG>ncurses</STRONG>
+ library wants to interpret it as <STRONG>KEY_MOUSE</STRONG>, for use by
+ terminals and emulators like xterm that can return mouse-
+ tracking information in the keyboard-input stream.
X/Open Curses does not mention italics. Portable applica-
- tions must assume that numeric capabilities are signed
- 16-bit values. This includes the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv)
- capability. The 32768 mask value used for italics with
- ncv can be confused with an absent or cancelled ncv. If
- italics should work with colors, then the ncv value must
+ tions must assume that numeric capabilities are signed
+ 16-bit values. This includes the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv)
+ capability. The 32768 mask value used for italics with
+ ncv can be confused with an absent or cancelled ncv. If
+ italics should work with colors, then the ncv value must
be specified, even if it is zero.
- Different commercial ports of terminfo and curses support
- different subsets of the XSI Curses standard and (in some
+ Different commercial ports of terminfo and curses support
+ different subsets of the XSI Curses standard and (in some
cases) different extension sets. Here is a summary, accu-
rate as of October 1995:
- <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capabili-
- ties.
+ <STRONG>o</STRONG> <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capa-
+ bilities.
- <STRONG>SGI</STRONG> -- Supports the SVr4 set, adds one undocumented
- extended string capability (<STRONG>set_pglen</STRONG>).
+ <STRONG>o</STRONG> <STRONG>SGI</STRONG> -- Supports the SVr4 set, adds one undocumented
+ extended string capability (<STRONG>set_pglen</STRONG>).
- <STRONG>SVr1,</STRONG> <STRONG>Ultrix</STRONG> -- These support a restricted subset of ter-
- minfo capabilities. The booleans end with <STRONG>xon_xoff</STRONG>; the
- numerics with <STRONG>width_status_line</STRONG>; and the strings with
- <STRONG>prtr_non</STRONG>.
+ <STRONG>o</STRONG> <STRONG>SVr1,</STRONG> <STRONG>Ultrix</STRONG> -- These support a restricted subset of
+ terminfo capabilities. The booleans end with
+ <STRONG>xon_xoff</STRONG>; the numerics with <STRONG>width_status_line</STRONG>; and the
+ strings with <STRONG>prtr_non</STRONG>.
- <STRONG>HP/UX</STRONG> -- Supports the SVr1 subset, plus the SVr[234]
- numerics <STRONG>num_labels</STRONG>, <STRONG>label_height</STRONG>, <STRONG>label_width</STRONG>, plus func-
- tion keys 11 through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>, and
- <STRONG>label_off</STRONG>, plus some incompatible extensions in the string
- table.
+ <STRONG>o</STRONG> <STRONG>HP/UX</STRONG> -- Supports the SVr1 subset, plus the SVr[234]
+ numerics <STRONG>num_labels</STRONG>, <STRONG>label_height</STRONG>, <STRONG>label_width</STRONG>, plus
+ function keys 11 through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>,
+ and <STRONG>label_off</STRONG>, plus some incompatible extensions in
+ the string table.
- <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11
- through 63, plus a number of incompatible string table
- extensions.
+ <STRONG>o</STRONG> <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11
+ through 63, plus a number of incompatible string table
+ extensions.
- <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions.
+ <STRONG>o</STRONG> <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX exten-
+ sions.
</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
<ul>
+<li><a href="#h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></li>
+<li><a href="#h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></li>
+<li><a href="#h3-Similar-Terminals">Similar Terminals</a></li>
<li><a href="#h3-Predefined-Capabilities">Predefined Capabilities</a></li>
<li><a href="#h3-User-Defined-Capabilities">User-Defined Capabilities</a></li>
<li><a href="#h3-A-Sample-Entry">A Sample Entry</a></li>
<li><a href="#h3-Color-Handling">Color Handling</a></li>
<li><a href="#h3-Miscellaneous">Miscellaneous</a></li>
<li><a href="#h3-Glitches-and-Braindamage">Glitches and Braindamage</a></li>
-<li><a href="#h3-Similar-Terminals">Similar Terminals</a></li>
<li><a href="#h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></li>
<li><a href="#h3-Binary-Compatibility">Binary Compatibility</a></li>
</ul>