ncurses 6.2 - patch 20200425
[ncurses.git] / doc / html / man / curs_variables.3x.html
1 <!-- 
2   ****************************************************************************
3   * Copyright 2018-2019,2020 Thomas E. Dickey                                *
4   * Copyright 2010-2015,2017 Free Software Foundation, Inc.                  *
5   *                                                                          *
6   * Permission is hereby granted, free of charge, to any person obtaining a  *
7   * copy of this software and associated documentation files (the            *
8   * "Software"), to deal in the Software without restriction, including      *
9   * without limitation the rights to use, copy, modify, merge, publish,      *
10   * distribute, distribute with modifications, sublicense, and/or sell       *
11   * copies of the Software, and to permit persons to whom the Software is    *
12   * furnished to do so, subject to the following conditions:                 *
13   *                                                                          *
14   * The above copyright notice and this permission notice shall be included  *
15   * in all copies or substantial portions of the Software.                   *
16   *                                                                          *
17   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
18   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
19   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
20   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
21   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
22   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
23   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
24   *                                                                          *
25   * Except as contained in this notice, the name(s) of the above copyright   *
26   * holders shall not be used in advertising or otherwise to promote the     *
27   * sale, use or other dealings in this Software without prior written       *
28   * authorization.                                                           *
29   ****************************************************************************
30   * @Id: curs_variables.3x,v 1.15 2020/04/18 14:29:07 tom Exp @
31 -->
32 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
33 <HTML>
34 <HEAD>
35 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
36 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
37 <TITLE>curs_variables 3x</TITLE>
38 <link rel="author" href="mailto:bug-ncurses@gnu.org">
39 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
40 </HEAD>
41 <BODY>
42 <H1 class="no-header">curs_variables 3x</H1>
43 <PRE>
44 <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>                                          <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
45
46
47
48
49 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
50        <STRONG>COLORS</STRONG>, <STRONG>COLOR_PAIRS</STRONG>, <STRONG>COLS</STRONG>, <STRONG>ESCDELAY</STRONG>, <STRONG>LINES</STRONG>, <STRONG>TABSIZE</STRONG>, <STRONG>curscr</STRONG>, <STRONG>newscr</STRONG>,
51        <STRONG>stdscr</STRONG> - <STRONG>curses</STRONG> global variables
52
53
54 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
55        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
56
57        <STRONG>int</STRONG> <STRONG>COLOR_PAIRS;</STRONG>
58        <STRONG>int</STRONG> <STRONG>COLORS;</STRONG>
59        <STRONG>int</STRONG> <STRONG>COLS;</STRONG>
60        <STRONG>int</STRONG> <STRONG>ESCDELAY;</STRONG>
61        <STRONG>int</STRONG> <STRONG>LINES;</STRONG>
62        <STRONG>int</STRONG> <STRONG>TABSIZE;</STRONG>
63        <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>curscr;</STRONG>
64        <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>newscr;</STRONG>
65        <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>stdscr;</STRONG>
66
67
68 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
69        This page summarizes variables provided by the <STRONG>curses</STRONG> library.  A  more
70        complete description is given in the <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> manual page.
71
72        Depending  on  the  configuration,  these  may  be actual variables, or
73        macros (see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> and <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>) which  provide  read-
74        only  access  to  <EM>curses</EM>'s  state.  In either case, applications should
75        treat them as read-only to avoid confusing the library.
76
77
78 </PRE><H3><a name="h3-COLOR_PAIRS">COLOR_PAIRS</a></H3><PRE>
79        After initializing curses, this variable contains the number  of  color
80        pairs  which  the  terminal  can  support.  Usually the number of color
81        pairs will be the product <STRONG>COLORS</STRONG>*<STRONG>COLORS</STRONG>, however  this  is  not  always
82        true:
83
84        <STRONG>o</STRONG>   a few terminals use HLS colors, which do not follow this rule
85
86        <STRONG>o</STRONG>   terminals  supporting  a  large number of colors are limited by the
87            number of color pairs that can be represented  in  a  <EM>signed</EM>  <EM>short</EM>
88            value.
89
90
91 </PRE><H3><a name="h3-COLORS">COLORS</a></H3><PRE>
92        After  initializing curses, this variable contains the number of colors
93        which the terminal can support.
94
95
96 </PRE><H3><a name="h3-COLS">COLS</a></H3><PRE>
97        After initializing curses, this variable  contains  the  width  of  the
98        screen, i.e., the number of columns.
99
100
101 </PRE><H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE>
102        This variable holds the number of milliseconds to wait after reading an
103        escape character, to distinguish between an individual escape character
104        entered on the keyboard from escape sequences sent by cursor- and func-
105        tion-keys (see <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>).
106
107
108 </PRE><H3><a name="h3-LINES">LINES</a></H3><PRE>
109        After initializing curses, this variable contains  the  height  of  the
110        screen, i.e., the number of lines.
111
112
113 </PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
114        This  variable  holds  the number of columns used by the <EM>curses</EM> library
115        when converting a tab character to spaces as it adds the tab to a  win-
116        dow (see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>.
117
118
119 </PRE><H3><a name="h3-The-Current-Screen">The Current Screen</a></H3><PRE>
120        This  implementation  of  curses uses a special window <STRONG>curscr</STRONG> to record
121        its updates to the terminal screen.
122
123        This is referred to as the "physical screen"  in  the  <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
124        and <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> manual pages.
125
126
127 </PRE><H3><a name="h3-The-New-Screen">The New Screen</a></H3><PRE>
128        This  implementation of curses uses a special window <STRONG>newscr</STRONG> to hold up-
129        dates to the terminal screen before applying them to <STRONG>curscr</STRONG>.
130
131        This is referred to as the "virtual  screen"  in  the  <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,
132        <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> and <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> manual pages.
133
134
135 </PRE><H3><a name="h3-The-Standard-Screen">The Standard Screen</a></H3><PRE>
136        Upon  initializing curses, a default window called <STRONG>stdscr</STRONG>, which is the
137        size of the terminal screen, is created.   Many  curses  functions  use
138        this window.
139
140
141 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
142        The   curses  library  is  initialized  using  either  <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>,  or
143        <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>.
144
145        If <STRONG>curses</STRONG> is configured to use separate curses/terminfo libraries, most
146        of these variables reside in the curses library.
147
148
149 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
150        <STRONG>TABSIZE</STRONG>  is  a feature of SVr4 curses which is not documented by X/Open
151        curses.
152
153        <STRONG>o</STRONG>   In SVr4 curses, <STRONG>TABSIZE</STRONG> is initially set from the terminal descrip-
154            tion's  <STRONG>init_tabs</STRONG> capability.  After that, it can be altered by the
155            applications using SVr4 curses.
156
157            SVr4 curses uses the current value of <STRONG>TABSIZE</STRONG> to compute the  posi-
158            tion  of  tabstops  for  updating both the virtual screen with <STRONG>add-</STRONG>
159            <STRONG><A HREF="addch.3x.html">ch(3x)</A></STRONG> as well as the physical screen with <STRONG><A HREF="curs_terminfo.3x.html">mvcur(3x)</A></STRONG>.
160
161        <STRONG>o</STRONG>   This implementation uses the current value of <STRONG>TABSIZE</STRONG> only for  up-
162            dating  the  virtual screen.  It uses the terminal description's <STRONG>it</STRONG>
163            (<STRONG>init_tabs</STRONG>) capability for computing hardware tabs (i.e., tab stops
164            on the physical screen).
165
166        <STRONG>o</STRONG>   Other  implementations  differ.  For instance, NetBSD curses allows
167            <STRONG>TABSIZE</STRONG> to be set through an environment variable.  This  implemen-
168            tation does not.
169
170            NetBSD curses does not support hardware tabs; it uses the <STRONG>init_tabs</STRONG>
171            capability and the <STRONG>TABSIZE</STRONG> variable only for updating  the  virtual
172            screen.
173
174        <STRONG>ESCDELAY</STRONG> is an extension in AIX curses:
175
176        <STRONG>o</STRONG>   In AIX, the units for <STRONG>ESCDELAY</STRONG> are <EM>fifths</EM> of a millisecond.
177
178        <STRONG>o</STRONG>   The default value for AIX's <STRONG>ESCDELAY</STRONG> is 0.1 seconds.
179
180        <STRONG>o</STRONG>   AIX  also enforces a limit of 10,000 seconds for <STRONG>ESCDELAY</STRONG>; this im-
181            plementation currently has no upper limit.
182
183        This implementation has long used <STRONG>ESCDELAY</STRONG> with units of  milliseconds,
184        making  it  impossible to be completely compatible with AIX.  Likewise,
185        most users have either decided to override the value, or rely upon  its
186        default value.
187
188
189 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
190        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>,   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,   <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>,
191        <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
192
193
194
195                                                             <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
196 </PRE>
197 <div class="nav">
198 <ul>
199 <li><a href="#h2-NAME">NAME</a></li>
200 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
201 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
202 <ul>
203 <li><a href="#h3-COLOR_PAIRS">COLOR_PAIRS</a></li>
204 <li><a href="#h3-COLORS">COLORS</a></li>
205 <li><a href="#h3-COLS">COLS</a></li>
206 <li><a href="#h3-ESCDELAY">ESCDELAY</a></li>
207 <li><a href="#h3-LINES">LINES</a></li>
208 <li><a href="#h3-TABSIZE">TABSIZE</a></li>
209 <li><a href="#h3-The-Current-Screen">The Current Screen</a></li>
210 <li><a href="#h3-The-New-Screen">The New Screen</a></li>
211 <li><a href="#h3-The-Standard-Screen">The Standard Screen</a></li>
212 </ul>
213 </li>
214 <li><a href="#h2-NOTES">NOTES</a></li>
215 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
216 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
217 </ul>
218 </div>
219 </BODY>
220 </HTML>