Provided by: ncurses-doc_6.4+20240113-1ubuntu2_all bug

NAME

       bool,  chtype,  cchar_t,  attr_t,  SCREEN,  WINDOW, TRUE, FALSE, ERR, OK, curscr, newscr, stdscr, COLORS,
       COLOR_PAIRS, COLS, LINES, ESCDELAY, TABSIZE - curses data types, constants, and global variables

SYNOPSIS

       #include <curses.h>

       /* data types */
       typedef /* ... */ bool;
       typedef /* ... */ chtype;
       typedef /* ... */ cchar_t;
       typedef /* ... */ attr_t;
       typedef /* ... */ SCREEN;
       typedef /* ... */ WINDOW;

       /* constants */
       const bool TRUE;
       const bool FALSE;

       const /* ... */ ERR;
       const /* ... */ OK;

       /* variables */
       int COLORS;
       int COLOR_PAIRS;
       int COLS;
       int LINES;
       WINDOW * curscr;
       WINDOW * stdscr;

       /* extensions */
       int ESCDELAY;
       int TABSIZE;
       WINDOW * newscr;

DESCRIPTION

       This page summarizes data types, constants, and variables provided by the curses library.  Locate further
       discussion in ncurses(3NCURSES).

       Depending   on   ncurses's   build-time   configuration,   the  variables  may  instead  be  macros  (see
       threads(3NCURSES) and opaque(3NCURSES)) that provide read-only access to the library's state.  In  either
       case, applications should treat them as read-only to avoid confusing the library.

CONSTANTS

   TRUE, FALSE
       The curses library defines TRUE and FALSE to represent the values of the Boolean data type.

   ERR, OK
       curses  and  terminfo  routines  frequently  return these constant integral values indicating failure and
       success, respectively.

PREDEFINED TYPES

   bool
       X/Open Issue 4 curses (1996) preceded the ISO C99 and ISO C++98 standards, each of which also  defined  a
       Boolean data type.  The curses library requires an integral type bool.

       ncurses' configure script attempts to discover the data type used by the system's C and C++ compilers, to
       reuse for the curses bool.

   chtype
       The chtype integral type combines a (“narrow”, 8-bit) character with attributes encoding the  character's
       rendition,  such  as  the  styling  of  its  typeface  and/or foreground and background colors.  See, for
       example, addch(3NCURSES), attron(3NCURSES), and inch(3NCURSES).

   cchar_t, attr_t
       chtype is too small for the standard C library's wide-character type, wchar_t.  cchar_t is  a  type  that
       can  accommodate  an  attr_t and enough wide characters to store what Unicode terms a grapheme cluster (a
       “user-perceived character” [UAX #29], which may nevertheless require several character encoding units  to
       represent).   attr_t  is  an  integral  type  storing “wide” attributes that apply to cchar_ts.  See, for
       example, add_wch(3NCURSES), attr_on(3NCURSES), and in_wch(3NCURSES).

   SCREEN
       curses manages a terminal device with this structure type; see initscr(3NCURSES).

   WINDOW
       curses represents rectangular portions of the  terminal  screen  with  the  WINDOW  structure  type;  see
       subsection “Overview” of ncurses(3NCURSES).

VARIABLES

   curscr, stdscr, newscr
       The  library records updates to the terminal screen in a window named curscr.  This object is referred to
       as the “physical screen” in refresh(3NCURSES) and outopts(3NCURSES).

       ncurses collects pending updates to the terminal screen  in  a  window  named  newscr.   This  object  is
       referred  to  as  the “virtual screen” in the kernel(3NCURSES), refresh(3NCURSES), and outopts(3NCURSES).
       When the screen  is  refreshed,  curses  determines  a  minimal  set  of  updates  using  the  terminal's
       capabilities to make curscr look like newscr.

       Once curses is initialized, it creates a window named stdscr.  It is the same size as the terminal screen
       and is the default window used by routines that do not take a parameter  identifying  one.   Many  curses
       functions use this window.

   COLORS
       Once  curses  is  initialized,  COLORS  contains  the  number  of  colors  supported by the terminal; see
       color(3NCURSES).

   COLOR_PAIRS
       Once curses is initialized, COLOR_PAIRS contains the number of color pairs supported by the terminal; see
       color(3NCURSES).

   COLS, LINES
       Once  curses  is  initialized,  COLS  and LINES contain the screen's width and height in character cells,
       respectively; that is, the number of columns and lines.

   ESCDELAY
       For curses to distinguish an escape character corresponding to a user's press of an “Escape” key  on  the
       input  device  from  one  included  in  a control sequence used by a cursor movement or function key, the
       library waits to see if another key event occurs  after  the  escape  character.   ESCDELAY  stores  this
       interval in milliseconds.

   TABSIZE
       The  curses  library  converts a tab character to this number of spaces as it adds a tab to a window; see
       addch(3NCURSES).

NOTES

       Either initscr(3NCURSES) or newterm(3NCURSES) initializes curses.

       If ncurses is configured to provide separate curses and  terminfo  libraries,  most  of  these  variables
       reside in the curses library.

PORTABILITY

       The  X/Open  Curses standard documents all of the foregoing types and symbols except for newscr, TABSIZE,
       and ESCDELAY.

       X/Open Curses describes curscr only as “an internal data structure”; SVr4 gave more details,  noting  its
       use  “for certain low-level operations like clearing and redrawing a screen containing garbage”.  Neither
       specified its interaction with the rest of the interface beyond use as an argument  to  clearok(3NCURSES)
       and wrefresh(3NCURSES).

       newscr  is  a  feature  of  SVr4  curses.   When  refreshing the screen, it is used as a working area for
       combining  the  standard  window  stdscr  with  any  others  the  application  may  have   created   with
       newwin(3NCURSES).  When the update of newscr is complete, curses modifies curscr to match newscr.

       TABSIZE is a feature of SVr4 curses.

       •   SVr4 initially sets TABSIZE from the terminal description's init_tabs capability.  After that, it can
           be altered by applications using SVr4 curses.

       •   SVr4 curses uses the value of TABSIZE to compute the position of tab stops  when  updating  both  the
           virtual screen with addch(3NCURSES) and the physical screen with mvcur(3NCURSES).

       •   ncurses  uses  the  value  of  TABSIZE  only  to  update  the  virtual  screen.  It uses the terminal
           description's “it” (init_tabs) capability for computing hardware tabs (that  is,  tab  stops  on  the
           physical screen).

       •   Other  implementations  differ.   For  instance,  NetBSD  curses  allows TABSIZE to be set through an
           environment variable.  ncurses does not.

           NetBSD curses does not support hardware tabs; it  uses  the  init_tabs  capability  and  the  TABSIZE
           variable only for updating the virtual screen.

       ESCDELAY is a feature of AIX curses.

       •   In AIX, the units for ESCDELAY are fifths of milliseconds.

       •   The default value for AIX's ESCDELAY equals 0.1 seconds.

       •   AIX also enforces a limit of 10,000 seconds for ESCDELAY; ncurses does not enforce any upper limit.

       ncurses  has  long  used  ESCDELAY  with  units  of  milliseconds,  making it impossible to be completely
       compatible with AIX.  Consequently, most users have decided either to override the value, or to rely upon
       its default.

SEE ALSO

       ncurses(3NCURSES),     color(3NCURSES),    opaque(3NCURSES),    terminfo(3NCURSES),    threads(3NCURSES),
       terminfo_variables(3NCURSES), terminfo(5)

       [UAX #29] “Unicode Standard Annex #29: Unicode Text Segmentation”; <https://unicode.org/reports/tr29/>