.\"***************************************************************************
.\" Copyright (c) 1998-2004,2006 Free Software Foundation, Inc.              *
.\"                                                                          *
.\" Permission is hereby granted, free of charge, to any person obtaining a  *
.\" copy of this software and associated documentation files (the            *
.\" "Software"), to deal in the Software without restriction, including      *
.\" without limitation the rights to use, copy, modify, merge, publish,      *
.\" distribute, distribute with modifications, sublicense, and/or sell       *
.\" copies of the Software, and to permit persons to whom the Software is    *
.\" furnished to do so, subject to the following conditions:                 *
.\"                                                                          *
.\" The above copyright notice and this permission notice shall be included  *
.\" in all copies or substantial portions of the Software.                   *
.\"                                                                          *
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
.\"                                                                          *
.\" Except as contained in this notice, the name(s) of the above copyright   *
.\" holders shall not be used in advertising or otherwise to promote the     *
.\" sale, use or other dealings in this Software without prior written       *
.\" authorization.                                                           *
.\"***************************************************************************
.\"
.\" $Id: terminfo.head,v 1.16 2007/03/04 00:09:46 tom Exp $
.TH terminfo 5 "" "" "File Formats"
.ds n 5
.ds d @TERMINFO@
.SH NAME
terminfo \- terminal capability data base
.SH SYNOPSIS
\*d/*/*
.SH DESCRIPTION
.I Terminfo
is a data base describing terminals, used by screen-oriented programs such as
\fBnvi\fR(1),
\fBrogue\fR(1)
and libraries such as
\fBcurses\fR(3X).
.I Terminfo
describes terminals by giving a set of capabilities which they
have, by specifying how to perform screen operations, and by
specifying padding requirements and initialization sequences.
This describes \fBncurses\fR
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.PP
Entries in
.I terminfo
consist of a sequence of `,' separated fields (embedded commas may be
escaped with a backslash or notated as \\054).
White space after the `,' separator is ignored.
The first entry for each terminal gives the names which are known for the
terminal, separated by `|' characters.
The first name given is the most common abbreviation for the terminal,
the last name given should be a long name fully identifying the terminal,
and all others are understood as synonyms for the terminal name.
All names but the last should be in lower case and contain no blanks;
the last name may well contain upper case and blanks for readability.
.PP
Lines beginning with a `#' in the first column are treated as comments.
While comment lines are legal at any point, the output of \fB@CAPTOINFO@\fP
and \fB@INFOTOCAP@\fP (aliases for \fB@TIC@\fP)
will move comments so they occur only between entries.
.PP
Newlines and leading tabs may be used for formatting entries for readability.
These are removed from parsed entries.
The \fB@INFOCMP@\ -f\fP option relies on this to format if-then-else expressions:
the result can be read by \fB@TIC@\fP.
.PP
Terminal names (except for the last, verbose entry) should
be chosen using the following conventions.
The particular piece of hardware making up the terminal should
have a root name, thus ``hp2621''.
This name should not contain hyphens.
Modes that the hardware can be in, or user preferences, should
be indicated by appending a hyphen and a mode suffix.
Thus, a vt100 in 132 column mode would be vt100-w.
The following suffixes should be used where possible:
.PP
.TS
center ;
l c l
l l l.
\fBSuffix	Meaning	Example\fP
-\fInn\fP	Number of lines on the screen	aaa-60
-\fIn\fPp	Number of pages of memory	c100-4p
-am	With automargins (usually the default)	vt100-am
-m	Mono mode; suppress color       	ansi-m
-mc	Magic cookie; spaces when highlighting	wy30-mc
-na	No arrow keys (leave them in local)	c100-na
-nam	Without automatic margins       	vt100-nam
-nl	No status line                  	att4415-nl
-ns	No status line                  	hp2626-ns
-rv	Reverse video                   	c100-rv
-s	Enable status line              	vt100-s
-vb	Use visible bell instead of beep	wy370-vb
-w	Wide mode (> 80 columns, usually 132)	vt100-w
.TE
.PP
For more on terminal naming conventions, see the \fBterm(7)\fR manual page.
.SS Capabilities
.\" Head of terminfo man page ends here
.ps -1
