* Note: this must be run through tbl before nroff.
* The magic cookie on the first line triggers this under some man programs.
****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey *
+ * Copyright 2018-2021,2023 Thomas E. Dickey *
* Copyright 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: terminfo.head,v 1.41 2021/08/15 19:32:53 tom Exp @
+ * @Id: terminfo.head,v 1.60 2023/12/30 22:21:45 tom Exp @
* Head of terminfo man page ends here
****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey *
+ * Copyright 2018-2022,2023 Thomas E. Dickey *
* Copyright 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: terminfo.tail,v 1.107 2021/10/02 20:54:06 tom Exp @
+ * @Id: terminfo.tail,v 1.141 2023/12/30 21:36:32 tom Exp @
*.in -2
*.in +2
*.in -2
*.in +2
- *.TH
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>terminfo 5 File Formats</TITLE>
+<TITLE>terminfo 5 2023-12-30 ncurses 6.4 File formats</TITLE>
<link rel="author" href="mailto:bug-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
</HEAD>
<BODY>
-<H1 class="no-header">terminfo 5 File Formats</H1>
+<H1 class="no-header">terminfo 5 2023-12-30 ncurses 6.4 File formats</H1>
<PRE>
-<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> File Formats <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> File formats <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
- terminfo - terminal capability database
+ <STRONG>terminfo</STRONG> - terminal capability database
</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
have, by specifying how to perform screen operations, and by specifying
padding requirements and initialization sequences.
- This manual describes <STRONG>ncurses</STRONG> version 6.2 (patch 20211002).
+ This manual describes <EM>ncurses</EM> version 6.4 (patch 20240106).
-</PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
+</PRE><H3><a name="h3-terminfo-Entry-Syntax"><EM>terminfo</EM> 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
<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>
+ While comment lines are valid 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.
following suffixes should be used where possible:
<STRONG>Suffix</STRONG> <STRONG>Meaning</STRONG> <STRONG>Example</STRONG>
+ -------------------------------------------------------------
-<EM>nn</EM> Number of lines on the screen aaa-60
-<EM>n</EM>p Number of pages of memory c100-4p
-am With automargins (usually the default) vt100-am
For more on terminal naming conventions, see the <STRONG><A HREF="term.7.html">term(7)</A></STRONG> manual page.
-</PRE><H3><a name="h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></H3><PRE>
+</PRE><H3><a name="h3-terminfo-Capabilities-Syntax"><EM>terminfo</EM> 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
+ should be one or more <EM>capability</EM> fields. These are Boolean, numeric or
string names with corresponding values:
<STRONG>o</STRONG> Boolean capabilities are true when present, false when absent.
- There is no explicit value for boolean capabilities.
+ There is no explicit value for Boolean capabilities.
<STRONG>o</STRONG> Numeric capabilities have a "#" following the name, then an
unsigned decimal integer value.
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 terminfo
- level) accesses the capability.
+ <STRONG>o</STRONG> The <STRONG>variable</STRONG> is the name by which the programmer (at the terminfo
+ level) accesses the capability.
+
+ <STRONG>o</STRONG> The <STRONG>capname</STRONG> (<EM>Cap-name</EM>) is the short name used in the text of the
+ database, and is used by a person updating the database.
+
+ Whenever possible, capnames are chosen to be the same as or similar
+ to the ANSI X3.64-1979 standard (now superseded by ECMA-48, which
+ uses identical or very similar names). Semantics are also intended
+ to match those of the specification.
- The <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). Semantics are also intended to match those of the
- specification.
+ Capability names have no hard length limit, but an informal limit
+ of 5 characters has been adopted to keep them short and to allow
+ the tabs in the source file <STRONG>Caps</STRONG> to line up nicely.
- The termcap code is the old <STRONG>termcap</STRONG> capability name (some capabilities
- are new, and have names which termcap did not originate).
+ <STRONG>o</STRONG> The <STRONG>termcap</STRONG> (<EM>Tcap</EM>) code is the old capability name (some
+ capabilities are new, and have names which termcap did not
+ originate).
- Capability names have no hard length limit, but an informal limit of 5
- characters has been adopted to keep them short and to allow the tabs in
- the source file <STRONG>Caps</STRONG> to line up nicely.
+ <STRONG>o</STRONG> Finally, the <STRONG>description</STRONG> field attempts to convey the semantics of
+ the capability.
- Finally, the description field attempts to convey the semantics of the
- capability. You may find some codes in the description field:
+ You may find some codes in the description field:
(P) indicates that padding may be specified
(#<EM>i</EM>) indicates the <EM>i</EM>th parameter.
- These are the boolean capabilities:
+ These are the Boolean capabilities:
<STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
<STRONG>Booleans</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
-
-
-
auto_left_margin bw bw cub1 wraps from
column 0 to last
column
f2=ctrl C)
no_pad_char npc NP pad character does
not exist
+
non_dest_scroll_region ndscr ND scrolling region is
non-destructive
-
non_rev_rmcup nrrmc NR smcup does not
reverse rmcup
over_strike os os terminal can
with SVr4's printer support.
-
<STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
<STRONG>Numeric</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
bit_image_entwining bitwin Yo number of passes for
change_res_horz chr ZC Change horizontal
resolution to #1
-
change_res_vert cvr ZD Change vertical
resolution to #1
change_scroll_region csr cs change region to
#1
set_left_margin smgl ML set left soft margin
at current
- column. See
- smgl. (ML is not in
- BSD termcap).
+ column. (ML is
+ not in BSD termcap).
set_left_margin_parm smglp Zm Set left (right)
margin at column #1
set_right_margin smgr MR set right soft
user3 u3 u3 User string #3
user4 u4 u4 User string #4
user5 u5 u5 User string #5
-
user6 u6 u6 User string #6
+
user7 u7 u7 User string #7
user8 u8 u8 User string #8
user9 u9 u9 User string #9
zero_motion zerom Zx No motion for
subsequent character
- The following string capabilities are present in the SVr4.0 term
+ The following string capabilities are present in the SVr4.0 term
structure, but were originally not documented in the man page.
key #1 to type
string #2 and show
string #3
-
-
req_mouse_pos reqmp RQ Request mouse
position
+
scancode_escape scesc S7 Escape for
scancode emulation
set0_des_seq s0ds s0 Shift to codeset 0
bottom margins to
#1, #2
- The XSI Curses standard added these hardcopy capabilities. They were
- used in some post-4.1 versions of System V curses, e.g., Solaris 2.5
- and IRIX 6.x. Except for <STRONG>YI</STRONG>, the <STRONG>ncurses</STRONG> termcap names for them are
- invented. According to the XSI Curses standard, they have no termcap
- names. If your compiled terminfo entries use these, they may not be
+ The XSI Curses standard added these hardcopy capabilities. They were
+ used in some post-4.1 versions of System V curses, e.g., Solaris 2.5
+ and IRIX 6.x. Except for <STRONG>YI</STRONG>, the <STRONG>ncurses</STRONG> termcap names for them are
+ invented. According to the XSI Curses standard, they have no termcap
+ names. If your compiled terminfo entries use these, they may not be
binary-compatible with System V terminfo entries after SVr4.1; beware!
</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 or impossible to represent by reusing the predefined
+ 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
capabilities.
- <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
+ <EM>ncurses</EM> 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
- syntax and makes an extended table entry for that capability. 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
+ 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 capability. The
+ <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG> function makes this information conditionally
+ available to applications. The <EM>ncurses</EM> library provides the data
leaving most of the behavior to applications:
- <STRONG>o</STRONG> User-defined capability strings whose name begins with "k" are
+ <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> can be
+ <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 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-
+ While termcap is said to be extensible because it does not use a
+ predefined set of capabilities, in practice it has been limited to the
+ capabilities defined by terminfo implementations. As a rule, user-
defined capabilities intended for use by termcap applications should be
- limited to booleans and numbers to avoid running past the 1023 byte
- limit assumed by termcap implementations and their applications. In
- particular, providing extended sets of function keys (past the 60
+ limited to Booleans and numbers to avoid running past the 1023 byte
+ limit assumed by termcap implementations and their applications. In
+ particular, providing extended sets of function keys (past the 60
numbered keys and the handful of special named keys) is best done using
the longer names available using terminfo.
+ The <EM>ncurses</EM> library uses a few of these user-defined capabilities, as
+ described in <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>. Other user-defined capabilities (including
+ function keys) are described in the terminal database, in the section
+ on <EM>NCURSES</EM> <EM>USER-DEFINABLE</EM> <EM>CAPABILITIES</EM>
+
</PRE><H3><a name="h3-A-Sample-Entry">A Sample Entry</a></H3><PRE>
The following entry, describing an ANSI-standard terminal, is
are followed by the character "#" and then a positive value. Thus
<STRONG>cols</STRONG>, which indicates the number of columns the terminal has, gives the
value "80" for ansi. Values for numeric capabilities may be specified
- in decimal, octal or hexadecimal, using the C programming language
+ in decimal, octal, or 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 end of line
<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> <STRONG>^</STRONG><STRONG><EM>x</EM></STRONG> maps to a control-<EM>x</EM> for any appropriate <EM>x</EM>, and
<STRONG>o</STRONG> the sequences
</PRE><H3><a name="h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></H3><PRE>
- The <STRONG>ncurses</STRONG> library searches for terminal descriptions in several
- places. It uses only the first description found. The library has a
- compiled-in list of places to search which can be overridden by
- environment variables. Before starting to search, <STRONG>ncurses</STRONG> eliminates
- duplicates in its search list.
+ Terminal descriptions in <EM>ncurses</EM> are stored in terminal databases.
+ These databases, which are found by their pathname, may be configured
+ either as directory trees or hashed databases (see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>),
+
+ The library uses a compiled-in list of pathnames, which can be
+ overridden by environment variables. Before starting to search,
+ <EM>ncurses</EM> checks the search list, eliminating duplicates and pathnames
+ where no terminal database is found. The <EM>ncurses</EM> library reads the
+ first description which passes its consistency checks.
+
+ <STRONG>o</STRONG> The environment variable <STRONG>TERMINFO</STRONG> is checked first, for a terminal
+ database containing the terminal description.
- <STRONG>o</STRONG> If the environment variable TERMINFO is set, it is interpreted as
- the pathname of a directory containing the compiled description you
- are working on. Only that directory is searched.
+ <STRONG>o</STRONG> Next, <EM>ncurses</EM> looks in <EM>$HOME/.terminfo</EM> for a compiled description.
- <STRONG>o</STRONG> If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead look in the directory
- <STRONG>$HOME/.terminfo</STRONG> for a compiled description.
+ This is an optional feature which may be omitted entirely from the
+ library, or limited to prevent accidental use by privileged
+ applications.
- <STRONG>o</STRONG> Next, if the environment variable TERMINFO_DIRS is set, <STRONG>ncurses</STRONG>
- will interpret the contents of that variable as a list of colon-
- separated directories (or database files) to be searched.
+ <STRONG>o</STRONG> Next, if the environment variable <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> is set, <EM>ncurses</EM>
+ interprets the contents of that variable as a list of colon-
+ separated pathnames of terminal databases to be searched.
- An empty directory name (i.e., if the variable begins or ends with
- a colon, or contains adjacent colons) is interpreted as the system
+ An empty pathname (i.e., if the variable begins or ends with a
+ colon, or contains adjacent colons) is interpreted as the system
location <EM>/usr/share/terminfo</EM>.
- <STRONG>o</STRONG> Finally, <STRONG>ncurses</STRONG> searches these compiled-in locations:
+ <STRONG>o</STRONG> Finally, <EM>ncurses</EM> searches these compiled-in locations:
- <STRONG>o</STRONG> a list of directories (no default value), and
+ <STRONG>o</STRONG> a list of directories (/usr/share/terminfo), and
- <STRONG>o</STRONG> the system terminfo directory, <EM>/usr/share/terminfo</EM> (the
- compiled-in default).
+ <STRONG>o</STRONG> the system terminfo directory, <EM>/usr/share/terminfo</EM>
+
+ The <STRONG>TERMINFO</STRONG> variable can contain a terminal description instead of the
+ pathname of a terminal database. If this variable begins with "hex:"
+ or "b64:" then <EM>ncurses</EM> reads a terminal description from hexadecimal-
+ or base64-encoded data, and if that description matches the name
+ sought, will use that. This encoded data can be set using the "-Q"
+ option of <STRONG>tic</STRONG> or <STRONG>infocmp</STRONG>.
+
+ The preceding addresses the usual configuration of <EM>ncurses</EM>, which uses
+ terminal descriptions prepared in <EM>terminfo</EM> format. While <EM>termcap</EM> is
+ less expressive, <EM>ncurses</EM> can also be configured to read <EM>termcap</EM>
+ descriptions. In that configuration, it checks the <EM>TERMCAP</EM> and
+ <EM>TERMPATH</EM> variables (for content and search path, respectively) after
+ the system terminal database.
</PRE><H3><a name="h3-Preparing-Descriptions">Preparing Descriptions</a></H3><PRE>
- We now outline how to prepare descriptions of terminals. The most
- effective way to prepare a terminal description is by imitating the
- description of a similar terminal in <EM>terminfo</EM> and to build up a
+ We now outline how to prepare descriptions of terminals. The most
+ effective way to prepare a terminal description is by imitating the
+ description of a similar terminal in <EM>terminfo</EM> and to build up a
description gradually, using partial descriptions with <EM>vi</EM> or some other
- screen-oriented program to check that they are correct. Be aware that
- a very unusual terminal may expose deficiencies in the ability of the
+ screen-oriented program to check that they are correct. Be aware that
+ a very unusual terminal may expose deficiencies in the ability of the
<EM>terminfo</EM> file to describe it or bugs in the screen-handling code of the
test program.
- To get the padding for insert line right (if the terminal manufacturer
- did not document it) a severe test is to edit a large file at 9600
+ To get the padding for insert line right (if the terminal manufacturer
+ did not document it) a severe test is to edit a large file at 9600
baud, delete 16 or so lines from the middle of the screen, then hit the
"u" key several times quickly. If the terminal messes up, more padding
is usually needed. A similar test can be used for insert character.
</PRE><H3><a name="h3-Basic-Capabilities">Basic Capabilities</a></H3><PRE>
- The number of columns on each line for the terminal is given by the
- <STRONG>cols</STRONG> numeric capability. If the terminal is a CRT, then the number of
- lines on the screen is given by the <STRONG>lines</STRONG> capability. If the terminal
- wraps around to the beginning of the next line when it reaches the
- right margin, then it should have the <STRONG>am</STRONG> capability. If the terminal
- can clear its screen, leaving the cursor in the home position, then
- this is given by the <STRONG>clear</STRONG> string capability. If the terminal
+ The number of columns on each line for the terminal is given by the
+ <STRONG>cols</STRONG> numeric capability. If the terminal is a CRT, then the number of
+ lines on the screen is given by the <STRONG>lines</STRONG> capability. If the terminal
+ wraps around to the beginning of the next line when it reaches the
+ right margin, then it should have the <STRONG>am</STRONG> capability. If the terminal
+ can clear its screen, leaving the cursor in the home position, then
+ this is given by the <STRONG>clear</STRONG> string capability. If the terminal
overstrikes (rather than clearing a position when a character is struck
- over) then it should have the <STRONG>os</STRONG> capability. If the terminal is a
+ over) then it should have the <STRONG>os</STRONG> capability. If the terminal is a
printing terminal, with no soft copy unit, give it both <STRONG>hc</STRONG> and <STRONG>os</STRONG>. (<STRONG>os</STRONG>
- applies to storage scope terminals, such as TEKTRONIX 4010 series, as
- well as hard copy and APL terminals.) If there is a code to move the
+ applies to storage scope terminals, such as TEKTRONIX 4010 series, as
+ well as hard copy and APL terminals.) If there is a code to move the
cursor to the left edge of the current row, give this as <STRONG>cr</STRONG>. (Normally
- this will be carriage return, control/M.) If there is a code to
+ this will be carriage return, control/M.) If there is a code to
produce an audible signal (bell, beep, etc) give this as <STRONG>bel</STRONG>.
If there is a code to move the cursor one position to the left (such as
- backspace) that capability should be given as <STRONG>cub1</STRONG>. Similarly, codes
- to move to the right, up, and down should be given as <STRONG>cuf1</STRONG>, <STRONG>cuu1</STRONG>, and
- <STRONG>cud1</STRONG>. These local cursor motions should not alter the text they pass
- over, for example, you would not normally use "<STRONG>cuf1</STRONG>= " because the
+ backspace) that capability should be given as <STRONG>cub1</STRONG>. Similarly, codes
+ to move to the right, up, and down should be given as <STRONG>cuf1</STRONG>, <STRONG>cuu1</STRONG>, and
+ <STRONG>cud1</STRONG>. These local cursor motions should not alter the text they pass
+ over, for example, you would not normally use "<STRONG>cuf1</STRONG>= " because the
space would erase the character moved over.
A very important point here is that the local cursor motions encoded in
- <EM>terminfo</EM> are undefined at the left and top edges of a CRT terminal.
+ <EM>terminfo</EM> are undefined at the left and top edges of a CRT terminal.
Programs should never attempt to backspace around the left edge, unless
- <STRONG>bw</STRONG> is given, and never attempt to go up locally off the top. In order
- to scroll text up, a program will go to the bottom left corner of the
+ <STRONG>bw</STRONG> is given, and never attempt to go up locally off the top. In order
+ to scroll text up, a program will go to the bottom left corner of the
screen and send the <STRONG>ind</STRONG> (index) string.
- To scroll text down, a program goes to the top left corner of the
+ To scroll text down, a program goes to the top left corner of the
screen and sends the <STRONG>ri</STRONG> (reverse index) string. The strings <STRONG>ind</STRONG> and <STRONG>ri</STRONG>
are undefined when not on their respective corners of the screen.
- Parameterized versions of the scrolling sequences are <STRONG>indn</STRONG> and <STRONG>rin</STRONG>
- which have the same semantics as <STRONG>ind</STRONG> and <STRONG>ri</STRONG> except that they take one
- parameter, and scroll that many lines. They are also undefined except
+ Parameterized versions of the scrolling sequences are <STRONG>indn</STRONG> and <STRONG>rin</STRONG>
+ which have the same semantics as <STRONG>ind</STRONG> and <STRONG>ri</STRONG> except that they take one
+ parameter, and scroll that many lines. They are also undefined except
at the appropriate edge of the screen.
- The <STRONG>am</STRONG> capability tells whether the cursor sticks at the right edge of
- the screen when text is output, but this does not necessarily apply to
- a <STRONG>cuf1</STRONG> from the last column. The only local motion which is defined
- from the left edge is if <STRONG>bw</STRONG> is given, then a <STRONG>cub1</STRONG> from the left edge
- will move to the right edge of the previous row. If <STRONG>bw</STRONG> is not given,
- the effect is undefined. This is useful for drawing a box around the
+ The <STRONG>am</STRONG> capability tells whether the cursor sticks at the right edge of
+ the screen when text is output, but this does not necessarily apply to
+ a <STRONG>cuf1</STRONG> from the last column. The only local motion which is defined
+ from the left edge is if <STRONG>bw</STRONG> is given, then a <STRONG>cub1</STRONG> from the left edge
+ will move to the right edge of the previous row. If <STRONG>bw</STRONG> is not given,
+ the effect is undefined. This is useful for drawing a box around the
edge of the screen, for example. If the terminal has switch selectable
- automatic margins, the <EM>terminfo</EM> file usually assumes that this is on;
- i.e., <STRONG>am</STRONG>. If the terminal has a command which moves to the first
- column of the next line, that command can be given as <STRONG>nel</STRONG> (newline).
- It does not matter if the command clears the remainder of the current
- line, so if the terminal has no <STRONG>cr</STRONG> and <STRONG>lf</STRONG> it may still be possible to
+ automatic margins, the <EM>terminfo</EM> file usually assumes that this is on;
+ i.e., <STRONG>am</STRONG>. If the terminal has a command which moves to the first
+ column of the next line, that command can be given as <STRONG>nel</STRONG> (newline).
+ It does not matter if the command clears the remainder of the current
+ line, so if the terminal has no <STRONG>cr</STRONG> and <STRONG>lf</STRONG> it may still be possible to
craft a working <STRONG>nel</STRONG> out of one or both of them.
These capabilities suffice to describe hard-copy and "glass-tty"
</PRE><H3><a name="h3-Parameterized-Strings">Parameterized Strings</a></H3><PRE>
Cursor addressing and other strings requiring parameters in the
- terminal are described by a parameterized string capability, with
- <EM>printf</EM>-like escapes such as <EM>%x</EM> in it. For example, to address the
- cursor, the <STRONG>cup</STRONG> capability is given, using two parameters: the row and
- column to address to. (Rows and columns are numbered from zero and
- refer to the physical screen visible to the user, not to any unseen
- memory.) If the terminal has memory relative cursor addressing, that
+ terminal are described by a parameterized string capability, with
+ <EM>printf</EM>-like escapes such as <EM>%x</EM> in it. For example, to address the
+ cursor, the <STRONG>cup</STRONG> capability is given, using two parameters: the row and
+ column to address to. (Rows and columns are numbered from zero and
+ refer to the physical screen visible to the user, not to any unseen
+ memory.) If the terminal has memory relative cursor addressing, that
can be indicated by <STRONG>mrcup</STRONG>.
- The parameter mechanism uses a stack and special <STRONG>%</STRONG> codes to manipulate
- it. Typically a sequence will push one of the parameters onto the
- stack and then print it in some format. Print (e.g., "%d") is a
- special case. Other operations, including "%t" pop their operand from
- the stack. It is noted that more complex operations are often
+ The parameter mechanism uses a stack and special <STRONG>%</STRONG> codes to manipulate
+ it. Typically a sequence will push one of the parameters onto the
+ stack and then print it in some format. Print (e.g., "%d") is a
+ special case. Other operations, including "%t" pop their operand from
+ the stack. It is noted that more complex operations are often
necessary, e.g., in the <STRONG>sgr</STRONG> string.
The <STRONG>%</STRONG> encodings have the following meanings:
<STRONG>%%</STRONG> outputs "%"
<STRONG>%</STRONG><EM>[[</EM>:<EM>]flags][width[.precision]][</EM><STRONG>doxXs</STRONG><EM>]</EM>
- as in <STRONG>printf(3)</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>. Use a ":" to allow
+ as in <STRONG>printf(3)</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>. Use a ":" to allow
the next character to be a "-" flag, avoiding interpreting "%-" as
an operator.
- %c print <EM>pop()</EM> like %c in <STRONG>printf</STRONG>
+ <STRONG>%c</STRONG> print <EM>pop()</EM> like %c in <STRONG>printf</STRONG>
<STRONG>%s</STRONG> print <EM>pop()</EM> like %s in <STRONG>printf</STRONG>
<STRONG>%P</STRONG><EM>[a-z]</EM>
set dynamic variable <EM>[a-z]</EM> to <EM>pop()</EM>
- <STRONG>%g</STRONG><EM>[a-z]/</EM>
+ <STRONG>%g</STRONG><EM>[a-z]</EM>
get dynamic variable <EM>[a-z]</EM> and push it
<STRONG>%P</STRONG><EM>[A-Z]</EM>
<STRONG>%g</STRONG><EM>[A-Z]</EM>
get static variable <EM>[a-z]</EM> and push it
- The terms "static" and "dynamic" are misleading. Historically,
+ The terms "static" and "dynamic" are misleading. Historically,
these are simply two different sets of variables, whose values are
- not reset between calls to <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>. However, that fact is not
+ not reset between calls to <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>. However, that fact is not
documented in other implementations. Relying on it will adversely
impact portability to other implementations:
- <STRONG>o</STRONG> SVr2 curses supported <EM>dynamic</EM> variables. Those are set only
- by a <STRONG>%P</STRONG> operator. A <STRONG>%g</STRONG> for a given variable without first
- setting it with <STRONG>%P</STRONG> will give unpredictable results, because
- dynamic variables are an uninitialized local array on the
+ <STRONG>o</STRONG> SVr2 curses supported <EM>dynamic</EM> variables. Those are set only
+ by a <STRONG>%P</STRONG> operator. A <STRONG>%g</STRONG> for a given variable without first
+ setting it with <STRONG>%P</STRONG> will give unpredictable results, because
+ dynamic variables are an uninitialized local array on the
stack in the <STRONG>tparm</STRONG> function.
- <STRONG>o</STRONG> SVr3.2 curses supported <EM>static</EM> variables. Those are an array
- in the <STRONG>TERMINAL</STRONG> structure (declared in <STRONG>term.h</STRONG>), and are zeroed
+ <STRONG>o</STRONG> SVr3.2 curses supported <EM>static</EM> variables. Those are an array
+ in the <EM>TERMINAL</EM> structure (declared in <STRONG>term.h</STRONG>), and are zeroed
automatically when the <STRONG>setupterm</STRONG> function allocates the data.
<STRONG>o</STRONG> SVr4 curses made no further improvements to the <EM>dynamic/static</EM>
variable feature.
- <STRONG>o</STRONG> Solaris XPG4 curses does not distinguish between <EM>dynamic</EM> and
- <EM>static</EM> variables. They are the same. Like SVr4 curses, XPG4
+ <STRONG>o</STRONG> Solaris XPG4 curses does not distinguish between <EM>dynamic</EM> and
+ <EM>static</EM> variables. They are the same. Like SVr4 curses, XPG4
curses does not initialize these explicitly.
- <STRONG>o</STRONG> Before version 6.3, ncurses stores both <EM>dynamic</EM> and <EM>static</EM>
+ <STRONG>o</STRONG> Before version 6.3, <EM>ncurses</EM> stores both <EM>dynamic</EM> and <EM>static</EM>
variables in persistent storage, initialized to zeros.
- <STRONG>o</STRONG> Beginning with version 6.3, ncurses stores <EM>static</EM> and <EM>dynamic</EM>
- variables in the same manner as SVr4. Unlike other
- implementations, ncurses zeros dynamic variables before the
- first <STRONG>%g</STRONG> or <STRONG>%P</STRONG> operator.
+ <STRONG>o</STRONG> Beginning with version 6.3, <EM>ncurses</EM> stores <EM>static</EM> and <EM>dynamic</EM>
+ variables in the same manner as SVr4.
+
+ <STRONG>o</STRONG> Unlike other implementations, <EM>ncurses</EM> zeros dynamic
+ variables before the first <STRONG>%g</STRONG> or <STRONG>%P</STRONG> operator.
+
+ <STRONG>o</STRONG> Like SVr2, the scope of dynamic variables in <EM>ncurses</EM> is
+ within the current call to <STRONG>tparm</STRONG>. Use static variables if
+ persistent storage is needed.
<STRONG>%'</STRONG><EM>c</EM><STRONG>'</STRONG> char constant <EM>c</EM>
variables are persistent across escape-string evaluations.
Consider the HP2645, which, to get to row 3 and column 12, needs to be
- sent \E&a12c03Y padded for 6 milliseconds. Note that the order of the
- rows and columns is inverted here, and that the row and column are
- printed as two digits. Thus its <STRONG>cup</STRONG> capability is
- "cup=6\E&%p2%2dc%p1%2dY".
-
- The Microterm ACT-IV needs the current row and column sent preceded by
- a <STRONG>^T</STRONG>, with the row and column simply encoded in binary,
- "cup=^T%p1%c%p2%c". Terminals which use "%c" need to be able to
- backspace the cursor (<STRONG>cub1</STRONG>), and to move the cursor up one line on the
- screen (<STRONG>cuu1</STRONG>). This is necessary because it is not always safe to
- transmit <STRONG>\n</STRONG> <STRONG>^D</STRONG> and <STRONG>\r</STRONG>, as the system may change or discard them. (The
- library routines dealing with terminfo set tty modes so that tabs are
- never expanded, so \t is safe to send. This turns out to be essential
- for the Ann Arbor 4080.)
-
- A final example is the LSI ADM-3a, which uses row and column offset by
- a blank character, thus "cup=\E=%p1%' '%+%c%p2%' '%+%c". After sending
- "\E=", this pushes the first parameter, pushes the ASCII value for a
- space (32), adds them (pushing the sum on the stack in place of the two
- previous values) and outputs that value as a character. Then the same
- is done for the second parameter. More complex arithmetic is possible
- using the stack.
+ sent \E&a12c03Y padded for 6 milliseconds. The order of the rows and
+ columns is inverted here, and the row and column are printed as two
+ digits. The corresponding terminal description is expressed thus:
+ cup=\E&a%p2%dc%p1%dY$<6>,
+
+ The Microterm ACT-IV needs the current row and column sent preceded by
+ a <STRONG>^T</STRONG>, with the row and column simply encoded in binary,
+ cup=^T%p1%c%p2%c
+
+ Terminals which use "%c" need to be able to backspace the cursor
+ (<STRONG>cub1</STRONG>), and to move the cursor up one line on the screen (<STRONG>cuu1</STRONG>). This
+ is necessary because it is not always safe to transmit <STRONG>\n</STRONG> <STRONG>^D</STRONG> and <STRONG>\r</STRONG>, as
+ the system may change or discard them. (The library routines dealing
+ with terminfo set tty modes so that tabs are never expanded, so \t is
+ safe to send. This turns out to be essential for the Ann Arbor 4080.)
+
+ A final example is the LSI ADM-3a, which uses row and column offset by
+ a blank character, thus
+ cup=\E=%p1%' '%+%c%p2%' '%+%c
+
+ After sending "\E=", this pushes the first parameter, pushes the ASCII
+ value for a space (32), adds them (pushing the sum on the stack in
+ place of the two previous values) and outputs that value as a
+ character. Then the same is done for the second parameter. More
+ complex arithmetic is possible using the stack.
</PRE><H3><a name="h3-Cursor-Motions">Cursor Motions</a></H3><PRE>
These are the margin-related capabilities:
- <STRONG>Name</STRONG> <STRONG>Description</STRONG>
- ----------------------------------------------
- smgl Set left margin at current column
- smgr Set right margin at current column
- smgb Set bottom margin at current line
- smgt Set top margin at current line
- smgbp Set bottom margin at line <EM>N</EM>
- smglp Set left margin at column <EM>N</EM>
- smgrp Set right margin at column <EM>N</EM>
- smgtp Set top margin at line <EM>N</EM>
+ <STRONG>Name</STRONG> <STRONG>Description</STRONG>
+ ---------------------------------------------------
+ <STRONG>smgl</STRONG> Set left margin at current column
+ <STRONG>smgr</STRONG> Set right margin at current column
+ <STRONG>smgb</STRONG> Set bottom margin at current line
+ <STRONG>smgt</STRONG> Set top margin at current line
+ <STRONG>smgbp</STRONG> Set bottom margin at line <EM>N</EM>
+ <STRONG>smglp</STRONG> Set left margin at column <EM>N</EM>
+ <STRONG>smgrp</STRONG> Set right margin at column <EM>N</EM>
+ <STRONG>smgtp</STRONG> Set top margin at line <EM>N</EM>
+ <STRONG>smglr</STRONG> Set both left and right margins to <EM>L</EM> and <EM>R</EM>
+ <STRONG>smgtb</STRONG> Set both top and bottom margins to <EM>T</EM> and <EM>B</EM>
When writing an application that uses these string capabilities, the
pairs should be first checked to see if each capability in the pair is
one capability in the pairs <STRONG>smglp</STRONG> and <STRONG>smgrp</STRONG> or <STRONG>smgtp</STRONG> and <STRONG>smgbp</STRONG>
should be defined, leaving the other unset.
+ Except for very old terminal descriptions, e.g., those developed for
+ SVr4, the scheme just described should be considered obsolete. An
+ improved set of capabilities was added late in the SVr4 releases (<STRONG>smglr</STRONG>
+ and <STRONG>smgtb</STRONG>), which explicitly use two parameters for setting the
+ left/right or top/bottom margins.
+
When setting margins, the line- and column-values are zero-based.
The <STRONG>mgc</STRONG> string capability should be defined. Applications such as
available.)
-</PRE><H3><a name="h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></H3><PRE>
+</PRE><H3><a name="h3-Insert_Delete-Line-and-Vertical-Motions">Insert/Delete Line and Vertical Motions</a></H3><PRE>
If the terminal can open a new blank line before the line where the
cursor is, this should be given as <STRONG>il1</STRONG>; this is done only from the
first position of a line. The cursor must then appear on the newly
using <STRONG>ri</STRONG> or <STRONG>ind</STRONG> on many terminals without a true insert/delete line,
and is often faster even on terminals with those features.
- The boolean <STRONG>non_dest_scroll_region</STRONG> should be set if each scrolling
+ The Boolean <STRONG>non_dest_scroll_region</STRONG> should be set if each scrolling
window is effectively a view port on a screen-sized canvas. To test
for this capability, create a scrolling region in the middle of the
screen, write something to the bottom line, move the cursor to the top
without moving the cursor) can be given as <STRONG>ech</STRONG> with one parameter.
-</PRE><H3><a name="h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></H3><PRE>
+</PRE><H3><a name="h3-Highlighting_Underlining_and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></H3><PRE>
If your terminal has one or more kinds of display attributes, these can
be represented in a number of different ways. You should choose one
display form as <EM>standout</EM> <EM>mode</EM>, representing a good, high contrast,
If there is a sequence to set arbitrary combinations of modes, this
should be given as <STRONG>sgr</STRONG> (set attributes), taking 9 parameters. Each
- parameter is either 0 or nonzero, as the corresponding attribute is on
- or off. The 9 parameters are, in order: standout, underline, reverse,
- blink, dim, bold, blank, protect, alternate character set. Not all
- modes need be supported by <STRONG>sgr</STRONG>, only those for which corresponding
- separate attribute commands exist.
+ parameter is either zero (0) or nonzero, as the corresponding attribute
+ is on or off. The 9 parameters are, in order: standout, underline,
+ reverse, blink, dim, bold, blank, protect, alternate character set.
+ Not all modes need be supported by <STRONG>sgr</STRONG>, only those for which
+ corresponding separate attribute commands exist.
For example, the DEC vt220 supports most of the modes:
- <STRONG>tparm</STRONG> <STRONG>parameter</STRONG> <STRONG>attribute</STRONG> <STRONG>escape</STRONG> <STRONG>sequence</STRONG>
-
- none none \E[0m
-
- p1 standout \E[0;1;7m
- p2 underline \E[0;4m
- p3 reverse \E[0;7m
- p4 blink \E[0;5m
- p5 dim not available
- p6 bold \E[0;1m
- p7 invis \E[0;8m
- p8 protect not used
- p9 altcharset ^O (off) ^N (on)
+ <STRONG>tparm</STRONG> <STRONG>Parameter</STRONG> <STRONG>Attribute</STRONG> <STRONG>Escape</STRONG> <STRONG>Sequence</STRONG>
+ ------------------------------------------------
+ none none \E[0m
+ p1 standout \E[0;1;7m
+ p2 underline \E[0;4m
+ p3 reverse \E[0;7m
+ p4 blink \E[0;5m
+ p5 dim not available
+ p6 bold \E[0;1m
+ p7 invis \E[0;8m
+ p8 protect not used
+ p9 altcharset ^O (off) ^N (on)
We begin each escape sequence by turning off any existing modes, since
there is no quick way to determine whether they are active. Standout
Writing out the above sequences, along with their dependencies yields
- <STRONG>sequence</STRONG> <STRONG>when</STRONG> <STRONG>to</STRONG> <STRONG>output</STRONG> <STRONG>terminfo</STRONG> <STRONG>translation</STRONG>
-
- \E[0 always \E[0
- ;1 if p1 or p6 %?%p1%p6%|%t;1%;
- ;4 if p2 %?%p2%|%t;4%;
- ;5 if p4 %?%p4%|%t;5%;
- ;7 if p1 or p3 %?%p1%p3%|%t;7%;
- ;8 if p7 %?%p7%|%t;8%;
- m always m
- ^N or ^O if p9 ^N, else ^O %?%p9%t^N%e^O%;
+ <STRONG>Sequence</STRONG> <STRONG>When</STRONG> <STRONG>to</STRONG> <STRONG>Output</STRONG> <STRONG>terminfo</STRONG> <STRONG>Translation</STRONG>
+ ----------------------------------------------------
+ \E[0 always \E[0
+ ;1 if p1 or p6 %?%p1%p6%|%t;1%;
+ ;4 if p2 %?%p2%|%t;4%;
+ ;5 if p4 %?%p4%|%t;5%;
+ ;7 if p1 or p3 %?%p1%p3%|%t;7%;
+ ;8 if p7 %?%p7%|%t;8%;
+ m always m
+ ^N or ^O if p9 ^N, else ^O %?%p9%t^N%e^O%;
Putting this all together into the sgr sequence gives:
A command to erase or blank the status line may be specified as <STRONG>dsl</STRONG>.
- The boolean capability <STRONG>eslok</STRONG> specifies that escape sequences, tabs,
+ The Boolean capability <STRONG>eslok</STRONG> specifies that escape sequences, tabs,
etc., work ordinarily in the status line.
- The <STRONG>ncurses</STRONG> implementation does not yet use any of these capabilities.
+ The <EM>ncurses</EM> implementation does not yet use any of these capabilities.
They are documented here in case they ever become important.
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>acsc</STRONG> <STRONG>acsc</STRONG>
- <STRONG>Name</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Char</STRONG> <STRONG>Value</STRONG>
+ <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG> <STRONG>acsc</STRONG>
+ <STRONG>Glyph</STRONG> <STRONG>Name</STRONG> <STRONG>ACS</STRONG> <STRONG>Name</STRONG> <STRONG>Fallback</STRONG> <STRONG>Symbol</STRONG> <STRONG>Value</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
+ arrow pointing right <STRONG>ACS_RARROW</STRONG> > + 0x2b
+ arrow pointing left <STRONG>ACS_LARROW</STRONG> < , 0x2c
+ arrow pointing up <STRONG>ACS_UARROW</STRONG> ^ - 0x2d
+ arrow pointing down <STRONG>ACS_DARROW</STRONG> v . 0x2e
+ solid square block <STRONG>ACS_BLOCK</STRONG> # 0 0x30
+ diamond <STRONG>ACS_DIAMOND</STRONG> + ` 0x60
+ checker board (stipple) <STRONG>ACS_CKBOARD</STRONG> : a 0x61
+ degree symbol <STRONG>ACS_DEGREE</STRONG> \ f 0x66
+ plus/minus <STRONG>ACS_PLMINUS</STRONG> # g 0x67
+ board of squares <STRONG>ACS_BOARD</STRONG> # h 0x68
+ lantern symbol <STRONG>ACS_LANTERN</STRONG> # i 0x69
+ lower right corner <STRONG>ACS_LRCORNER</STRONG> + j 0x6a
+ upper right corner <STRONG>ACS_URCORNER</STRONG> + k 0x6b
+ upper left corner <STRONG>ACS_ULCORNER</STRONG> + l 0x6c
+ lower left corner <STRONG>ACS_LLCORNER</STRONG> + m 0x6d
+ large plus or crossover <STRONG>ACS_PLUS</STRONG> + n 0x6e
+ scan line 1 <STRONG>ACS_S1</STRONG> ~ o 0x6f
+ scan line 3 <STRONG>ACS_S3</STRONG> - p 0x70
+ horizontal line <STRONG>ACS_HLINE</STRONG> - q 0x71
+ scan line 7 <STRONG>ACS_S7</STRONG> - r 0x72
+ scan line 9 <STRONG>ACS_S9</STRONG> _ s 0x73
+ tee pointing right <STRONG>ACS_LTEE</STRONG> + t 0x74
+ tee pointing left <STRONG>ACS_RTEE</STRONG> + u 0x75
+ tee pointing up <STRONG>ACS_BTEE</STRONG> + v 0x76
+ tee pointing down <STRONG>ACS_TTEE</STRONG> + w 0x77
+ vertical line <STRONG>ACS_VLINE</STRONG> | x 0x78
+ less-than-or-equal-to <STRONG>ACS_LEQUAL</STRONG> < y 0x79
+ greater-than-or-equal-to <STRONG>ACS_GEQUAL</STRONG> > z 0x7a
+ greek pi <STRONG>ACS_PI</STRONG> * { 0x7b
+ not-equal <STRONG>ACS_NEQUAL</STRONG> ! | 0x7c
+ UK pound sign <STRONG>ACS_STERLING</STRONG> f } 0x7d
+ bullet <STRONG>ACS_BULLET</STRONG> o ~ 0x7e
A few notes apply to the table itself:
<STRONG>o</STRONG> Tektronix-like terminals have a predefined set of <EM>N</EM> colors (where <EM>N</EM>
is usually 8), and can set character-cell foreground and background
- characters independently, mixing them into <EM>N</EM> * <EM>N</EM> color-pairs.
+ characters independently, mixing them into <EM>N</EM> * <EM>N</EM> color pairs.
<STRONG>o</STRONG> On HP-like terminals, the user must set each color pair up
separately (foreground and background are not independently
- settable). Up to <EM>M</EM> color-pairs may be set up from 2*<EM>M</EM> different
+ settable). Up to <EM>M</EM> color pairs may be set up from 2*<EM>M</EM> different
colors. ANSI-compatible terminals are Tektronix-like.
Some basic color capabilities are independent of the color method. The
numeric capabilities <STRONG>colors</STRONG> and <STRONG>pairs</STRONG> specify the maximum numbers of
- colors and color-pairs that can be displayed simultaneously. The <STRONG>op</STRONG>
+ colors and color pairs that can be displayed simultaneously. The <STRONG>op</STRONG>
(original pair) string resets foreground and background colors to their
default values for the terminal. The <STRONG>oc</STRONG> string resets all colors or
- color-pairs to their default values for the terminal. Some terminals
+ color pairs to their default values for the terminal. Some terminals
(including many PC terminal emulators) erase screen areas with the
current background color rather than the power-up default background;
- these should have the boolean capability <STRONG>bce</STRONG>.
+ these should have the Boolean capability <STRONG>bce</STRONG>.
While the curses library works with <EM>color</EM> <EM>pairs</EM> (reflecting the
inability of some devices to set foreground and background colors
The <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> and <STRONG>setf</STRONG>/<STRONG>setb</STRONG> capabilities take a single numeric
argument each. Argument values 0-7 of <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> are portably defined
as follows (the middle column is the symbolic #define available in the
- header for the <STRONG>curses</STRONG> or <STRONG>ncurses</STRONG> libraries). The terminal hardware is
+ header for the <STRONG>curses</STRONG> or <EM>ncurses</EM> libraries). The terminal hardware is
free to map these as it likes, but the RGB values indicate normal
locations in color space.
- <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG>
- black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0
- red <STRONG>COLOR_RED</STRONG> 1 max,0,0
- green <STRONG>COLOR_GREEN</STRONG> 2 0,max,0
- yellow <STRONG>COLOR_YELLOW</STRONG> 3 max,max,0
- 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
+ <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG>
+ ------------------------------------------------
+ black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0
+ red <STRONG>COLOR_RED</STRONG> 1 max, 0, 0
+ green <STRONG>COLOR_GREEN</STRONG> 2 0, max, 0
+ yellow <STRONG>COLOR_YELLOW</STRONG> 3 max, max, 0
+ 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 to a different
mapping, i.e.,
- <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG>
- black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0
- blue <STRONG>COLOR_BLUE</STRONG> 1 0,0,max
- green <STRONG>COLOR_GREEN</STRONG> 2 0,max,0
- cyan <STRONG>COLOR_CYAN</STRONG> 3 0,max,max
- red <STRONG>COLOR_RED</STRONG> 4 max,0,0
- magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max,0,max
- yellow <STRONG>COLOR_YELLOW</STRONG> 6 max,max,0
- white <STRONG>COLOR_WHITE</STRONG> 7 max,max,max
+ <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG>
+ ------------------------------------------------
+ black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0
+ blue <STRONG>COLOR_BLUE</STRONG> 1 0, 0, max
+ green <STRONG>COLOR_GREEN</STRONG> 2 0, max, 0
+ cyan <STRONG>COLOR_CYAN</STRONG> 3 0, max, max
+ red <STRONG>COLOR_RED</STRONG> 4 max, 0, 0
+ magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max, 0, max
+ yellow <STRONG>COLOR_YELLOW</STRONG> 6 max, max, 0
+ white <STRONG>COLOR_WHITE</STRONG> 7 max, max, max
It is important to not confuse the two sets of color capabilities;
otherwise red/blue will be interchanged on the display.
- On an HP-like terminal, use <STRONG>scp</STRONG> with a color-pair number parameter to
+ On an HP-like terminal, use <STRONG>scp</STRONG> with a color pair number parameter to
set which color pair is current.
Some terminals allow the <EM>color</EM> <EM>values</EM> to be modified:
indicate that colors can be modified. If so, the <STRONG>initc</STRONG> capability
will take a color number (0 to <STRONG>colors</STRONG> - 1)and three more parameters
which describe the color. These three parameters default to being
- interpreted as RGB (Red, Green, Blue) values. If the boolean
+ interpreted as RGB (Red, Green, Blue) values. If the Boolean
capability <STRONG>hls</STRONG> is present, they are instead as HLS (Hue, Lightness,
Saturation) indices. The ranges are terminal-dependent.
<STRONG>o</STRONG> On an HP-like terminal, <STRONG>initp</STRONG> may give a capability for changing a
- color-pair value. It will take seven parameters; a color-pair
+ color pair value. It will take seven parameters; a color pair
number (0 to <STRONG>max_pairs</STRONG> - 1), and two triples describing first
background and then foreground colors. These parameters must be
(Red, Green, Blue) or (Hue, Lightness, Saturation) depending on
<STRONG>hls</STRONG>.
On some color terminals, colors collide with highlights. You can
- register these collisions with the <STRONG>ncv</STRONG> capability. This is a bit-mask
+ register these collisions with the <STRONG>ncv</STRONG> capability. This is a bit mask
of attributes not to be used when colors are enabled. The
correspondence with the attributes understood by <STRONG>curses</STRONG> is as follows:
- <STRONG>Attribute</STRONG> <STRONG>Bit</STRONG> <STRONG>Decimal</STRONG> <STRONG>Set</STRONG> <STRONG>by</STRONG>
- A_STANDOUT 0 1 sgr
- A_UNDERLINE 1 2 sgr
- A_REVERSE 2 4 sgr
- A_BLINK 3 8 sgr
- A_DIM 4 16 sgr
- A_BOLD 5 32 sgr
- A_INVIS 6 64 sgr
- A_PROTECT 7 128 sgr
- A_ALTCHARSET 8 256 sgr
- A_HORIZONTAL 9 512 sgr1
- A_LEFT 10 1024 sgr1
- A_LOW 11 2048 sgr1
- A_RIGHT 12 4096 sgr1
- A_TOP 13 8192 sgr1
- A_VERTICAL 14 16384 sgr1
- A_ITALIC 15 32768 sitm
+ <STRONG>Attribute</STRONG> <STRONG>Bit</STRONG> <STRONG>Decimal</STRONG> <STRONG>Set</STRONG> <STRONG>by</STRONG>
+ --------------------------------------
+ <STRONG>A_STANDOUT</STRONG> 0 1 <STRONG>sgr</STRONG>
+ <STRONG>A_UNDERLINE</STRONG> 1 2 <STRONG>sgr</STRONG>
+ <STRONG>A_REVERSE</STRONG> 2 4 <STRONG>sgr</STRONG>
+ <STRONG>A_BLINK</STRONG> 3 8 <STRONG>sgr</STRONG>
+ <STRONG>A_DIM</STRONG> 4 16 <STRONG>sgr</STRONG>
+ <STRONG>A_BOLD</STRONG> 5 32 <STRONG>sgr</STRONG>
+ <STRONG>A_INVIS</STRONG> 6 64 <STRONG>sgr</STRONG>
+ <STRONG>A_PROTECT</STRONG> 7 128 <STRONG>sgr</STRONG>
+ <STRONG>A_ALTCHARSET</STRONG> 8 256 <STRONG>sgr</STRONG>
+ <STRONG>A_HORIZONTAL</STRONG> 9 512 <STRONG>sgr1</STRONG>
+ <STRONG>A_LEFT</STRONG> 10 1024 <STRONG>sgr1</STRONG>
+ <STRONG>A_LOW</STRONG> 11 2048 <STRONG>sgr1</STRONG>
+ <STRONG>A_RIGHT</STRONG> 12 4096 <STRONG>sgr1</STRONG>
+ <STRONG>A_TOP</STRONG> 13 8192 <STRONG>sgr1</STRONG>
+
+ <STRONG>A_VERTICAL</STRONG> 14 16384 <STRONG>sgr1</STRONG>
+ <STRONG>A_ITALIC</STRONG> 15 32768 <STRONG>sitm</STRONG>
For example, on many IBM PC consoles, the underline attribute collides
with the foreground color blue and is not available in color mode.
These should have an <STRONG>ncv</STRONG> capability of 2.
- SVr4 curses does nothing with <STRONG>ncv</STRONG>, ncurses recognizes it and optimizes
+ SVr4 curses does nothing with <STRONG>ncv</STRONG>, <EM>ncurses</EM> recognizes it and optimizes
the output in favor of colors.
If the terminal requires other than a null (zero) character as a pad,
then this can be given as pad. Only the first character of the pad
string is used. If the terminal does not have a pad character, specify
- npc. Note that ncurses implements the termcap-compatible <STRONG>PC</STRONG> variable;
+ npc. Note that <EM>ncurses</EM> implements the termcap-compatible <STRONG>PC</STRONG> variable;
though the application may set this value to something other than a
- null, ncurses will test <STRONG>npc</STRONG> first and use napms if the terminal has no
+ null, <EM>ncurses</EM> will test <STRONG>npc</STRONG> first and use napms if the terminal has no
pad character.
If the terminal can move up or down half a line, this can be indicated
4025, this can be indicated with <STRONG>cmdch</STRONG>. A prototype command character
is chosen which is used in all capabilities. This character is given
in the <STRONG>cmdch</STRONG> capability to identify it. The following convention is
- supported on some UNIX systems: The environment is to be searched for a
+ supported on some Unix systems: The environment is to be searched for a
<STRONG>CC</STRONG> variable, and if found, all occurrences of the prototype character
are replaced with the character in the environment variable.
of <STRONG>lm</STRONG>#0 indicates that the number of lines is not fixed, but that there
is still more memory than fits on the screen.
- If the terminal is one of those supported by the UNIX virtual terminal
+ If the terminal is one of those supported by the Unix virtual terminal
protocol, the terminal number can be given as <STRONG>vt</STRONG>.
Media copy strings which control an auxiliary printer connected to the
while an <STRONG>mc5p</STRONG> is in effect.
-</PRE><H3><a name="h3-Glitches-and-Braindamage">Glitches and Braindamage</a></H3><PRE>
+</PRE><H3><a name="h3-Glitches-and-Brain-Damage">Glitches and Brain Damage</a></H3><PRE>
Hazeltine terminals, which do not allow "~" characters to be displayed
should indicate <STRONG>hz</STRONG>.
teleray_glitch. This glitch is also taken to mean that it is not
possible to position the cursor on top of a "magic cookie", that to
erase standout mode it is instead necessary to use delete and insert
- line. The ncurses implementation ignores this glitch.
+ line. The <EM>ncurses</EM> implementation ignores this glitch.
The Beehive Superbee, which is unable to correctly transmit the escape
or control/C characters, has <STRONG>xsb</STRONG>, indicating that the f1 key is used
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> is searching for is,
- several bad things can happen.
+ 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 application programs allocate more than
- the recommended 1K for the termcap entry; others do not.
+ <STRONG>o</STRONG> some termcap libraries print a warning message,
+
+ <STRONG>o</STRONG> some exit if they find an entry that's longer than 1023 bytes,
+
+ <STRONG>o</STRONG> some neither exit nor warn, doing nothing useful, and
+
+ <STRONG>o</STRONG> some simply 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
will return incorrect data for the terminal.
The "after tc expansion" length will have a similar effect to the
- above, but only for people who actually set TERM to that terminal type,
+ above, but only for people who actually set <EM>TERM</EM> to that terminal type,
since <STRONG>tgetent</STRONG> only does "tc" expansion once it is found the terminal
type it was looking for, not while searching.
on various combinations of termcap libraries and applications, a core
dump, warnings, or incorrect operation. If it is too long even before
"tc" expansion, it will have this effect even for users of some other
- terminal types and users whose TERM variable does not have a termcap
+ terminal types and users whose <EM>TERM</EM> variable does not have a termcap
entry.
- When in -C (translate to termcap) mode, the <STRONG>ncurses</STRONG> implementation of
+ When in -C (translate to termcap) mode, the <EM>ncurses</EM> implementation 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) 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 HP-UX and AIX) which diverged
- from System V terminfo after SVr1, and have added extension
- capabilities to the string table that (in the binary format) collide
- with System V and XSI Curses extensions.
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+ <EM>/usr/share/terminfo</EM>
+ compiled terminal description database directory
</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
- Searching for terminal descriptions in <STRONG>$HOME/.terminfo</STRONG> and
- TERMINFO_DIRS is not supported by older implementations.
+ Searching for terminal descriptions in <EM>$HOME/.terminfo</EM> and
+ <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> is not supported by older implementations.
- Some SVr4 <STRONG>curses</STRONG> implementations, and all previous to SVr4, do not
+ Some SVr4 <STRONG>curses</STRONG> implementations, and all previous to SVr4, do not
interpret the %A and %O operators in parameter 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
+ 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
+ <EM>ncurses</EM> implementation ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode. This raises
the possibility that an XPG4 implementation making the opposite
- interpretation may need terminfo entries made for <STRONG>ncurses</STRONG> to have <STRONG>msgr</STRONG>
+ interpretation may need terminfo entries made for <EM>ncurses</EM> to have <STRONG>msgr</STRONG>
turned off.
- The <STRONG>ncurses</STRONG> library handles insert-character and insert-character modes
- in a slightly non-standard way to get better update efficiency. See
+ The <EM>ncurses</EM> library handles insert-character and insert-character modes
+ in a slightly non-standard way to get better update efficiency. See
the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG> subsection above.
- The parameter substitutions for <STRONG>set_clock</STRONG> and <STRONG>display_clock</STRONG> are not
- documented in SVr4 or the XSI Curses standard. They are deduced from
+ The parameter substitutions for <STRONG>set_clock</STRONG> and <STRONG>display_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> 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
+ Be careful assigning the <STRONG>kmous</STRONG> capability. The <EM>ncurses</EM> 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 applications 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
+ X/Open Curses does not mention italics. Portable applications 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> (<STRONG>ncv</STRONG>) capability. The 32768 mask value
+ used for italics with <STRONG>ncv</STRONG> can be confused with an absent or cancelled
+ <STRONG>ncv</STRONG>. If italics should work with colors, then the <STRONG>ncv</STRONG> 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 cases) different
- extension sets. Here is a summary, accurate as of October 1995:
+ Different commercial ports of <EM>terminfo</EM> and <EM>curses</EM> support different
+ subsets of XSI Curses and (in some cases) different extensions. Here
+ is a summary, accurate as of October 1995, after which the commercial
+ Unix market contracted and lost diversity.
- <STRONG>o</STRONG> <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capabilities.
+ <STRONG>o</STRONG> SVr4, Solaris, and <EM>ncurses</EM> support all SVr4 capabilities.
- <STRONG>o</STRONG> <STRONG>SGI</STRONG> -- Supports the SVr4 set, adds one undocumented extended string
- capability (<STRONG>set_pglen</STRONG>).
+ <STRONG>o</STRONG> IRIX supports the SVr4 set and adds one undocumented extended
+ string capability (<STRONG>set_pglen</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>o</STRONG> SVr1 and Ultrix support a restricted subset of <EM>terminfo</EM>
+ 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>HP/UX</STRONG> -- Supports the SVr1 subset, plus the SVr[234] numerics
+ <STRONG>o</STRONG> HP/UX 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.
+ through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>, and <STRONG>label_off</STRONG>, plus a number
+ of incompatible string table extensions.
- <STRONG>o</STRONG> <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11 through 63,
+ <STRONG>o</STRONG> AIX supports the SVr1 subset, plus function keys 11 through 63,
plus a number of incompatible string table extensions.
- <STRONG>o</STRONG> <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions.
-
-
-</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
- /usr/share/terminfo/?/* files containing terminal descriptions
+ <STRONG>o</STRONG> OSF/1 supports both the SVr4 set and the AIX extensions.
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
- <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>,
- <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>printf(3)</STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>. <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.
- <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ Do not count on compiled (binary) <EM>terminfo</EM> entries being portable
+ between commercial Unix systems. At least two implementations of
+ <EM>terminfo</EM> (those of HP-UX and AIX) diverged from those of other System V
+ Unices after SVr1, adding extension capabilities to the string table
+ that (in the binary format) collide with subsequent System V and XSI
+ Curses extensions.
</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
- Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Based on pcurses
+ Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Based on <EM>pcurses</EM>
by Pavel Curtis.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>,
+ <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>printf(3)</STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>,
+ <STRONG><A HREF="term.5.html">term(5)</A></STRONG>, <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
+
+
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+ncurses 6.4 2023-12-30 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
</PRE>
<div class="nav">
<ul>
<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-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-Cursor-Motions">Cursor Motions</a></li>
<li><a href="#h3-Margins">Margins</a></li>
<li><a href="#h3-Area-Clears">Area Clears</a></li>
-<li><a href="#h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></li>
+<li><a href="#h3-Insert_Delete-Line-and-Vertical-Motions">Insert/Delete Line and Vertical Motions</a></li>
<li><a href="#h3-Insert_Delete-Character">Insert/Delete Character</a></li>
-<li><a href="#h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></li>
+<li><a href="#h3-Highlighting_Underlining_and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></li>
<li><a href="#h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></li>
<li><a href="#h3-Tabs-and-Initialization">Tabs and Initialization</a></li>
<li><a href="#h3-Delays-and-Padding">Delays and Padding</a></li>
<li><a href="#h3-Line-Graphics">Line Graphics</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-Glitches-and-Brain-Damage">Glitches and Brain Damage</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>
</li>
-<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
<li><a href="#h2-FILES">FILES</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
</ul>
</div>
</BODY>