.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_terminfo.3x,v 1.124 2023/12/23 17:34:39 tom Exp $
-.TH curs_terminfo 3X 2023-12-23 "ncurses 6.4" "Library calls"
+.\" $Id: curs_terminfo.3x,v 1.125 2023/12/30 23:46:56 tom Exp $
+.TH curs_terminfo 3X 2023-12-30 "ncurses 6.4" "Library calls"
.ie \n(.g \{\
.ds `` \(lq
.ds '' \(rq
\fB\%vid_puts\fP,
\fB\%vidattr\fP,
\fB\%vidputs\fP \-
-\fIcurses\fR interfaces to \fIterminfo\fR database
+\fIcurses\fR interfaces to \fI\%term\%info\fR database
.SH SYNOPSIS
.nf
\fB#include <curses.h>
.fi
.SH DESCRIPTION
These low-level routines must be called by programs that have to deal
-directly with the \fIterminfo\fP database to handle certain terminal
-capabilities, such as programming function keys.
-For all other
-functionality, \fIcurses\fP routines are more suitable and their use is
-recommended.
+directly with the
+.I \%term\%info
+database to handle certain terminal capabilities,
+such as programming function keys.
+For all other functionality,
+.I curses
+routines are more suitable and their use is recommended.
.PP
-None of these functions use (or are aware of) multibyte character strings
-such as UTF-8:
+None of these functions use
+(or are aware of)
+multibyte character strings such as UTF-8.
.bP
-capability names use the POSIX portable character set
+Capability names and codes use the POSIX portable character set.
.bP
-capability string values have no associated encoding;
+Capability string values have no associated encoding;
they are strings of 8-bit characters.
.SS Initialization
-Initially, \fBsetupterm\fP should be called.
-The high-level curses functions \fBinitscr\fP and
-\fBnewterm\fP call \fBsetupterm\fP to initialize the
-low-level set of terminal-dependent variables
-[listed in \fBterminfo\fP(5)].
+Initially,
+\fB\%setupterm\fP should be called.
+The high-level
+.I curses
+functions \fB\%initscr\fP and \fB\%newterm\fP call \fB\%setupterm\fP to
+initialize the low-level set of terminal-dependent variables
+listed in \fB\%term_variables\fP(3X).
.PP
Applications can use the
-terminal capabilities either directly (via header definitions),
+terminal capabilities either directly
+(via header definitions),
or by special functions.
-The header files \fBcurses.h\fP and \fBterm.h\fP should be included (in this
-order) to get the definitions for these strings, numbers, and flags.
-.PP
-The \fBterminfo\fP variables
-\fBlines\fP and \fBcolumns\fP are initialized by \fBsetupterm\fP as
+The header files
+.I \%curses.h
+and
+.I \%term.h
+should be included
+(in that order)
+to get the definitions for these strings, numbers, and flags.
+.PP
+The
+.I \%term\%info
+variables
+\fBlines\fP and \fBcolumns\fP are initialized by \fB\%setupterm\fP as
follows:
.bP
-If \fBuse_env(FALSE)\fP has been called, values for
-\fBlines\fP and \fBcolumns\fP specified in \fBterminfo\fP are used.
+If \fB\%use_env(FALSE)\fP has been called,
+values for \fBlines\fP and \fBcolumns\fP specified in
+.I \%term\%info
+are used.
.bP
Otherwise,
if the environment variables \fILINES\fP and \fI\%COLUMNS\fP exist,
is used.
Otherwise, if the environment variables do not exist, the
values for \fBlines\fP and \fBcolumns\fP specified in the
-\fBterminfo\fP database are used.
+.I \%term\%info
+database are used.
.PP
Parameterized strings should be passed through \fBtparm\fP to instantiate them.
-All \fBterminfo\fP strings
+All
+.I \%term\%info
+strings
(including the output of \fBtparm\fP)
should be printed
with \fBtputs\fP or \fBputp\fP.
output \fBenter_ca_mode\fP and
call \fBreset_prog_mode\fP after returning from the shell.
.PP
-The \fBsetupterm\fP routine reads in the \fBterminfo\fP database,
-initializing the \fBterminfo\fP structures, but does not set up the
-output virtualization structures used by \fBcurses\fP.
+The \fB\%setupterm\fP routine reads in the
+.I \%term\%info
+database,
+initializing the
+.I \%term\%info
+structures,
+but does not set up the output virtualization structures used by
+.I curses.
These are its parameters:
.RS 3
.TP 5
checking the \fBgn\fP \%(\fBgeneric_type\fP) capability.
.TP 5
.B \-1
-means that the \fIterminfo\fP database could not be found.
+means that the
+.I \%term\%info
+database could not be found.
.RE
.IP
If \fIerrret\fP is
null, \fB\%setupterm\fP prints an error message upon finding an error
and exits.
Thus, the simplest call is:
+.RS
+.IP
+\fBsetupterm((char *)0, 1, (int *)0);\fP
+.RE
.IP
-\fBsetupterm((char *)0, 1, (int *)0);\fP,
-.PP
which uses all the defaults and sends the output to \fBstdout\fP.
.RE
.\" ***************************************************************************
If it is called for different terminal types,
\fBsetupterm\fP allocates new storage for each set of terminal capabilities.
.PP
-The \fBset_curterm\fP routine sets \fBcur_term\fP to
-\fInterm\fP, and makes all of the \fBterminfo\fP boolean, numeric, and
-string variables use the values from \fInterm\fP.
-It returns the old value of \fBcur_term\fP.
-.PP
-The \fBdel_curterm\fP routine frees the space pointed to by
-\fIoterm\fP and makes it available for further use.
-If \fIoterm\fP is
-the same as \fBcur_term\fP, references to any of the \fBterminfo\fP
-boolean, numeric, and string variables thereafter may refer to invalid
-memory locations until another \fBsetupterm\fP has been called.
+\fB\%set_curterm\fP sets \fB\%cur_term\fP to
+.I \%nterm,
+and makes all of the
+.I \%term\%info
+Boolean,
+numeric,
+and string variables use the values from
+.I \%nterm.
+It returns the old value of \fB\%cur_term\fP.
+.PP
+\fB\%del_curterm\fP routine frees the space pointed to by
+.I \%oterm
+and makes it available for further use.
+If
+.I \%oterm
+is
+the same as \fB\%cur_term\fP,
+references to any of the
+.I \%term\%info
+Boolean,
+numeric,
+and string variables thereafter may refer to invalid memory locations
+until another \fB\%setupterm\fP has been called.
.PP
The \fBrestartterm\fP routine is similar to \fBsetupterm\fP and \fBinitscr\fP,
except that it is called after restoring memory to a previous state (for
The capability string is null-terminated.
Use \*(``\e200\*('' where an ASCII NUL is needed in the output.
.PP
-\fBtiparm\fP is a newer form of \fBtparm\fP which uses \fI<stdarg.h>\fP
+\fB\%tiparm\fP is a newer form of \fB\%tparm\fP which uses
+.I \%stdarg.h
rather than a fixed-parameter list.
-Its numeric parameters are integers (int) rather than longs.
+Its numeric parameters are
+.IR int s
+rather than
+.IR long s.
.PP
Both \fBtparm\fP and \fBtiparm\fP assume that the application passes
parameters consistent with the terminal description.
.IP
The \fBtgetstr\fP and \fBtgoto\fP functions are part of the \fItermcap\fP
interface,
-which happens to share this function name with the \fIterminfo\fP interface.
+which happens to share this function name with the
+.I \%term\%info
+interface.
.bP
\fIaffcnt\fP is the number of lines affected, or 1 if
not applicable.
The \fBvidattr\fP routine is like the \fBvidputs\fP routine, except
that it outputs through \fI\%putchar\fP.
.PP
-The \fBvid_attr\fP and \fBvid_puts\fP routines correspond
-to vidattr and vidputs, respectively.
-They use a set of arguments for representing the video attributes plus color,
-i.e.,
-.bP
-\fIattrs\fP of type \fBattr_t\fP for the attributes and
-.bP
-\fIpair\fP of type \fBshort\fP for the color pair number.
-.PP
-The \fBvid_attr\fP and \fBvid_puts\fP routines
-are designed to use the attribute constants with the \fBWA_\fP prefix.
-.PP
-X/Open Curses reserves the \fIopts\fP argument for future use,
-saying that applications must provide a null pointer for that argument.
-As an extension,
-this implementation allows \fIopts\fP to be used as a pointer to \fBint\fP,
-which overrides the \fIpair\fP (\fBshort\fP) argument.
+.B \%vid_attr
+and
+.B \%vid_puts
+correspond to
+.B \%vidattr
+and
+.BR \%vidputs ,
+respectively.
+They use multiple parameters to represent the character attributes and
+color;
+namely,
+.bP
+.I \%attrs,
+of type
+.I \%attr_t,
+for the attributes and
+.bP
+.I pair,
+of type
+.I short,
+for the color pair number.
+.PP
+Use the attribute constants prefixed with
+.RB \*(`` WA_ \*(''
+with
+.B \%vid_attr
+and
+.BR \%vid_puts .
+.PP
+X/Open Curses reserves the
+.I opts
+argument for future use,
+saying that applications must provide a null pointer for that argument;
+but see section \*(``EXTENSIONS\*('' below.
.PP
The \fBmvcur\fP routine provides low-level cursor motion.
It takes effect immediately (rather than at the next refresh).
.PP
While \fBputp\fP and \fBmvcur\fP are low-level functions which
do not use the high-level curses state,
-they are declared in \fB\%<curses.h>\fP because System\ V did this
+they are declared in
+.I \%curses.h
+because System\ V did this
(see \fIHISTORY\fP).
.\" ***************************************************************************
.SS "Terminal Capability Functions"
The \fBtigetflag\fP, \fBtigetnum\fP and \fBtigetstr\fP routines return
-the value of the capability corresponding to the \fBterminfo\fP
+the value of the capability corresponding to the
+.I \%term\%info
\fIcapname\fP passed to them, such as \fBxenl\fP.
The \fIcapname\fP for each capability is given in the table column entitled
-\fIcapname\fP code in the capabilities section of \fBterminfo\fP(5).
+\fIcapname\fP code in the capabilities section of \fB\%terminfo\fP(5).
.PP
These routines return special values to denote errors.
.PP
The \fBtigetflag\fP routine returns
.TP
\fB\-1\fP
-if \fIcapname\fP is not a boolean capability,
+if \fIcapname\fP is not a Boolean capability,
or
.TP
\fB0\fP
.SS "Terminal Capability Names"
These null-terminated arrays contain
.bP
-the short \fIterminfo\fP names (\*(``codes\*(''),
+the short \fI\%term\%info\fP names (\*(``codes\*(''),
.bP
the \fItermcap\fP names (\*(``names\*(''), and
.bP
-the long \fIterminfo\fP names (\*(``fnames\*('')
+the long \fI\%term\%info\fP names (\*(``fnames\*('')
.PP
-for each of the predefined \fIterminfo\fP variables:
+for each of the predefined
+.I \%term\%info
+variables:
.PP
.RS
.nf
the \*(``static\*('' terminfo variables [a-z].
Before \fI\%ncurses\fP 6.3, those were shared by all screens.
With \fI\%ncurses\fP 6.3, those are allocated per screen.
-See \fBterminfo\fP(5) for details.
+See \fB\%terminfo\fP(5) for details.
.bP
to improve performance,
\fI\%ncurses\fP 6.3 caches the result of analyzing terminfo
the \fBdelscreen\fP(3X) function.
.\" ***************************************************************************
.SH RETURN VALUE
-Routines that return an integer return \fBERR\fP upon failure and \fBOK\fP
-(SVr4 only specifies \*(``an integer value other than \fBERR\fP\*('')
-upon successful completion,
-unless otherwise noted in the preceding routine descriptions.
-.PP
-Routines that return pointers always return \fBNULL\fP on error.
-.PP
-X/Open defines no error conditions.
-In this implementation
-.RS 3
+X/Open defines no failure conditions.
+In
+.I \%ncurses,
.TP 5
\fBdel_curterm\fP
returns an error
\fBsetupterm\fP
returns an error
if it cannot allocate enough memory, or
-create the initial windows (stdscr, curscr, newscr).
+create the initial windows
+.RB ( \%stdscr ,
+.BR \%curscr ,
+and
+.BR \%newscr )
Other error conditions are documented above.
.TP 5
\fBtparm\fP
\fBtputs\fP
returns an error if the string parameter is null.
It does not detect I/O errors:
-X/Open states that \fBtputs\fP ignores the return value
+X/Open Curses states that \fBtputs\fP ignores the return value
of the output function \fIputc\fP.
-.RE
.\" ***************************************************************************
.SH NOTES
-.\" See X/Open Curses Issue 4, Version 2, pp. 227-234.
-.\" See X/Open Curses Issue 7, pp. 311-318.
-According to X/Open Curses,
-any of the \fIenhanced curses\fP functions may be implemented as macros.
-The term \*(``enhanced\*('' refers to features not found in SVr4 curses.
-.PP
-\fB\%ncurses\fP uses macros
-.bP
-for functions which return values via their parameters,
-.bP
-to support obsolete features,
-.bP
-to reuse functions,
-e.g., those that move the cursor before another operation, and
-.bP
-a few special cases.
-.PP
-The \fB\%vid_puts\fP function in \fB\%ncurses\fP is a special case.
+The
+.B \%vid_attr
+function in
+.I \%ncurses
+is a special case.
It was originally implemented based on a draft of X/Open Curses,
as a macro,
-before other parts of the \fB\%ncurses\fP wide-character API were developed.
+before other parts of the
+.I \%ncurses
+wide-character API were developed,
+and unlike the other wide-character functions,
+is also provided in the non-wide-character configuration.
.\" ***************************************************************************
.SH EXTENSIONS
The functions marked as extensions were designed for
-\fB\%ncurses\fP(3X),
+.I \%ncurses,
and are not found in SVr4
.IR curses ,
4.4BSD
.IR curses ,
or any other previous curses implementation.
+.PP
+.I \%ncurses
+allows
+.I opts
+to be a pointer to
+.I int,
+which overrides the
+.I pair
+.RI ( short )
+argument.
.\" ***************************************************************************
.SH PORTABILITY
-\fBsetterm\fP is not described by X/Open and must be considered
+\fB\%setterm\fP is not described by X/Open and must be considered
non-portable.
All other functions are as described by X/Open.
.SS "Compatibility Macros"
stating that the call
.RS
.EX
-setupterm(\fIterm\fB, 1, (int *)0)\fP
+setupterm(\fIterm\fP, 1, (int *)0)
.EE
.RE
-provides the same functionality as \fBsetterm(\fIterm\fB)\fR,
+provides the same functionality as \fB\%setterm(\fIterm\fB)\fR,
discouraging the latter for new programs.
.I \%ncurses
implements each of these symbols as macros for BSD
.I curses
compatibility.
.SS "Legacy Data"
-\fBsetupterm\fP copies the terminal name to the array \fBttytype\fP.
+\fB\%setupterm\fP copies the terminal name to the array \fB\%ttytype\fP.
This is not part of X/Open Curses, but is assumed by some applications.
.PP
Other implementions may not declare the capability name arrays.
Some provide them without declaring them.
X/Open does not specify them.
.PP
-Extended terminal capability names, e.g., as defined by \fB@TIC@\ \-x\fP,
+Extended terminal capability names,
+as defined by
+.RB \%\*(`` "@TIC@\ \-x" \*('',
are not stored in the arrays described here.
.SS "Output Buffering"
Older versions of \fI\%ncurses\fP assumed that the file descriptor
-passed to \fBsetupterm\fP from \fBinitscr\fP or \fBnewterm\fP uses
+passed to \fB\%setupterm\fP from \fB\%initscr\fP or \fB\%newterm\fP uses
buffered I/O,
and would write to the corresponding stream.
-In addition to the limitation that the terminal was left in block-buffered
-mode on exit (like System V curses),
-it was problematic because \fI\%ncurses\fP
-did not allow a reliable way to cleanup on receiving SIGTSTP.
+In addition to the limitation that the terminal was left in
+block-buffered mode on exit
+(like System\ V
+.IR curses ),
+it was problematic because
+.I \%ncurses
+did not allow a reliable way to cleanup on receiving
+.BR SIGTSTP .
.PP
The current version (ncurses6)
-uses output buffers managed directly by \fI\%ncurses\fP.
+uses output buffers managed directly by
+.I \%ncurses.
Some of the low-level functions described in this manual page write
to the standard output.
They are not signal-safe.
-The high-level functions in \fI\%ncurses\fP use
-alternate versions of these functions
-using the more reliable buffering scheme.
+The high-level functions in
+.I \%ncurses
+employ alternate versions of these functions using the more reliable
+buffering scheme.
.SS "Function Prototypes"
-The X/Open Curses prototypes are based on the SVr4 curses header declarations,
-which were defined at the same time the C language was first standardized in
-the late 1980s.
+The X/Open Curses prototypes are based on the SVr4
+.I curses
+header declarations,
+which were defined at the same time the C language was first
+standardized in the late 1980s.
.bP
-X/Open Curses uses \fBconst\fP less effectively than a later design might,
+X/Open Curses uses
+.I \%const
+less effectively than a later design might,
in some cases applying it needlessly to values are already constant,
-and in most cases overlooking parameters which normally would use \fBconst\fP.
-Using constant parameters for functions which do not use \fBconst\fP
+and in most cases overlooking parameters which normally would use
+.I \%const.
+Using constant parameters for functions which do not use
+.I \%const
may prevent the program from compiling.
-On the other hand, \fIwritable strings\fP are an obsolescent feature.
+On the other hand,
+\*(``writable strings\*('' are an obsolescent feature.
.IP
-As an extension, this implementation can be configured to change the
-function prototypes to use the \fBconst\fP keyword.
-The \fI\%ncurses\fP ABI 6 enables this feature by default.
+As an extension,
+this implementation can be configured to change the function prototypes
+to use the
+.I \%const
+keyword.
+The
+.I \%ncurses
+ABI 6 enables this feature by default.
.bP
-X/Open Curses prototypes \fBtparm\fP with a fixed number of parameters,
+X/Open Curses prototypes \fB\%tparm\fP with a fixed number of
+parameters,
rather than a variable argument list.
.IP
This implementation uses a variable argument list, but can be
zeroes are fine for this purpose.
.IP
In response to review comments by Thomas E. Dickey,
-X/Open Curses Issue 7 proposed the \fBtiparm\fP function in mid-2009.
+X/Open Curses Issue 7 proposed the \fB\%tiparm\fP function in mid-2009.
.IP
-While \fBtiparm\fP is always provided in \fI\%ncurses\fP,
+While \fB\%tiparm\fP is always provided in \fI\%ncurses\fP,
the older form is only available as a build-time configuration option.
-If not specially configured, \fBtparm\fP is the same as \fBtiparm\fP.
+If not specially configured,
+\fB\%tparm\fP is the same as \fB\%tiparm\fP.
.PP
-Both forms of \fBtparm\fP have drawbacks:
+Both forms of \fB\%tparm\fP have drawbacks:
.bP
-Most of the calls to \fBtparm\fP use only one or two parameters.
+Most of the calls to \fB\%tparm\fP use only one or two parameters.
Passing nine on each call is awkward.
.IP
-Using \fBlong\fP for the numeric parameter type is a workaround
-to make the parameter use the same amount of stack as a pointer.
+Using
+.I long
+for the numeric parameter type is a workaround to make the parameter use
+the same amount of stack as a pointer.
That approach dates back to the mid-1980s, before C was standardized.
Since then, there is a standard
(and pointers are not required to fit in a long).
.bP
Providing the right number of parameters for a variadic function
-such as \fBtiparm\fP can be a problem, in particular for string parameters.
+such as \fB\%tiparm\fP can be a problem,
+in particular for string parameters.
However, only a few terminfo capabilities use string parameters
(e.g., the ones used for programmable function keys).
.IP
The \fI\%ncurses\fP library checks usage of these capabilities,
and returns an error if the capability mishandles string parameters.
But it cannot check if a calling program provides strings in the right
-places for the \fBtparm\fP calls.
+places for the \fB\%tparm\fP calls.
.IP
-The \fB@TPUT@\fR(1) program checks its use of these capabilities with a table,
-so that it calls \fBtparm\fP correctly.
+The \fB\%@TPUT@\fR(1) program checks its use of these capabilities with
+a table,
+so that it calls \fB\%tparm\fP correctly.
.SS "Special \fITERM\fP treatment"
If configured to use the terminal-driver,
e.g., for the MinGW port,
.bP
-\fBsetupterm\fP interprets a missing/empty \fITERM\fP variable as the
+\fB\%setupterm\fP interprets a missing/empty \fITERM\fP variable as the
special value \*(``unknown\*(''.
.IP
SVr4 curses uses the
special value \*(``dumb\*(''.
.IP
The difference between the two is that
-the former uses the \fBgn\fP (\fBgeneric_type\fR) terminfo capability,
+the former uses the \fBgn\fP (\fB\%generic_type\fR) terminfo capability,
while the latter does not.
A generic terminal is unsuitable for full-screen applications.
.bP
-\fBsetupterm\fP allows explicit use of the
+\fB\%setupterm\fP allows explicit use of the
the windows console driver by checking if \fB$TERM\fP is set to
\*(``#win32con\*('' or an abbreviation of that string.
.SS "Other Portability Issues"
-In System V Release 4, \fBset_curterm\fP has an \fBint\fP return type and
-returns \fBOK\fP or \fBERR\fP. We have chosen to implement the X/Open Curses
-semantics.
+In SVr4,
+\fB\%set_curterm\fP returns an
+.I int,
+.B OK
+or
+.BR ERR .
+We have chosen to implement the X/Open Curses semantics.
.PP
-In System V Release 4, the third argument of \fBtputs\fP has the type
-\fBint (*putc)(char)\fP.
+In SVr4,
+the third argument of \fB\%tputs\fP has the type
+.RB \*(`` "int (*putc)(char)" \*(''.
.PP
At least one implementation of X/Open Curses (Solaris) returns a value
-other than \fBOK\fP/\fBERR\fP from \fBtputs\fP.
-That returns the length of the string, and does no error-checking.
+other than
+.B OK
+or
+.B ERR
+from \fB\%tputs\fP.
+It instead returns the length of the string,
+and does no error checking.
+.PP
+X/Open Curses notes that after calling \fB\%mvcur\fP,
+the
+.I curses
+state may not match the actual terminal state,
+and that an application should touch and refresh the window before
+resuming normal
+.I curses
+calls.
+Both
+.I \%ncurses
+and SVr4
+.I curses
+implement \fB\%mvcur\fP using the
+.I SCREEN
+data allocated in either \fB\%initscr\fP or \fB\%newterm\fP.
+So though it is documented as a
+.I \%term\%info
+function,
+\fB\%mvcur\fP is really a
+.I curses
+function that is not well specified.
.PP
X/Open notes that after calling \fBmvcur\fP, the curses state may not match the
actual terminal state, and that an application should touch and refresh
So though it is documented as a terminfo function,
\fBmvcur\fP is really a curses function which is not well specified.
.PP
-X/Open states that the old location must be given for \fBmvcur\fP.
-This implementation allows the caller to use \-1's for the old ordinates.
-In that case, the old location is unknown.
+X/Open Curses states that the old location must be given for
+\fB\%mvcur\fP to accommodate terminals that lack absolute cursor
+positioning.
+.\" X/Open Curses Issue 7, p. 161
+.I \%ncurses
+allows the caller to use \-1 for either or both old coordinates.
+The \-1 tells
+.I \%ncurses
+that the old location is unknown,
+and that it must use only absolute motion
+(such as \fI\%cursor_address\fP)
+rather than the least costly combination of absolute and relative motion.
.\" ***************************************************************************
.SH HISTORY
-SVr2 introduced the terminfo feature.
+SVr2 (1984) introduced the
+.I \%term\%info
+feature.
Its programming manual mentioned the following low-level functions.
.PP
.TS
fixterm restore tty to \*(``in curses\*('' state
gettmode establish current tty modes
mvcur low level cursor motion
-putp T{
-utility function that uses \fBtputs\fP to send characters via
-\fI\%putchar\fP.
-T}
+putp use \fBtputs\fP to send characters via \fI\%putchar\fP
resetterm set tty modes to \*(``out of curses\*('' state
resetty reset tty flags to stored value
saveterm save current modes as \*(``in curses\*('' state
savetty store current tty flags
setterm establish terminal with given type
setupterm establish terminal with given type
-tparm instantiate a string expression with parameters
+tparm interpolate parameters into string capability
tputs apply padding information to a string
-vidattr like \fBvidputs\fP, but outputs through \fIputchar\fP
-vidputs T{
-output a string to put terminal in a specified video attribute mode
-T}
+vidattr like \fBvidputs\fP, but output through \fIputchar\fP
+vidputs write string to terminal, applying specified attributes
.TE
.PP
The programming manual also mentioned
-functions provided for \fItermcap\fP compatibility
+functions provided for
+.I termcap
+compatibility
(commenting that they \*(``may go away at a later date\*('').
.PP
.TS
Function Description
_
tgetent look up \fItermcap\fP entry for given \fIname\fP
-tgetflag get boolean entry for given \fIid\fP
+tgetflag get Boolean entry for given \fIid\fP
tgetnum get numeric entry for given \fIid\fP
tgetstr get string entry for given \fIid\fP
tgoto apply parameters to given capability
-tputs T{
-apply padding to capability, calling a function to put characters
-T}
+tputs write characters via a function parameter, applying padding
.TE
.PP
-Early terminfo programs obtained capability values from the
-\fI\%TERMINAL\fP structure initialized by \fBsetupterm\fP.
+Early
+.I \%term\%info
+programs obtained capability values from the
+.I \%TERMINAL
+structure initialized by \fB\%setupterm\fP.
.PP
-SVr3 extended terminfo by adding functions to retrieve capability values
-(like the termcap interface),
-and reusing \fBtgoto\fP and \fBtputs\fP:
+SVr3 (1987) extended
+.I \%term\%info
+by adding functions to retrieve capability values
+(like the
+.I termcap
+interface),
+and reusing \fB\%tgoto\fP and \fB\%tputs\fP.
.PP
.TS
lB lB
lB lx.
Function Description
_
-tigetflag get boolean entry for given \fIid\fP
+tigetflag get Boolean entry for given \fIid\fP
tigetnum get numeric entry for given \fIid\fP
tigetstr get string entry for given \fIid\fP
.TE
.PP
-SVr3 also replaced several of the SVr2 \fIterminfo\fP functions
-which had no counterpart in the \fItermcap\fP interface,
+SVr3 also replaced several of the SVr2
+.I \%term\%info
+functions that had no counterpart in the
+.I termcap
+interface,
documenting them as obsolete.
.PP
.TS
setterm setupterm
.TE
.PP
-SVr3 kept the \fBmvcur\fP, \fBvidattr\fP and \fBvidputs\fP functions,
-along with \fBputp\fP, \fBtparm\fP and \fBtputs\fP.
+SVr3 kept the \fB\%mvcur\fP,
+\fB\%vidattr\fP,
+and \fB\%vidputs\fP functions,
+along with \fB\%putp\fP,
+\fB\%tparm\fP,
+and \fB\%tputs\fP.
The latter were needed to support padding,
-and handling functions such as \fBvidattr\fP
-(which used more than the two parameters supported by \fBtgoto\fP).
+and to handle capabilities accessed by functions such as \fB\%vidattr\fP
+(which used more than the two parameters supported by \fB\%tgoto\fP).
.PP
SVr3 introduced the functions for switching between terminal
-descriptions, e.g., \fBset_curterm\fP.
-Some of that was incremental improvements to the SVr2 library:
-.bP
-The \fI\%TERMINAL\fP type definition was introduced in SVr3.01,
-for the \fBterm\fP structure provided in SVr2.
-.bP
-The various global variables such as \fBboolnames\fP were mentioned
+descriptions;
+for example,
+\fB\%set_curterm\fP.
+Some changes reflected incremental improvements to the SVr2 library.
+.bP
+The
+.I \%TERMINAL
+type definition was introduced in SVr3.01,
+for the
+.I term
+structure provided in SVr2.
+.bP
+Various global variables such as \fB\%boolnames\fP were mentioned
in the programming manual at this point,
-though the variables were provided in SVr2.
+though the variables had been provided in SVr2.
.PP
-SVr4 added the \fBvid_attr\fP and \fBvid_puts\fP functions.
+SVr4 (1989) added the \fB\%vid_attr\fP and \fB\%vid_puts\fP functions.
.PP
-There are other low-level functions declared in the \fIcurses\fP header files
-on Unix systems,
-but none were documented.
-The functions marked \*(``obsolete\*('' remained in use
-by the Unix \fBvi\fP(1) editor.
+Other low-level functions are declared in the
+.I curses
+header files of Unix systems,
+but none are documented.
+Those noted as \*(``obsolete\*('' by SVr3 remained in use by System\ V's
+\fIvi\fP(1) editor.
.SH SEE ALSO
\fB\%curses\fP(3X),
\fB\%curs_initscr\fP(3X),