1999-08-24 01:06:48 +00:00
|
|
|
'\" t
|
|
|
|
.\"***************************************************************************
|
2020-02-19 16:58:06 +00:00
|
|
|
.\" Copyright 2018,2020 Thomas E. Dickey *
|
|
|
|
.\" Copyright 1998-2016,2017 Free Software Foundation, Inc. *
|
1999-08-24 01:06:48 +00:00
|
|
|
.\" *
|
|
|
|
.\" 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. *
|
|
|
|
.\"***************************************************************************
|
|
|
|
.\"
|
2021-02-25 17:22:00 +00:00
|
|
|
.\" $Id: tput.1,v 1.65 2020/12/19 22:17:47 tom Exp $
|
2007-12-30 11:08:14 +00:00
|
|
|
.TH @TPUT@ 1 ""
|
2000-10-11 07:31:01 +00:00
|
|
|
.ds d @TERMINFO@
|
2007-01-20 07:32:02 +00:00
|
|
|
.ds n 1
|
2020-02-07 08:36:41 +00:00
|
|
|
.ie \n(.g .ds `` \(lq
|
|
|
|
.el .ds `` ``
|
|
|
|
.ie \n(.g .ds '' \(rq
|
|
|
|
.el .ds '' ''
|
|
|
|
.de bP
|
|
|
|
.ie n .IP \(bu 4
|
|
|
|
.el .IP \(bu 2
|
|
|
|
..
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH NAME
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB@TPUT@\fR, \fBreset\fR \- initialize a terminal or query terminfo database
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH SYNOPSIS
|
2020-02-07 08:36:41 +00:00
|
|
|
\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fIcapname\fR [\fIparameters\fR]
|
|
|
|
.br
|
|
|
|
\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] [\fB\-x\fP] \fBclear\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
.br
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBinit\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
.br
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBreset\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
.br
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBlongname\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
.br
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB@TPUT@ \-S\fR \fB<<\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
.br
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB@TPUT@ \-V\fR
|
2000-10-11 07:31:01 +00:00
|
|
|
.br
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH DESCRIPTION
|
2007-12-30 11:08:14 +00:00
|
|
|
The \fB@TPUT@\fR utility uses the \fBterminfo\fR database to make the
|
1999-08-24 01:06:48 +00:00
|
|
|
values of terminal-dependent capabilities and information available to
|
|
|
|
the shell (see \fBsh\fR(1)), to initialize or reset the terminal, or
|
2007-01-20 07:32:02 +00:00
|
|
|
return the long name of the requested terminal type.
|
|
|
|
The result depends upon the capability's type:
|
2020-02-07 08:36:41 +00:00
|
|
|
.RS 3
|
2007-01-20 07:32:02 +00:00
|
|
|
.TP 5
|
|
|
|
string
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@\fR writes the string to the standard output.
|
2007-01-20 07:32:02 +00:00
|
|
|
No trailing newline is supplied.
|
|
|
|
.TP
|
|
|
|
integer
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@\fR writes the decimal value to the standard output,
|
2007-01-20 07:32:02 +00:00
|
|
|
with a trailing newline.
|
|
|
|
.TP
|
|
|
|
boolean
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@\fR simply sets the exit code
|
2007-01-20 07:32:02 +00:00
|
|
|
(\fB0\fR for TRUE if the terminal has the capability,
|
|
|
|
\fB1\fR for FALSE if it does not),
|
|
|
|
and writes nothing to the standard output.
|
|
|
|
.RE
|
|
|
|
.PP
|
|
|
|
Before using a value returned on the standard output,
|
|
|
|
the application should test the exit code
|
|
|
|
(e.g., \fB$?\fR, see \fBsh\fR(1)) to be sure it is \fB0\fR.
|
1999-08-24 01:06:48 +00:00
|
|
|
(See the \fBEXIT CODES\fR and \fBDIAGNOSTICS\fR sections.)
|
|
|
|
For a complete list of capabilities
|
2007-12-30 11:08:14 +00:00
|
|
|
and the \fIcapname\fR associated with each, see \fBterminfo\fR(5).
|
2020-02-07 08:36:41 +00:00
|
|
|
.SS Options
|
|
|
|
.TP
|
|
|
|
\fB\-S\fR
|
|
|
|
allows more than one capability per invocation of \fB@TPUT@\fR. The
|
|
|
|
capabilities must be passed to \fB@TPUT@\fR from the standard input
|
|
|
|
instead of from the command line (see example).
|
|
|
|
Only one \fIcapname\fR is allowed per line.
|
|
|
|
The \fB\-S\fR option changes the
|
|
|
|
meaning of the \fB0\fR and \fB1\fR boolean and string exit codes (see the
|
|
|
|
EXIT CODES section).
|
|
|
|
.IP
|
|
|
|
Because some capabilities may use
|
|
|
|
\fIstring\fP parameters rather than \fInumbers\fP,
|
|
|
|
\fB@TPUT@\fR uses a table and the presence of parameters in its input
|
|
|
|
to decide whether to use \fBtparm\fR(3X),
|
|
|
|
and how to interpret the parameters.
|
1999-08-24 01:06:48 +00:00
|
|
|
.TP
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB\-T\fR\fItype\fR
|
2014-03-01 00:40:26 +00:00
|
|
|
indicates the \fItype\fR of terminal.
|
|
|
|
Normally this option is
|
1999-08-24 01:06:48 +00:00
|
|
|
unnecessary, because the default is taken from the environment
|
2014-03-01 00:40:26 +00:00
|
|
|
variable \fBTERM\fR.
|
|
|
|
If \fB\-T\fR is specified, then the shell
|
|
|
|
variables \fBLINES\fR and \fBCOLUMNS\fR will also be ignored.
|
1999-08-24 01:06:48 +00:00
|
|
|
.TP
|
2020-02-07 08:36:41 +00:00
|
|
|
\fB\-V\fR
|
|
|
|
reports the version of ncurses which was used in this program, and exits.
|
1999-08-24 01:06:48 +00:00
|
|
|
.TP
|
2020-02-07 08:36:41 +00:00
|
|
|
.B \-x
|
|
|
|
do not attempt to clear the terminal's scrollback buffer
|
|
|
|
using the extended \*(``E3\*('' capability.
|
|
|
|
.SS Commands
|
|
|
|
A few commands (\fBinit\fP, \fBreset\fP and \fBlongname\fP) are
|
|
|
|
special; they are defined by the \fB@TPUT@\fP program.
|
|
|
|
The others are the names of \fIcapabilities\fP from the terminal database
|
|
|
|
(see \fBterminfo\fR(5) for a list).
|
|
|
|
Although \fBinit\fP and \fBreset\fP resemble capability names,
|
|
|
|
\fB@TPUT@\fP uses several capabilities to perform these special functions.
|
|
|
|
.TP
|
|
|
|
\fIcapname\fR
|
|
|
|
indicates the capability from the terminal database.
|
|
|
|
.IP
|
2007-01-20 07:32:02 +00:00
|
|
|
If the capability is a string that takes parameters, the arguments
|
2020-02-07 08:36:41 +00:00
|
|
|
following the capability will be used as parameters for the string.
|
2007-01-20 07:32:02 +00:00
|
|
|
.IP
|
|
|
|
Most parameters are numbers.
|
2020-02-07 08:36:41 +00:00
|
|
|
Only a few terminal capabilities require string parameters;
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@\fR uses a table to decide which to pass as strings.
|
2020-02-07 08:36:41 +00:00
|
|
|
Normally \fB@TPUT@\fR uses \fBtparm\fR(3X) to perform the substitution.
|
2007-01-20 07:32:02 +00:00
|
|
|
If no parameters are given for the capability,
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@\fR writes the string without performing the substitution.
|
1999-08-24 01:06:48 +00:00
|
|
|
.TP
|
|
|
|
\fBinit\fR
|
2020-02-07 08:36:41 +00:00
|
|
|
If the terminal database is present and an entry for the user's
|
2014-02-28 19:18:07 +00:00
|
|
|
terminal exists (see \fB\-T\fR\fItype\fR, above), the following will
|
2007-01-20 07:32:02 +00:00
|
|
|
occur:
|
|
|
|
.RS
|
2020-02-07 08:36:41 +00:00
|
|
|
.TP 5
|
2007-01-20 07:32:02 +00:00
|
|
|
(1)
|
2020-02-07 08:36:41 +00:00
|
|
|
first, \fB@TPUT@\fR retrieves the current terminal mode settings
|
|
|
|
for your terminal.
|
|
|
|
It does this by successively testing
|
|
|
|
.RS
|
|
|
|
.bP
|
|
|
|
the standard error,
|
|
|
|
.bP
|
|
|
|
standard output,
|
|
|
|
.bP
|
|
|
|
standard input and
|
|
|
|
.bP
|
|
|
|
ultimately \*(``/dev/tty\*(''
|
|
|
|
.RE
|
|
|
|
.IP
|
|
|
|
to obtain terminal settings.
|
|
|
|
Having retrieved these settings, \fB@TPUT@\fP remembers which
|
|
|
|
file descriptor to use when updating settings.
|
2007-01-20 07:32:02 +00:00
|
|
|
.TP
|
|
|
|
(2)
|
2020-02-07 08:36:41 +00:00
|
|
|
if the window size cannot be obtained from the operating system,
|
|
|
|
but the terminal description (or environment, e.g., \fBLINES\fP
|
|
|
|
and \fBCOLUMNS\fP variables specify this),
|
|
|
|
update the operating system's notion of the window size.
|
2007-01-20 07:32:02 +00:00
|
|
|
.TP
|
|
|
|
(3)
|
2020-02-07 08:36:41 +00:00
|
|
|
the terminal modes will be updated:
|
|
|
|
.RS
|
|
|
|
.bP
|
|
|
|
any delays (e.g., newline) specified in the entry will
|
|
|
|
be set in the tty driver,
|
|
|
|
.bP
|
2007-01-20 07:32:02 +00:00
|
|
|
tabs expansion will be turned on or off according to
|
|
|
|
the specification in the entry, and
|
2020-02-07 08:36:41 +00:00
|
|
|
.bP
|
2007-01-20 07:32:02 +00:00
|
|
|
if tabs are not expanded,
|
|
|
|
standard tabs will be set (every 8 spaces).
|
|
|
|
.RE
|
2020-02-07 08:36:41 +00:00
|
|
|
.TP
|
|
|
|
(4)
|
|
|
|
if present, the terminal's initialization strings will be
|
|
|
|
output as detailed in the \fBterminfo\fR(5) section on
|
|
|
|
.IR "Tabs and Initialization" ,
|
|
|
|
.TP
|
|
|
|
(5)
|
|
|
|
output is flushed.
|
|
|
|
.RE
|
2007-01-20 07:32:02 +00:00
|
|
|
.IP
|
|
|
|
If an entry does not
|
2020-02-07 08:36:41 +00:00
|
|
|
contain the information needed for any of these activities,
|
1999-08-24 01:06:48 +00:00
|
|
|
that activity will silently be skipped.
|
|
|
|
.TP
|
|
|
|
\fBreset\fR
|
2020-02-07 08:36:41 +00:00
|
|
|
This is similar to \fBinit\fP, with two differences:
|
|
|
|
.RS
|
|
|
|
.TP 5
|
|
|
|
(1)
|
|
|
|
before any other initialization,
|
|
|
|
the terminal modes will be reset to a \*(``sane\*('' state:
|
|
|
|
.RS
|
|
|
|
.bP
|
|
|
|
set cooked and echo modes,
|
|
|
|
.bP
|
|
|
|
turn off cbreak and raw modes,
|
|
|
|
.bP
|
|
|
|
turn on newline translation and
|
|
|
|
.bP
|
|
|
|
reset any unset special characters to their default values
|
|
|
|
.RE
|
|
|
|
.TP 5
|
|
|
|
(2)
|
|
|
|
Instead of putting out \fIinitialization\fP strings, the terminal's
|
|
|
|
\fIreset\fP strings will be output if present
|
|
|
|
(\fBrs1\fR, \fBrs2\fR, \fBrs3\fR, \fBrf\fR).
|
|
|
|
If the \fIreset\fP strings are not present, but \fIinitialization\fP
|
|
|
|
strings are, the \fIinitialization\fP strings will be output.
|
|
|
|
.RE
|
|
|
|
.IP
|
1999-08-24 01:06:48 +00:00
|
|
|
Otherwise, \fBreset\fR acts identically to \fBinit\fR.
|
|
|
|
.TP
|
|
|
|
\fBlongname\fR
|
2020-02-07 08:36:41 +00:00
|
|
|
If the terminal database is present and an entry for the
|
2014-02-28 19:18:07 +00:00
|
|
|
user's terminal exists (see \fB\-T\fR\fItype\fR above), then the long name
|
2020-02-07 08:36:41 +00:00
|
|
|
of the terminal will be put out.
|
|
|
|
The long name is the last
|
1999-08-24 01:06:48 +00:00
|
|
|
name in the first line of the terminal's description in the
|
|
|
|
\fBterminfo\fR database [see \fBterm\fR(5)].
|
2020-02-07 08:36:41 +00:00
|
|
|
.SS Aliases
|
|
|
|
\fB@TPUT@\fR handles the \fBclear\fP, \fBinit\fP and \fBreset\fP
|
|
|
|
commands specially:
|
|
|
|
it allows for the possibility that it is invoked by a link with those names.
|
2000-10-11 07:31:01 +00:00
|
|
|
.PP
|
2007-12-30 11:08:14 +00:00
|
|
|
If \fB@TPUT@\fR is invoked by a link named \fBreset\fR, this has the
|
|
|
|
same effect as \fB@TPUT@ reset\fR.
|
2020-02-07 08:36:41 +00:00
|
|
|
The \fB@TSET@\fR(\*n) utility also treats a link named \fBreset\fP specially.
|
|
|
|
.PP
|
|
|
|
Before ncurses 6.1, the two utilities were different from each other:
|
|
|
|
.bP
|
|
|
|
\fB@TSET@\fP utility reset the terminal modes and special characters
|
|
|
|
(not done with \fB@TPUT@\fP).
|
|
|
|
.bP
|
|
|
|
On the other hand, \fB@TSET@\fP's repertoire of terminal capabilities for
|
|
|
|
resetting the terminal was more limited,
|
|
|
|
i.e., only \fBreset_1string\fP, \fBreset_2string\fP and \fBreset_file\fP
|
|
|
|
in contrast to the tab-stops and margins which are set by this utility.
|
|
|
|
.bP
|
|
|
|
The \fBreset\fP program is usually an alias for \fB@TSET@\fP,
|
|
|
|
because of this difference with resetting terminal modes and special characters.
|
|
|
|
.PP
|
|
|
|
With the changes made for ncurses 6.1, the \fIreset\fP feature of the
|
|
|
|
two programs is (mostly) the same.
|
|
|
|
A few differences remain:
|
|
|
|
.bP
|
|
|
|
The \fB@TSET@\fP program waits one second when resetting,
|
|
|
|
in case it happens to be a hardware terminal.
|
|
|
|
.bP
|
|
|
|
The two programs write the terminal initialization strings
|
|
|
|
to different streams (i.e., the standard error for \fB@TSET@\fP and the
|
|
|
|
standard output for \fB@TPUT@\fP).
|
|
|
|
.IP
|
|
|
|
\fBNote:\fP although these programs write to different streams,
|
|
|
|
redirecting their output to a file will capture only part of their actions.
|
|
|
|
The changes to the terminal modes are not affected by redirecting the output.
|
|
|
|
.PP
|
|
|
|
If \fB@TPUT@\fR is invoked by a link named \fBinit\fR, this has the
|
|
|
|
same effect as \fB@TPUT@ init\fR.
|
|
|
|
Again, you are less likely to use that link because another program
|
|
|
|
named \fBinit\fP has a more well-established use.
|
|
|
|
.SS Terminal Size
|
|
|
|
.PP
|
|
|
|
Besides the special commands (e.g., \fBclear\fP),
|
|
|
|
@TPUT@ treats certain terminfo capabilities specially:
|
2021-02-25 17:22:00 +00:00
|
|
|
\fBlines\fP and \fBcols\fP.
|
2020-02-07 08:36:41 +00:00
|
|
|
@TPUT@ calls \fBsetupterm\fP(3X) to obtain the terminal size:
|
|
|
|
.bP
|
|
|
|
first, it gets the size from the terminal database
|
|
|
|
(which generally is not provided for terminal emulators
|
|
|
|
which do not have a fixed window size)
|
|
|
|
.bP
|
|
|
|
then it asks the operating system for the terminal's size
|
|
|
|
(which generally works, unless connecting via a serial line which
|
|
|
|
does not support \fINAWS\fP: negotiations about window size).
|
|
|
|
.bP
|
|
|
|
finally, it inspects the environment variables \fBLINES\fP and \fBCOLUMNS\fP
|
|
|
|
which may override the terminal size.
|
|
|
|
.PP
|
|
|
|
If the \fB\-T\fP option is given
|
|
|
|
@TPUT@ ignores the environment variables by calling \fBuse_tioctl(TRUE)\fP,
|
|
|
|
relying upon the operating system (or finally, the terminal database).
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH EXAMPLES
|
|
|
|
.TP 5
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@ init\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
Initialize the terminal according to the type of
|
|
|
|
terminal in the environmental variable \fBTERM\fR. This
|
|
|
|
command should be included in everyone's .profile after
|
|
|
|
the environmental variable \fBTERM\fR has been exported, as
|
2007-01-20 07:32:02 +00:00
|
|
|
illustrated on the \fBprofile\fR(5) manual page.
|
1999-08-24 01:06:48 +00:00
|
|
|
.TP 5
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB@TPUT@ \-T5620 reset\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
Reset an AT&T 5620 terminal, overriding the type of
|
|
|
|
terminal in the environmental variable \fBTERM\fR.
|
|
|
|
.TP 5
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@ cup 0 0\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
Send the sequence to move the cursor to row \fB0\fR, column \fB0\fR
|
2020-02-07 08:36:41 +00:00
|
|
|
(the upper left corner of the screen, usually known as the \*(``home\*(''
|
1999-08-24 01:06:48 +00:00
|
|
|
cursor position).
|
|
|
|
.TP 5
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@ clear\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
Echo the clear-screen sequence for the current terminal.
|
|
|
|
.TP 5
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@ cols\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
Print the number of columns for the current terminal.
|
|
|
|
.TP 5
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB@TPUT@ \-T450 cols\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
Print the number of columns for the 450 terminal.
|
|
|
|
.TP 5
|
2007-12-30 11:08:14 +00:00
|
|
|
\fBbold=`@TPUT@ smso` offbold=`@TPUT@ rmso`\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
Set the shell variables \fBbold\fR, to begin stand-out mode
|
|
|
|
sequence, and \fBoffbold\fR, to end standout mode sequence,
|
2020-02-07 08:36:41 +00:00
|
|
|
for the current terminal.
|
|
|
|
This might be followed by a
|
1999-08-24 01:06:48 +00:00
|
|
|
prompt: \fBecho "${bold}Please type in your name: ${offbold}\\c"\fR
|
|
|
|
.TP 5
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@ hc\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
Set exit code to indicate if the current terminal is a hard copy terminal.
|
|
|
|
.TP 5
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@ cup 23 4\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
Send the sequence to move the cursor to row 23, column 4.
|
|
|
|
.TP 5
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@ cup\fR
|
2007-01-20 07:32:02 +00:00
|
|
|
Send the terminfo string for cursor-movement, with no parameters substituted.
|
|
|
|
.TP 5
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@ longname\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
Print the long name from the \fBterminfo\fR database for the
|
|
|
|
type of terminal specified in the environmental
|
|
|
|
variable \fBTERM\fR.
|
2000-10-11 07:31:01 +00:00
|
|
|
.PP
|
|
|
|
.RS 5
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB@TPUT@ \-S <<!\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
.br
|
|
|
|
\fB> clear\fR
|
|
|
|
.br
|
|
|
|
\fB> cup 10 10\fR
|
|
|
|
.br
|
|
|
|
\fB> bold\fR
|
|
|
|
.br
|
|
|
|
\fB> !\fR
|
2000-10-11 07:31:01 +00:00
|
|
|
.RE
|
1999-08-24 01:06:48 +00:00
|
|
|
.TP 5
|
|
|
|
\&
|
2020-02-07 08:36:41 +00:00
|
|
|
This example shows \fB@TPUT@\fR processing several capabilities
|
|
|
|
in one invocation.
|
2007-01-20 07:32:02 +00:00
|
|
|
It clears the screen,
|
|
|
|
moves the cursor to position 10, 10
|
|
|
|
and turns on bold (extra bright) mode.
|
|
|
|
The list is terminated by an exclamation mark (\fB!\fR) on a line by itself.
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH FILES
|
|
|
|
.TP
|
|
|
|
\fB\*d\fR
|
|
|
|
compiled terminal description database
|
|
|
|
.TP
|
|
|
|
\fB@DATADIR@/tabset/*\fR
|
|
|
|
tab settings for some terminals, in a format
|
|
|
|
appropriate to be output to the terminal (escape
|
|
|
|
sequences that set margins and tabs); for more
|
2020-02-07 08:36:41 +00:00
|
|
|
information, see the
|
|
|
|
.IR "Tabs and Initialization" ,
|
2007-01-20 07:32:02 +00:00
|
|
|
section of \fBterminfo\fR(5)
|
1999-08-24 01:06:48 +00:00
|
|
|
.SH EXIT CODES
|
2014-02-28 19:18:07 +00:00
|
|
|
If the \fB\-S\fR option is used,
|
2007-12-30 11:08:14 +00:00
|
|
|
\fB@TPUT@\fR checks for errors from each line,
|
2007-01-20 07:32:02 +00:00
|
|
|
and if any errors are found, will set the exit code to 4 plus the
|
|
|
|
number of lines with errors.
|
|
|
|
If no errors are found, the exit code is \fB0\fR.
|
|
|
|
No indication of which line failed can be given so
|
2020-02-07 08:36:41 +00:00
|
|
|
exit code \fB1\fR will never appear.
|
|
|
|
Exit codes \fB2\fR, \fB3\fR, and
|
1999-08-24 01:06:48 +00:00
|
|
|
\fB4\fR retain their usual interpretation.
|
2014-02-28 19:18:07 +00:00
|
|
|
If the \fB\-S\fR option is not used,
|
2007-01-20 07:32:02 +00:00
|
|
|
the exit code depends on the type of \fIcapname\fR:
|
2020-02-07 08:36:41 +00:00
|
|
|
.RS 3
|
2007-01-20 07:32:02 +00:00
|
|
|
.TP
|
|
|
|
.I boolean
|
|
|
|
a value of \fB0\fR is set for TRUE and \fB1\fR for FALSE.
|
|
|
|
.TP
|
|
|
|
.I string
|
|
|
|
a value of \fB0\fR is set if the
|
|
|
|
\fIcapname\fR is defined for this terminal \fItype\fR (the value of
|
|
|
|
\fIcapname\fR is returned on standard output);
|
|
|
|
a value of \fB1\fR is set if \fIcapname\fR
|
|
|
|
is not defined for this terminal \fItype\fR
|
|
|
|
(nothing is written to standard output).
|
|
|
|
.TP
|
|
|
|
.I integer
|
|
|
|
a value of \fB0\fR is always set,
|
1999-08-24 01:06:48 +00:00
|
|
|
whether or not \fIcapname\fR is defined for this terminal \fItype\fR.
|
|
|
|
To determine if \fIcapname\fR is defined for this terminal \fItype\fR,
|
2007-01-20 07:32:02 +00:00
|
|
|
the user must test the value written to standard output.
|
2014-02-28 19:18:07 +00:00
|
|
|
A value of \fB\-1\fR
|
1999-08-24 01:06:48 +00:00
|
|
|
means that \fIcapname\fR is not defined for this terminal \fItype\fR.
|
2007-01-20 07:32:02 +00:00
|
|
|
.TP
|
|
|
|
.I other
|
|
|
|
\fBreset\fR or \fBinit\fR may fail to find their respective files.
|
|
|
|
In that case, the exit code is set to 4 + \fBerrno\fR.
|
|
|
|
.RE
|
2000-10-11 07:31:01 +00:00
|
|
|
.PP
|
1999-08-24 01:06:48 +00:00
|
|
|
Any other exit code indicates an error; see the DIAGNOSTICS section.
|
|
|
|
.SH DIAGNOSTICS
|
2014-03-01 00:40:26 +00:00
|
|
|
\fB@TPUT@\fR prints the following error messages and sets the corresponding exit
|
1999-08-24 01:06:48 +00:00
|
|
|
codes.
|
2000-10-11 07:31:01 +00:00
|
|
|
.PP
|
2007-01-20 07:32:02 +00:00
|
|
|
.ne 15
|
1999-08-24 01:06:48 +00:00
|
|
|
.TS
|
|
|
|
l l.
|
|
|
|
exit code error message
|
2000-10-11 07:31:01 +00:00
|
|
|
=
|
|
|
|
\fB0\fR T{
|
|
|
|
(\fIcapname\fR is a numeric variable that is not specified in the
|
2007-12-30 11:08:14 +00:00
|
|
|
\fBterminfo\fR(5) database for this terminal type, e.g.
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB@TPUT@ \-T450 lines\fR and \fB@TPUT@ \-T2621 xmc\fR)
|
2000-10-11 07:31:01 +00:00
|
|
|
T}
|
1999-08-24 01:06:48 +00:00
|
|
|
\fB1\fR no error message is printed, see the \fBEXIT CODES\fR section.
|
|
|
|
\fB2\fR usage error
|
|
|
|
\fB3\fR unknown terminal \fItype\fR or no \fBterminfo\fR database
|
|
|
|
\fB4\fR unknown \fBterminfo\fR capability \fIcapname\fR
|
2014-02-28 19:18:07 +00:00
|
|
|
\fB>4\fR error occurred in \-S
|
2000-10-11 07:31:01 +00:00
|
|
|
=
|
1999-08-24 01:06:48 +00:00
|
|
|
.TE
|
2020-02-07 08:36:41 +00:00
|
|
|
.SH HISTORY
|
|
|
|
The \fBtput\fP command was begun by Bill Joy in 1980.
|
|
|
|
The initial version only cleared the screen.
|
2007-01-20 07:32:02 +00:00
|
|
|
.PP
|
2020-02-07 08:36:41 +00:00
|
|
|
AT&T System V provided a different \fBtput\fP command,
|
|
|
|
whose \fBinit\fP and \fBreset\fP subcommands
|
|
|
|
(more than half the program) were incorporated from
|
|
|
|
the \fBreset\fP feature of BSD \fBtset\fP written by Eric Allman.
|
2007-01-20 07:32:02 +00:00
|
|
|
.PP
|
2020-02-07 08:36:41 +00:00
|
|
|
Keith Bostic replaced the BSD \fBtput\fP command in 1989
|
|
|
|
with a new implementation
|
|
|
|
based on the AT&T System V program \fBtput\fP.
|
|
|
|
Like the AT&T program, Bostic's version
|
|
|
|
accepted some parameters named for \fIterminfo capabilities\fP
|
|
|
|
(\fBclear\fP, \fBinit\fP, \fBlongname\fP and \fBreset\fP).
|
|
|
|
However (because he had only termcap available),
|
|
|
|
it accepted \fItermcap names\fP for other capabilities.
|
|
|
|
Also, Bostic's BSD \fBtput\fP did not modify the terminal I/O modes
|
|
|
|
as the earlier BSD \fBtset\fP had done.
|
2014-03-01 00:40:26 +00:00
|
|
|
.PP
|
2020-02-07 08:36:41 +00:00
|
|
|
At the same time, Bostic added a shell script named \*(``clear\*('',
|
|
|
|
which used \fBtput\fP to clear the screen.
|
|
|
|
.PP
|
|
|
|
Both of these appeared in 4.4BSD,
|
|
|
|
becoming the \*(``modern\*('' BSD implementation of \fBtput\fP.
|
|
|
|
.PP
|
|
|
|
This implementation of \fBtput\fP began from a different source than
|
|
|
|
AT&T or BSD: Ross Ridge's \fImytinfo\fP package, published on
|
|
|
|
\fIcomp.sources.unix\fP in December 1992.
|
|
|
|
Ridge's program made more sophisticated use of the terminal capabilities
|
|
|
|
than the BSD program.
|
|
|
|
Eric Raymond used that \fBtput\fP program
|
|
|
|
(and other parts of \fImytinfo\fP) in ncurses in June 1995.
|
|
|
|
Using the portions dealing with terminal capabilities
|
|
|
|
almost without change,
|
|
|
|
Raymond made improvements to the way the command-line parameters
|
|
|
|
were handled.
|
|
|
|
.SH PORTABILITY
|
2014-03-01 00:40:26 +00:00
|
|
|
.PP
|
2020-02-07 08:36:41 +00:00
|
|
|
This implementation of \fBtput\fP differs from AT&T \fBtput\fP in
|
|
|
|
two important areas:
|
|
|
|
.bP
|
|
|
|
\fB@TPUT@\fP \fIcapname\fP writes to the standard output.
|
|
|
|
That need not be a regular terminal.
|
|
|
|
However, the subcommands which manipulate terminal modes
|
|
|
|
may not use the standard output.
|
|
|
|
.IP
|
|
|
|
The AT&T implementation's \fBinit\fP and \fBreset\fP commands
|
|
|
|
use the BSD (4.1c) \fBtset\fP source, which manipulates terminal modes.
|
|
|
|
It successively tries standard output, standard error, standard input
|
|
|
|
before falling back to \*(``/dev/tty\*('' and finally just assumes
|
|
|
|
a 1200Bd terminal.
|
|
|
|
When updating terminal modes, it ignores errors.
|
|
|
|
.IP
|
|
|
|
Until changes made after ncurses 6.0,
|
|
|
|
\fB@TPUT@\fP did not modify terminal modes.
|
|
|
|
\fB@TPUT@\fP now uses a similar scheme,
|
|
|
|
using functions shared with \fB@TSET@\fP
|
|
|
|
(and ultimately based on the 4.4BSD \fBtset\fP).
|
|
|
|
If it is not able to open a terminal, e.g., when running in \fBcron\fP,
|
|
|
|
\fB@TPUT@\fP will return an error.
|
|
|
|
.bP
|
|
|
|
AT&T \fBtput\fP guesses the type of its \fIcapname\fP operands by seeing if
|
|
|
|
all of the characters are numeric, or not.
|
|
|
|
.IP
|
2014-03-01 00:40:26 +00:00
|
|
|
Most implementations which provide support for \fIcapname\fR operands
|
|
|
|
use the \fItparm\fP function to expand parameters in it.
|
|
|
|
That function expects a mixture of numeric and string parameters,
|
|
|
|
requiring \fB@TPUT@\fP to know which type to use.
|
2020-02-07 08:36:41 +00:00
|
|
|
.IP
|
|
|
|
This implementation uses a table to determine the parameter types for
|
2014-03-01 00:40:26 +00:00
|
|
|
the standard \fIcapname\fR operands, and an internal library
|
|
|
|
function to analyze nonstandard \fIcapname\fR operands.
|
2020-02-07 08:36:41 +00:00
|
|
|
.PP
|
|
|
|
This implementation (unlike others) can accept both \fItermcap\fP
|
|
|
|
and \fIterminfo\fP names for the \fIcapname\fP feature,
|
|
|
|
if
|
|
|
|
\fItermcap\fR support is compiled in.
|
|
|
|
However, the predefined \fItermcap\fP and \fIterminfo\fP names have two
|
|
|
|
ambiguities in this case (and the \fIterminfo\fP name is assumed):
|
|
|
|
.bP
|
|
|
|
The \fItermcap\fP name \fBdl\fP corresponds to
|
|
|
|
the \fIterminfo\fP name \fBdl1\fP (delete one line).
|
|
|
|
.br
|
|
|
|
The \fIterminfo\fP name \fBdl\fP corresponds to
|
|
|
|
the \fItermcap\fP name \fBDL\fP (delete a given number of lines).
|
|
|
|
.bP
|
|
|
|
The \fItermcap\fP name \fBed\fP corresponds to
|
|
|
|
the \fIterminfo\fP name \fBrmdc\fP (end delete mode).
|
|
|
|
.br
|
|
|
|
The \fIterminfo\fP name \fBed\fP corresponds to
|
|
|
|
the \fItermcap\fP name \fBcd\fP (clear to end of screen).
|
|
|
|
.PP
|
|
|
|
The \fBlongname\fR and \fB\-S\fR options, and the parameter-substitution
|
|
|
|
features used in the \fBcup\fR example,
|
|
|
|
were not supported in BSD curses before 4.3reno (1989) or in
|
|
|
|
AT&T/USL curses before SVr4 (1988).
|
|
|
|
.PP
|
|
|
|
IEEE Std 1003.1/The Open Group Base Specifications Issue 7 (POSIX.1-2008)
|
|
|
|
documents only the operands for \fBclear\fP, \fBinit\fP and \fBreset\fP.
|
|
|
|
There are a few interesting observations to make regarding that:
|
|
|
|
.bP
|
|
|
|
In this implementation, \fBclear\fP is part of the \fIcapname\fR support.
|
|
|
|
The others (\fBinit\fP and \fBlongname\fP) do not correspond to terminal
|
|
|
|
capabilities.
|
|
|
|
.bP
|
|
|
|
Other implementations of \fBtput\fP on
|
|
|
|
SVr4-based systems such as Solaris, IRIX64 and HPUX
|
|
|
|
as well as others such as AIX and Tru64
|
|
|
|
provide support for \fIcapname\fR operands.
|
|
|
|
.bP
|
|
|
|
A few platforms such as FreeBSD recognize termcap names rather
|
|
|
|
than terminfo capability names in their respective \fBtput\fP commands.
|
|
|
|
Since 2010, NetBSD's \fBtput\fP uses terminfo names.
|
|
|
|
Before that, it (like FreeBSD) recognized termcap names.
|
|
|
|
.PP
|
|
|
|
Because (apparently) \fIall\fP of the certified Unix systems
|
|
|
|
support the full set of capability names, the reasoning for documenting
|
|
|
|
only a few may not be apparent.
|
|
|
|
.bP
|
|
|
|
X/Open Curses Issue 7 documents \fBtput\fP differently, with \fIcapname\fP
|
|
|
|
and the other features used in this implementation.
|
|
|
|
.bP
|
|
|
|
That is, there are two standards for \fBtput\fP:
|
|
|
|
POSIX (a subset) and X/Open Curses (the full implementation).
|
|
|
|
POSIX documents a subset to avoid the complication of including X/Open Curses
|
|
|
|
and the terminal capabilities database.
|
|
|
|
.bP
|
|
|
|
While it is certainly possible to write a \fBtput\fP program
|
|
|
|
without using curses,
|
|
|
|
none of the systems which have a curses implementation provide
|
|
|
|
a \fBtput\fP utility which does not provide the \fIcapname\fP feature.
|
|
|
|
.PP
|
|
|
|
X/Open Curses Issue 7 (2009) is the first version to document utilities.
|
|
|
|
However that part of X/Open Curses does not follow existing practice
|
|
|
|
(i.e., Unix features documented in SVID 3):
|
|
|
|
.bP
|
|
|
|
It assigns exit code 4 to \*(``invalid operand\*('',
|
|
|
|
which may be the same as \fIunknown capability\fP.
|
|
|
|
For instance, the source code for Solaris' xcurses uses the term
|
|
|
|
\*(``invalid\*('' in this case.
|
|
|
|
.bP
|
|
|
|
It assigns exit code 255 to a numeric variable that is not specified in
|
|
|
|
the terminfo database.
|
|
|
|
That likely is a documentation error,
|
|
|
|
confusing the \fB\-1\fP written to the standard output for an absent
|
|
|
|
or cancelled numeric value versus an (unsigned) exit code.
|
|
|
|
.PP
|
|
|
|
The various Unix systems (AIX, HPUX, Solaris) use the same exit-codes
|
|
|
|
as ncurses.
|
|
|
|
.PP
|
|
|
|
NetBSD curses documents different exit codes which do not correspond
|
|
|
|
to either ncurses or X/Open.
|
2007-01-20 07:32:02 +00:00
|
|
|
.SH SEE ALSO
|
2020-02-07 08:36:41 +00:00
|
|
|
\fB@CLEAR@\fR(\*n),
|
2007-01-20 07:32:02 +00:00
|
|
|
\fBstty\fR(1),
|
2020-02-07 08:36:41 +00:00
|
|
|
\fB@TABS@\fR(\*n),
|
|
|
|
\fB@TSET@\fR(\*n),
|
2021-02-25 17:22:00 +00:00
|
|
|
\fBcurs_termcap\fR(3X),
|
|
|
|
\fBterminfo\fR(5).
|
2007-01-20 07:32:02 +00:00
|
|
|
.PP
|
|
|
|
This describes \fBncurses\fR
|
|
|
|
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
|