| .\"*************************************************************************** |
| .\" Copyright 2018-2019,2020 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.14 2020/02/02 23:34:34 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\fR, |
| \fBCOLOR_PAIRS\fR, |
| \fBCOLS\fR, |
| \fBESCDELAY\fR, |
| \fBLINES\fR, |
| \fBTABSIZE\fR, |
| \fBcurscr\fR, |
| \fBnewscr\fR, |
| \fBstdscr\fR |
| \- \fBcurses\fR global variables |
| .ad |
| .hy |
| .SH SYNOPSIS |
| .nf |
| \fB#include <curses.h>\fR |
| .PP |
| \fBint COLOR_PAIRS;\fR |
| .br |
| \fBint COLORS;\fR |
| .br |
| \fBint COLS;\fR |
| .br |
| \fBint ESCDELAY;\fR |
| .br |
| \fBint LINES;\fR |
| .br |
| \fBint TABSIZE;\fR |
| .br |
| \fBWINDOW * curscr;\fR |
| .br |
| \fBWINDOW * newscr;\fR |
| .br |
| \fBWINDOW * stdscr;\fR |
| .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\fR(3X) and \fBcurs_opaque\fR(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 curs_addch(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\fR(3X) and |
| \fBcurs_outopts\fR(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\fR(3X), |
| \fBcurs_refresh\fR(3X) and |
| \fBcurs_outopts\fR(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\fR(3X), |
| or \fBnewterm\fR(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\fR(3X), |
| \fBcurs_opaque\fR(3X), |
| \fBcurs_terminfo\fR(3X), |
| \fBcurs_threads\fR(3X), |
| \fBterm_variables\fR(3X), |
| \fBterminfo\fR(\*n). |