* 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.42 2021/12/25 17:39:16 tom Exp @
+ * @Id: terminfo.head,v 1.45 2023/09/02 22:30:22 tom Exp @
* Head of terminfo man page ends here
****************************************************************************
- * Copyright 2018-2021,2022 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.113 2022/12/10 19:51:10 tom Exp @
+ * @Id: terminfo.tail,v 1.125 2023/09/02 22:39:26 tom Exp @
*.in -2
*.in +2
*.in -2
<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-09-02 ncurses 6.4 File formats</TITLE>
<link rel="author" href="mailto:bug-ncurses@gnu.org">
</HEAD>
<BODY>
-<H1 class="no-header">terminfo 5 File Formats</H1>
+<H1 class="no-header">terminfo 5 2023-09-02 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>
have, by specifying how to perform screen operations, and by specifying
padding requirements and initialization sequences.
- This manual describes <STRONG>ncurses</STRONG> version 6.3 (patch 20221210).
+ This manual describes <STRONG>ncurses</STRONG> version 6.4 (patch 20230902).
</PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
numbered keys and the handful of special named keys) is best done using
the longer names available using terminfo.
+ The ncurses 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
+ The following entry, describing an ANSI-standard terminal, is
representative of what a <STRONG>terminfo</STRONG> entry for a modern terminal typically
looks like.
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
+ 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 has some
+ <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 or the size of
particular delays, and
- <STRONG>o</STRONG> string capabilities, which give a sequence which can be used to
+ <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 description of ansi includes <STRONG>am</STRONG>. Numeric capabilities
- are followed by the character "#" and then a positive value. Thus
+ 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 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
+ value "80" for ansi. Values for numeric capabilities may be specified
+ in decimal, octal, or hexadecimal, using the C programming language
conventions (e.g., 255, 0377 and 0xff or 0xFF).
- 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
+ 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 ",".
- A number of escape sequences are provided in the string valued
+ 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,
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, mapping to ASCII control codes in the range 0 through
+ that is a printable ASCII graphic character. The special case "^?" is
+ interpreted as DEL (127). In all other cases, the character value is
+ AND'd with 0x1f, mapping to ASCII control codes in the range 0 through
31.
Other escapes include
<STRONG>o</STRONG> and <STRONG>\0</STRONG> for null.
<STRONG>\0</STRONG> will produce \200, which does not terminate a string but behaves
- as a null character on most terminals, providing CS7 is specified.
+ as a null character on most terminals, providing CS7 is specified.
See <STRONG>stty(1)</STRONG>.
- The reason for this quirk is to maintain binary compatibility of
- the compiled terminfo files with other implementations, e.g., the
- SVr4 systems, which document this. Compiled terminfo files use
- null-terminated strings, with no lengths. Modifying this would
- require a new binary format, which would not work with other
+ The reason for this quirk is to maintain binary compatibility of
+ the compiled terminfo files with other implementations, e.g., the
+ SVr4 systems, which document this. Compiled terminfo files use
+ null-terminated strings, with no lengths. Modifying this would
+ require a new binary format, which would not work with other
implementations.
Finally, characters may be given as three octal digits after a <STRONG>\</STRONG>.
- A delay in milliseconds may appear anywhere in a string capability,
- enclosed in $<..> brackets, as in <STRONG>el</STRONG>=\EK$<5>, and padding characters
+ A delay in milliseconds may appear anywhere in a string capability,
+ enclosed in $<..> brackets, as in <STRONG>el</STRONG>=\EK$<5>, and padding characters
are supplied by <STRONG><A HREF="curs_terminfo.3x.html">tputs(3x)</A></STRONG> to provide this delay.
- <STRONG>o</STRONG> The delay must be a number with at most one decimal place of
+ <STRONG>o</STRONG> The delay must be a number with at most one decimal place of
precision; it may be followed by suffixes "*" or "/" or both.
- <STRONG>o</STRONG> A "*" indicates that the padding required is proportional to the
- number of lines affected by the operation, and the amount given is
- the per-affected-unit padding required. (In the case of insert
+ <STRONG>o</STRONG> A "*" indicates that the padding required is proportional to the
+ number of lines affected by the operation, and the amount given is
+ the per-affected-unit padding required. (In the case of insert
character, the factor is still the number of <EM>lines</EM> affected.)
Normally, padding is advisory if the device has the <STRONG>xon</STRONG> capability;
it is used for cost computation but does not trigger delays.
- <STRONG>o</STRONG> A "/" suffix indicates that the padding is mandatory and forces a
+ <STRONG>o</STRONG> A "/" suffix indicates that the padding is mandatory and forces a
delay of the given number of milliseconds even on devices for which
<STRONG>xon</STRONG> is present to indicate flow control.
- Sometimes individual capabilities must be commented out. To do this,
- put a period before the capability name. For example, see the second
+ Sometimes individual capabilities must be commented out. To do this,
+ put a period before the capability name. For example, see the second
<STRONG>ind</STRONG> in the example above.
</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 <STRONG>ncurses</STRONG> 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,
+ <STRONG>ncurses</STRONG> checks the search list, eliminating duplicates and pathnames
+ where no terminal database is found. The <STRONG>ncurses</STRONG> library reads the
+ first description which passes its consistency checks.
- <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> The environment variable <STRONG>TERMINFO</STRONG> is checked first, for a terminal
+ database containing the terminal 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.
+ <STRONG>o</STRONG> Next, <STRONG>ncurses</STRONG> looks in <STRONG>$HOME/.terminfo</STRONG> for a compiled description.
- <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.
+ This is an optional feature which may be omitted entirely from the
+ library, or limited to prevent accidental use by privileged
+ applications.
- An empty directory name (i.e., if the variable begins or ends with
- a colon, or contains adjacent colons) is interpreted as the system
+ <STRONG>o</STRONG> Next, if the environment variable <STRONG>TERMINFO_DIRS</STRONG> is set, <STRONG>ncurses</STRONG>
+ interprets the contents of that variable as a list of colon-
+ separated pathnames of terminal databases to be searched.
+
+ 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> 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>
- <STRONG>o</STRONG> the system terminfo directory, <EM>/usr/share/terminfo</EM> (the
- compiled-in default).
+ 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 <STRONG>ncurses</STRONG> 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 <STRONG>ncurses</STRONG>, which uses
+ terminal descriptions prepared in <EM>terminfo</EM> format. While <EM>termcap</EM> is
+ less expressive, <STRONG>ncurses</STRONG> can also be configured to read <EM>termcap</EM>
+ descriptions. In that configuration, it checks the <STRONG>TERMCAP</STRONG> and
+ <STRONG>TERMPATH</STRONG> variables (for content and search path, respectively) after
+ the system terminal database.
</PRE><H3><a name="h3-Preparing-Descriptions">Preparing Descriptions</a></H3><PRE>
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>
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:
--------------------------------------------------------------------
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
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:
+
+ <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 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.
+ 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
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
+ 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
</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="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>.
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+ncurses 6.4 2023-09-02 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
</PRE>
<div class="nav">
<ul>