]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - man/terminfo.head
ncurses 6.4 - patch 20240420
[ncurses.git] / man / terminfo.head
index fcd27e3ab4f5dd30cfee2345d411be28c6f643f4..717f849e25fb6837b6001d31c4f7cb904702e162 100644 (file)
@@ -1,5 +1,6 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998-2016,2017 Free Software Foundation, Inc.              *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
+.\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: terminfo.head,v 1.23 2017/02/18 17:04:53 tom Exp $
-.TH terminfo 5 "" "" "File Formats"
-.ds n 5
-.ds d @TERMINFO@
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: terminfo.head,v 1.65 2024/04/20 21:14:00 tom Exp $
+.TH terminfo 5 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.ds '  \(aq
+.ds ^  \(ha
+.ds ~  \(ti
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.ds       '  '
+.ds       ^  ^
+.ds       ~  ~
+.\}
+.
 .de bP
-.IP \(bu 4
+.ie n  .IP \(bu 4
+.el    .IP \(bu 2
 ..
+.
+.ds d @TERMINFO@
 .SH NAME
-terminfo \- terminal capability data base
+\fB\%terminfo\fP \-
+terminal capability database
 .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).
+is a database describing terminals,
+used by screen-oriented programs such as
+\fBnvi\fP(1),
+\fBlynx\fP(1),
+\fBmutt\fP(1),
+and other curses applications,
+using high-level calls to libraries such as \fBcurses\fP(3X).
+It is also used via low-level calls by non-curses applications
+which may be screen-oriented (such as \fB@CLEAR@\fP(1))
+or non-screen (such as \fB@TABS@\fP(1)).
+.PP
 .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
+This document describes
+.I \%ncurses
+version @NCURSES_MAJOR@.@NCURSES_MINOR@
+(patch @NCURSES_PATCH@).
+.SS "\fIterminfo\fP Entry Syntax"
 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
+consist of a sequence of fields:
+.bP
+Each field ends with a comma \*(``,\*(''
+(embedded commas may be
+escaped with a backslash or written as \*(``\e054\*('').
+.bP
+White space between fields is ignored.
+.bP
+The first field in a \fIterminfo\fP entry begins in the first column.
+.bP
+Newlines and leading whitespace (spaces or tabs)
+may be used for formatting entries for readability.
+These are removed from parsed entries.
+.IP
+The \fB@INFOCMP@\fP \fB\-f\fP and \fB\-W\fP options rely on this to
+format if-then-else expressions,
+or to enforce maximum line-width.
+The resulting formatted terminal description can be read by \fB@TIC@\fP.
+.bP
+The first field for each terminal gives the names which are known for the
 terminal, separated by \*(``|\*('' characters.
-The first name given is the most common abbreviation for the terminal,
-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;
+.IP
+The first name given is the most common abbreviation for the terminal
+(its primary name),
+the last name given should be a long name fully identifying the terminal
+(see \fBlongname\fP(3X)),
+and all others are treated as synonyms (aliases) for the primary terminal name.
+.IP
+X/Open Curses advises that all names but the last should be in lower case
+and contain no blanks;
 the last name may well contain upper case and blanks for readability.
-.PP
+.IP
+This implementation is not so strict;
+it allows mixed case in the primary name and aliases.
+If the last name has no embedded blanks,
+it allows that to be both an alias and a verbose name
+(but will warn about this ambiguity).
+.bP
 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
+.IP
+While comment lines are valid 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
@@ -85,30 +133,95 @@ 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.
+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
+center;
+Lb Lb Lb
+L  L  Lx.
+Suffix Example Meaning
+_
+\-\fInn\fP     aaa\-60 Number of lines on the screen
+\-\fIn\fPp     c100\-4p        Number of pages of memory
+\-am   vt100\-am       With automargins (usually the default)
+\-m    ansi\-m Mono mode; suppress color
+\-mc   wy30\-mc        Magic cookie; spaces when highlighting
+\-na   c100\-na        No arrow keys (leave them in local)
+\-nam  vt100\-nam      Without automatic margins
+\-nl   hp2621\-nl      No status line
+\-ns   hp2626\-ns      No status line
+\-rv   c100\-rv        Reverse video
+\-s    vt100\-s        Enable status line
+\-vb   wy370\-vb       Use visible bell instead of beep
+\-w    vt100\-w        Wide mode (> 80 columns, usually 132)
 .TE
 .PP
-For more on terminal naming conventions, see the \fBterm(7)\fR manual page.
-.SS Predefined Capabilities
+For more on terminal naming conventions, see the \fBterm\fP(7) manual page.
+.SS "\fIterminfo\fP Capabilities Syntax"
+The terminfo entry consists of several \fIcapabilities\fP,
+i.e., features that the terminal has,
+or methods for exercising the terminal's features.
+.PP
+After the first field (giving the name(s) of the terminal entry),
+there should be one or more \fIcapability\fP fields.
+These are Boolean, numeric or string names with corresponding values:
+.bP
+Boolean capabilities are true when present, false when absent.
+There is no explicit value for Boolean capabilities.
+.bP
+Numeric capabilities have a \*(``#\*('' following the name,
+then an unsigned decimal integer value.
+.bP
+String capabilities have a \*(``=\*('' following the name,
+then an string of characters making up the capability value.
+.IP
+String capabilities can be split into multiple lines,
+just as the fields comprising a terminal entry can be
+split into multiple lines.
+While blanks between fields are ignored,
+blanks embedded within a string value are retained,
+except for leading blanks on a line.
+.PP
+Any capability can be \fIcanceled\fP,
+i.e., suppressed from the terminal entry,
+by following its name with \*(``@\*(''
+rather than a capability value.
+.SS "Similar Terminals"
+If there are two very similar terminals, one (the variant) can be defined as
+being just like the other (the base) with certain exceptions.
+In the
+definition of the variant, the string capability \fBuse\fP can be given with
+the name of the base terminal:
+.bP
+The capabilities given before
+.B use
+override those in the base type named by
+.BR use .
+.bP
+If there are multiple \fBuse\fP capabilities, they are merged in reverse order.
+That is, the rightmost \fBuse\fP reference is processed first, then the one to
+its left, and so forth.
+.bP
+Capabilities given explicitly in the entry override
+those brought in by \fBuse\fP references.
+.PP
+A capability can be canceled by placing \fBxx@\fP to the left of the
+use reference that imports it, where \fIxx\fP is the capability.
+For example, the entry
+.RS
+.PP
+2621\-nl, smkx@, rmkx@, use=2621,
+.RE
+.PP
+defines a 2621\-nl that does not have the \fBsmkx\fP or \fBrmkx\fP capabilities,
+and hence does not turn on the function key labels when in visual mode.
+This is useful for different modes for a terminal, or for different
+user preferences.
+.PP
+An entry included via \fBuse\fP can contain canceled capabilities,
+which have the same effect as if those cancels were inline in the
+using terminal entry.
+.SS "Predefined Capabilities"
 .\" Head of terminfo man page ends here
 .ps -1