# curs_variables

## NAME



           **COLORS** , **COLOR_PAIRS** , **COLS** , **ESCDELAY** , **LINES** , **TABSIZE** , **curscr** ,
           **newscr** , **stdscr** - **curses** global variables
    


## SYNOPSIS



           **#include <curses.h>**
    
           **int COLOR_PAIRS;**
           **int COLORS;**
           **int COLS;**
           **int ESCDELAY;**
           **int LINES;**
           **int TABSIZE;**
           **WINDOW * curscr;**
           **WINDOW * newscr;**
           **WINDOW * stdscr;**
    


## DESCRIPTION



           This  page summarizes variables provided by the **curses** library.  A
           more complete description is given in the **curses**(3X) manual page.
    
           Depending on the configuration, these may be actual variables,  or
           macros  (see  **curs_threads**(3X)  and **curs_opaque**(3X)) which provide
           read-only access to _curses_ 's state.  In either case,  applications
           should treat them as read-only to avoid confusing the library.
    
       **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 **COLORS** * **COLORS** , however this is not
           always true:
    
           •   a few terminals use HLS colors, which do not follow this rule
    
           •   terminals supporting a large number of colors are limited by
               the number of color pairs that can be represented in a _signed_
               _short_ value.
    
       **COLORS**
           After initializing curses, this variable contains the number of
           colors which the terminal can support.
    
       **COLS**
           After initializing curses, this variable contains the width of the
           screen, i.e., the number of columns.
    
       **ESCDELAY**
           This variable holds the number of milliseconds to wait after read‐
           ing an escape character, to distinguish between an individual es‐
           cape character entered on the keyboard from escape sequences sent
           by cursor- and function-keys (see curses(3X)).
    
       **LINES**
           After initializing curses, this variable contains the height of
           the screen, i.e., the number of lines.
    
       **TABSIZE**
           This variable holds the number of columns used by the _curses_ li‐
           brary when converting a tab character to spaces as it adds the tab
           to a window (see **curs_addch**(3X).
    
       **The Current Screen**
           This implementation of curses uses a special window **curscr** to
           record its updates to the terminal screen.
    
           This is referred to as the “physical screen” in the **curs_re‐**
           **fresh**(3X) and **curs_outopts**(3X) manual pages.
    
       **The New Screen**
           This implementation of curses uses a special window **newscr** to hold
           updates to the terminal screen before applying them to **curscr**.
    
           This is referred to as the “virtual screen” in the **curs_ker‐**
           **nel**(3X), **curs_refresh**(3X) and **curs_outopts**(3X) manual pages.
    
       **The Standard Screen**
           Upon initializing curses, a default window called **stdscr** , which is
           the size of the terminal screen, is created.  Many curses func‐
           tions use this window.
    


## NOTES



           The curses library is initialized using either **initscr**(3X), or
           **newterm**(3X).
    
           If **curses** is configured to use separate curses/terminfo libraries,
           most of these variables reside in the curses library.
    


## PORTABILITY



           **TABSIZE** is a feature of SVr4 curses which is not documented by
           X/Open curses.
    
           •   In SVr4 curses, **TABSIZE** is initially set from the terminal de‐
               scription's **init_tabs** capability.  After that, it can be al‐
               tered by the applications using SVr4 curses.
    
               SVr4 curses uses the current value of **TABSIZE** to compute the
               position of tabstops for updating both the virtual screen with
               **addch**(3X) as well as the physical screen with **mvcur**(3X).
    
           •   This implementation uses the current value of **TABSIZE** only for
               updating the virtual screen.  It uses the terminal descrip‐
               tion's **it**(**init_tabs**) capability for computing hardware tabs
               (i.e., tab stops on the physical screen).
    
           •   Other implementations differ.  For instance, NetBSD curses al‐
               lows **TABSIZE** to be set through an environment variable.  This
               implementation does not.
    
               NetBSD curses does not support hardware tabs; it uses the
               **init_tabs** capability and the **TABSIZE** variable only for updat‐
               ing the virtual screen.
    
           **ESCDELAY** is an extension in AIX curses:
    
           •   In AIX, the units for **ESCDELAY** are _fifths_ of a millisecond.
    
           •   The default value for AIX's **ESCDELAY** is 0.1 seconds.
    
           •   AIX also enforces a limit of 10,000 seconds for **ESCDELAY** ; this
               implementation currently has no upper limit.
    
           This implementation has long used **ESCDELAY** with units of millisec‐
           onds, 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.
    


* * *