.\"***************************************************************************
.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
.\" Copyright 2010-2015,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            *
.\" "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: curs_variables.3x,v 1.17 2021/12/25 21:49:32 tom Exp $
.TH curs_variables 3X ""
.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
..
.ds n 5
.na
.hy 0
.SH NAME
\fBCOLORS\fP,
\fBCOLOR_PAIRS\fP,
\fBCOLS\fP,
\fBESCDELAY\fP,
\fBLINES\fP,
\fBTABSIZE\fP,
\fBcurscr\fP,
\fBnewscr\fP,
\fBstdscr\fP
\- \fBcurses\fP global variables
.ad
.hy
.SH SYNOPSIS
.nf
\fB#include <curses.h>\fP
.PP
\fBint COLOR_PAIRS;\fP
.br
\fBint COLORS;\fP
.br
\fBint COLS;\fP
.br
\fBint ESCDELAY;\fP
.br
\fBint LINES;\fP
.br
\fBint TABSIZE;\fP
.br
\fBWINDOW * curscr;\fP
.br
\fBWINDOW * newscr;\fP
.br
\fBWINDOW * stdscr;\fP
.fi
.SH DESCRIPTION
This page summarizes variables provided by the \fBcurses\fP library.
A more complete description is given in the \fBcurses\fP(3X) manual page.
.PP
Depending on the configuration, these may be actual variables,
or macros (see \fBcurs_threads\fP(3X) and \fBcurs_opaque\fP(3X))
which provide read-only access to \fIcurses\fP's state.
In either case, applications should treat them as read-only to avoid
confusing the library.
.SS COLOR_PAIRS
After initializing curses, this variable contains the number of color pairs
which the terminal can support.
Usually the number of color pairs will be the product \fBCOLORS\fP*\fBCOLORS\fP,
however this is not always true:
.bP
a few terminals use HLS colors, which do not follow this rule
.bP
terminals supporting a large number of colors are limited by the number
of color pairs that can be represented in a \fIsigned short\fP value.
.SS COLORS
After initializing curses, this variable contains the number of colors
which the terminal can support.
.SS COLS
After initializing curses, this variable contains the width of the screen,
i.e., the number of columns.
.SS ESCDELAY
This variable holds the number of milliseconds to wait after reading an
escape character,
to distinguish between an individual escape character entered on the
keyboard from escape sequences sent by cursor- and function-keys
(see curses(3X)).
.SS LINES
After initializing curses, this variable contains the height of the screen,
i.e., the number of lines.
.SS TABSIZE
This variable holds the number of columns used by the \fIcurses\fP library
when converting a tab character to spaces as it adds the tab to a window
(see \fBcurs_addch\fP(3X).
.SS The Current Screen
This implementation of curses uses a special window \fBcurscr\fP to
record its updates to the terminal screen.
.PP
This is referred to as the \*(``physical screen\*('' in the
\fBcurs_refresh\fP(3X) and
\fBcurs_outopts\fP(3X) manual pages.
.SS The New Screen
This implementation of curses uses a special window \fBnewscr\fP to
hold updates to the terminal screen before applying them to \fBcurscr\fP.
.PP
This is referred to as the \*(``virtual screen\*('' in the
\fBcurs_kernel\fP(3X),
\fBcurs_refresh\fP(3X) and
\fBcurs_outopts\fP(3X) manual pages.
.SS The Standard Screen
Upon initializing curses,
a default window called \fBstdscr\fP,
which is the size of the terminal screen, is created.
Many curses functions use this window.
.SH NOTES
The curses library is initialized using either \fBinitscr\fP(3X),
or \fBnewterm\fP(3X).
.PP
If \fBcurses\fP is configured to use separate curses/terminfo libraries,
most of these variables reside in the curses library.
.SH PORTABILITY
\fBTABSIZE\fP is a feature of SVr4 curses
which is not documented by X/Open curses.
.bP
In SVr4 curses, \fBTABSIZE\fP is initially set from the terminal description's
\fBinit_tabs\fP capability.
After that, it can be altered by the applications using SVr4 curses.
.IP
SVr4 curses uses the current value of \fBTABSIZE\fP to
compute the position of tabstops for updating both
the virtual screen with \fBaddch\fP(3X) as well as
the physical screen with \fBmvcur\fP(3X).
.bP
This implementation uses the current value of \fBTABSIZE\fP only for
updating the virtual screen.
It uses the terminal description's \fBit\fP (\fBinit_tabs\fP) capability for
computing hardware tabs (i.e., tab stops on the physical screen).
.bP
Other implementations differ.
For instance, NetBSD curses allows \fBTABSIZE\fP to be set through
an environment variable.
This implementation does not.
.IP
NetBSD curses does not support hardware tabs;
it uses the \fBinit_tabs\fP capability and the \fBTABSIZE\fP variable
only for updating the virtual screen.
.PP
\fBESCDELAY\fP is an extension in AIX curses:
.bP
In AIX, the units for \fBESCDELAY\fP are \fIfifths\fP of a millisecond.
.bP
The default value for AIX's \fBESCDELAY\fP is 0.1 seconds.
.bP
AIX also enforces a limit of 10,000 seconds for \fBESCDELAY\fP;
this implementation currently has no upper limit.
.PP
This implementation has long used \fBESCDELAY\fP with units of milliseconds,
making it impossible to be completely compatible with AIX.
Likewise, most users have either decided to override the value,
or rely upon its default value.
.SH SEE ALSO
\fBcurses\fP(3X),
\fBcurs_opaque\fP(3X),
\fBcurs_terminfo\fP(3X),
\fBcurs_threads\fP(3X),
\fBterm_variables\fP(3X),
\fBterminfo\fP(\*n).
