X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fncurses.3x.html;h=e3424758997795e29f4b7b609a7ecab78e0cb0cb;hp=7569e4dfe2a2314367b79ba2c257f5e32ba258e5;hb=HEAD;hpb=b0b1980be11bba618d84beb8b30ac94e2c820602 diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html index 7569e4df..9b061acb 100644 --- a/doc/html/man/ncurses.3x.html +++ b/doc/html/man/ncurses.3x.html @@ -1,8 +1,8 @@ - - + -ncurses 3x - - + + +ncurses 3x 2024-04-27 ncurses 6.5 Library calls + + -

ncurses 3x

-
+

ncurses 3x 2024-04-27 ncurses 6.5 Library calls

-
-ncurses(3x)                                                 ncurses(3x)
+ncurses(3x)                      Library calls                     ncurses(3x)
 
 
 
 
-
-

NAME

-       ncurses - CRT screen handling and optimization package
+

NAME

+       ncurses - character-cell terminal interface with optimized output
 
 
-
-

SYNOPSIS

+

SYNOPSIS

        #include <curses.h>
 
 
-
-

DESCRIPTION

-       The  ncurses  library  routines  give the user a terminal-
-       independent method of updating character screens with rea-
-       sonable optimization.  This implementation is "new curses"
-       (ncurses) and is the approved replacement for 4.4BSD clas-
-       sic  curses,  which has been discontinued.  This describes
-       ncurses version 5.9 (patch 20141220).
-
-       The ncurses library emulates the curses library of  System
-       V  Release  4  UNIX,  and  XPG4 (X/Open Portability Guide)
-       curses (also known as XSI curses).  XSI stands for  X/Open
-       System  Interfaces  Extension.   The  ncurses  library  is
-       freely redistributable in source form.   Differences  from
-       the  SVr4  curses  are summarized under the EXTENSIONS and
-       PORTABILITY sections below and described in detail in  the
-       respective  EXTENSIONS,  PORTABILITY  and BUGS sections of
-       individual man pages.
-
-       The ncurses library also provides many useful  extensions,
-       i.e.,  features  which  cannot  be implemented by a simple
-       add-on library but which require access to  the  internals
-       of the library.
-
-       A  program  using  these  routines must be linked with the
-       -lncurses option, or (if it has been generated)  with  the
-       debugging  library  -lncurses_g.   (Your system integrator
-       may also have installed these libraries  under  the  names
-       -lcurses and -lcurses_g.)  The ncurses_g library generates
-       trace logs (in a file called 'trace' in the current direc-
-       tory)  that describe curses actions.  See also the section
-       on ALTERNATE CONFIGURATIONS.
-
-       The ncurses package supports: overall screen,  window  and
-       pad manipulation; output to windows and pads; reading ter-
-       minal input; control over terminal and  curses  input  and
-       output  options; environment query routines; color manipu-
-       lation; use of soft label keys; terminfo capabilities; and
-       access to low-level terminal-manipulation routines.
-
-       The  library uses the locale which the calling program has
-       initialized.  That is normally done with setlocale:
-
-             setlocale(LC_ALL, "");
-
-       If the locale is not initialized, the library assumes that
-       characters  are  printable  as in ISO-8859-1, to work with
-       certain legacy programs.  You should initialize the locale
-       and  not  rely on specific details of the library when the
-       locale has not been setup.
-
-       The function initscr or newterm must be called to initial-
-       ize the library before any of the other routines that deal
-       with windows and screens are  used.   The  routine  endwin
-       must be called before exiting.
-
-       To  get  character-at-a-time  input  without echoing (most
-       interactive, screen oriented programs want this), the fol-
-       lowing sequence should be used:
-
-             initscr(); cbreak(); noecho();
-
-       Most programs would additionally use the sequence:
-
-             nonl();
-             intrflush(stdscr, FALSE);
-             keypad(stdscr, TRUE);
-
-       Before  a curses program is run, the tab stops of the ter-
-       minal should be set and  its  initialization  strings,  if
-       defined,  must  be  output.  This can be done by executing
-       the tput init command after the shell environment variable
-       TERM  has  been  exported.  tset(1) is usually responsible
-       for doing this.  [See terminfo(5) for further details.]
-
-       The ncurses library permits manipulation  of  data  struc-
-       tures,  called  windows,  which  can be thought of as two-
-       dimensional arrays of characters representing all or  part
-       of a CRT screen.  A default window called stdscr, which is
-       the size of the terminal screen, is supplied.  Others  may
-       be created with newwin.
-
-       Note  that  curses  does  not  handle overlapping windows,
-       that's done by the panel(3x) library.  This means that you
-       can either use stdscr or divide the screen into tiled win-
-       dows and not using stdscr at all.   Mixing  the  two  will
-       result in unpredictable, and undesired, effects.
-
-       Windows are referred to by variables declared as WINDOW *.
-       These  data  structures  are  manipulated  with   routines
-       described  here and elsewhere in the ncurses manual pages.
-       Among those, the most basic routines are move  and  addch.
-       More  general versions of these routines are included with
-       names beginning with w, allowing the  user  to  specify  a
-       window.  The routines not beginning with w affect stdscr.
-
-       After  using  routines  to manipulate a window, refresh is
-       called, telling curses to make the user's CRT screen  look
-       like  stdscr.   The characters in a window are actually of
-       type chtype, (character and attribute data) so that  other
-       information  about  the  character may also be stored with
-       each character.
-
-       Special windows  called  pads  may  also  be  manipulated.
-       These are windows which are not constrained to the size of
-       the screen and whose contents need not be completely  dis-
-       played.  See curs_pad(3x) for more information.
-
-       In  addition  to  drawing  characters on the screen, video
-       attributes and colors may be supported, causing the  char-
-       acters  to show up in such modes as underlined, in reverse
-       video, or in color on terminals that support such  display
-       enhancements.  Line drawing characters may be specified to
-       be output.  On input, curses is  also  able  to  translate
-       arrow  and  function  keys  that transmit escape sequences
-       into single values.  The video  attributes,  line  drawing
-       characters,   and  input  values  use  names,  defined  in
-       <curses.h>, such as A_REVERSE, ACS_HLINE, and KEY_LEFT.
-
-       If the environment variables LINES and COLUMNS are set, or
-       if  the program is executing in a window environment, line
-       and column information in the  environment  will  override
-       information read by terminfo.  This would affect a program
-       running in an AT&T 630 layer, for example, where the  size
-       of a screen is changeable (see ENVIRONMENT).
-
-       If  the environment variable TERMINFO is defined, any pro-
-       gram using curses checks for a local  terminal  definition
-       before  checking  in  the standard place.  For example, if
-       TERM is set to att4424, then the compiled terminal defini-
-       tion is found in
-
-             /usr/share/terminfo/a/att4424.
-
-       (The a is copied from the first letter of att4424 to avoid
-       creation of huge directories.)  However,  if  TERMINFO  is
-       set to $HOME/myterms, curses first checks
-
-             $HOME/myterms/a/att4424,
-
-       and if that fails, it then checks
-
-             /usr/share/terminfo/a/att4424.
-
-       This  is useful for developing experimental definitions or
-       when write permission in /usr/share/terminfo is not avail-
-       able.
-
-       The  integer  variables  LINES  and  COLS  are  defined in
-       <curses.h> and will be filled in by initscr with the  size
-       of the screen.  The constants TRUE and FALSE have the val-
-       ues 1 and 0, respectively.
-
-       The curses routines also  define  the  WINDOW  *  variable
-       curscr which is used for certain low-level operations like
-       clearing and redrawing a screen containing  garbage.   The
-       curscr can be used in only a few routines.
-
-   Routine and Argument Names
-       Many  curses routines have two or more versions.  The rou-
-       tines prefixed with w require a window argument.  The rou-
-       tines prefixed with p require a pad argument.  Those with-
-       out a prefix generally use stdscr.
-
-       The routines prefixed with mv require a y and x coordinate
-       to  move to before performing the appropriate action.  The
-       mv routines imply a call to move before the  call  to  the
-       other  routine.  The coordinate y always refers to the row
-       (of the window), and x always refers to the  column.   The
-       upper left-hand corner is always (0,0), not (1,1).
-
-       The routines prefixed with mvw take both a window argument
-       and x and y coordinates.  The window  argument  is  always
-       specified before the coordinates.
-
-       In  each  case, win is the window affected, and pad is the
-       pad affected; win and pad are always pointers to type WIN-
-       DOW.
-
-       Option setting routines require a Boolean flag bf with the
-       value TRUE or FALSE; bf is always of type bool.   Most  of
-       the  data types used in the library routines, such as WIN-
-       DOW, SCREEN, bool, and chtype are defined  in  <curses.h>.
-       Types  used for the terminfo routines such as TERMINAL are
-       defined in <term.h>.
-
-       This manual page describes functions which may  appear  in
-       any  configuration  of  the library.  There are two common
-       configurations of the library:
-
-              ncurses
-                   the  "normal"  library,  which  handles  8-bit
-                   characters.  The normal (8-bit) library stores
-                   characters combined with attributes in  chtype
-                   data.
-
-                   Attributes  alone (no corresponding character)
-                   may be stored  in  chtype  or  the  equivalent
-                   attr_t  data.   In  either  case,  the data is
-                   stored in something like an integer.
-
-                   Each cell (row and  column)  in  a  WINDOW  is
-                   stored as a chtype.
-
-              ncursesw
-                   the  so-called  "wide"  library, which handles
-                   multibyte  characters  (see  the  section   on
-                   ALTERNATE CONFIGURATIONS).  The "wide" library
-                   includes all of the calls  from  the  "normal"
-                   library.   It  adds about one third more calls
-                   using data types which store multibyte charac-
-                   ters:
-
-                   cchar_t
-                        corresponds  to  chtype.  However it is a
-                        structure, because more  data  is  stored
-                        than  can fit into an integer.  The char-
-                        acters are large enough to require a full
-                        integer  value  -  and  there may be more
-                        than one character per cell.   The  video
-                        attributes  and color are stored in sepa-
-                        rate fields of the structure.
-
-                        Each cell (row and column) in a WINDOW is
-                        stored as a cchar_t.
-
-                   wchar_t
-                        stores  a "wide" character.  Like chtype,
-                        this may be an integer.
-
-                   wint_t
-                        stores a wchar_t or WEOF - not the  same,
-                        though both may have the same size.
-
-                   The  "wide"  library  provides  new  functions
-                   which are analogous to functions in the  "nor-
-                   mal"  library.   There  is a naming convention
-                   which relates many of  the  normal/wide  vari-
-                   ants:  a  "_w" is inserted into the name.  For
-                   example, waddch becomes wadd_wch.
-
-   Routine Name Index
-       The following table lists each curses routine and the name
-       of  the  manual  page  on which it is described.  Routines
-       flagged with `*' are ncurses-specific,  not  described  by
-       XPG4 or present in SVr4.
-
-              curses Routine Name     Manual Page Name
-              --------------------------------------------
-              COLOR_PAIR              curs_color(3x)
-              PAIR_NUMBER             curs_attr(3x)
-              _nc_free_and_exit       curs_memleaks(3x)*
-              _nc_freeall             curs_memleaks(3x)*
-              _nc_tracebits           curs_trace(3x)*
-
-              _traceattr              curs_trace(3x)*
-              _traceattr2             curs_trace(3x)*
-              _tracechar              curs_trace(3x)*
-              _tracechtype            curs_trace(3x)*
-              _tracechtype2           curs_trace(3x)*
-              _tracedump              curs_trace(3x)*
-              _tracef                 curs_trace(3x)*
-              _tracemouse             curs_trace(3x)*
-              add_wch                 curs_add_wch(3x)
-              add_wchnstr             curs_add_wchstr(3x)
-              add_wchstr              curs_add_wchstr(3x)
-              addch                   curs_addch(3x)
-              addchnstr               curs_addchstr(3x)
-              addchstr                curs_addchstr(3x)
-              addnstr                 curs_addstr(3x)
-              addnwstr                curs_addwstr(3x)
-              addstr                  curs_addstr(3x)
-              addwstr                 curs_addwstr(3x)
-              assume_default_colors   default_colors(3x)*
-              attr_get                curs_attr(3x)
-              attr_off                curs_attr(3x)
-              attr_on                 curs_attr(3x)
-              attr_set                curs_attr(3x)
-              attroff                 curs_attr(3x)
-              attron                  curs_attr(3x)
-              attrset                 curs_attr(3x)
-              baudrate                curs_termattrs(3x)
-              beep                    curs_beep(3x)
-              bkgd                    curs_bkgd(3x)
-              bkgdset                 curs_bkgd(3x)
-              bkgrnd                  curs_bkgrnd(3x)
-              bkgrndset               curs_bkgrnd(3x)
-              border                  curs_border(3x)
-              border_set              curs_border_set(3x)
-              box                     curs_border(3x)
-              box_set                 curs_border_set(3x)
-              can_change_color        curs_color(3x)
-              cbreak                  curs_inopts(3x)
-              chgat                   curs_attr(3x)
-              clear                   curs_clear(3x)
-              clearok                 curs_outopts(3x)
-              clrtobot                curs_clear(3x)
-              clrtoeol                curs_clear(3x)
-              color_content           curs_color(3x)
-              color_set               curs_attr(3x)
-              copywin                 curs_overlay(3x)
-              curs_set                curs_kernel(3x)
-              curses_version          curs_extend(3x)*
-              def_prog_mode           curs_kernel(3x)
-              def_shell_mode          curs_kernel(3x)
-              define_key              define_key(3x)*
-              del_curterm             curs_terminfo(3x)
-              delay_output            curs_util(3x)
-              delch                   curs_delch(3x)
-              deleteln                curs_deleteln(3x)
-              delscreen               curs_initscr(3x)
-              delwin                  curs_window(3x)
-              derwin                  curs_window(3x)
-              doupdate                curs_refresh(3x)
-              dupwin                  curs_window(3x)
-              echo                    curs_inopts(3x)
-              echo_wchar              curs_add_wch(3x)
-              echochar                curs_addch(3x)
-              endwin                  curs_initscr(3x)
-              erase                   curs_clear(3x)
-
-              erasechar               curs_termattrs(3x)
-              erasewchar              curs_termattrs(3x)
-              filter                  curs_util(3x)
-              flash                   curs_beep(3x)
-              flushinp                curs_util(3x)
-              get_wch                 curs_get_wch(3x)
-              get_wstr                curs_get_wstr(3x)
-              getattrs                curs_attr(3x)
-              getbegx                 curs_legacy(3x)*
-              getbegy                 curs_legacy(3x)*
-              getbegyx                curs_getyx(3x)
-              getbkgd                 curs_bkgd(3x)
-              getbkgrnd               curs_bkgrnd(3x)
-              getcchar                curs_getcchar(3x)
-              getch                   curs_getch(3x)
-              getcurx                 curs_legacy(3x)*
-              getcury                 curs_legacy(3x)*
-              getmaxx                 curs_legacy(3x)*
-              getmaxy                 curs_legacy(3x)*
-              getmaxyx                curs_getyx(3x)
-              getmouse                curs_mouse(3x)*
-              getn_wstr               curs_get_wstr(3x)
-              getnstr                 curs_getstr(3x)
-              getparx                 curs_legacy(3x)*
-              getpary                 curs_legacy(3x)*
-              getparyx                curs_getyx(3x)
-              getstr                  curs_getstr(3x)
-              getsyx                  curs_kernel(3x)
-              getwin                  curs_util(3x)
-              getyx                   curs_getyx(3x)
-              halfdelay               curs_inopts(3x)
-              has_colors              curs_color(3x)
-              has_ic                  curs_termattrs(3x)
-              has_il                  curs_termattrs(3x)
-              has_key                 curs_getch(3x)*
-              hline                   curs_border(3x)
-              hline_set               curs_border_set(3x)
-              idcok                   curs_outopts(3x)
-              idlok                   curs_outopts(3x)
-              immedok                 curs_outopts(3x)
-              in_wch                  curs_in_wch(3x)
-              in_wchnstr              curs_in_wchstr(3x)
-              in_wchstr               curs_in_wchstr(3x)
-              inch                    curs_inch(3x)
-              inchnstr                curs_inchstr(3x)
-              inchstr                 curs_inchstr(3x)
-              init_color              curs_color(3x)
-              init_pair               curs_color(3x)
-              initscr                 curs_initscr(3x)
-              innstr                  curs_instr(3x)
-              innwstr                 curs_inwstr(3x)
-              ins_nwstr               curs_ins_wstr(3x)
-              ins_wch                 curs_ins_wch(3x)
-              ins_wstr                curs_ins_wstr(3x)
-              insch                   curs_insch(3x)
-              insdelln                curs_deleteln(3x)
-              insertln                curs_deleteln(3x)
-              insnstr                 curs_insstr(3x)
-              insstr                  curs_insstr(3x)
-              instr                   curs_instr(3x)
-              intrflush               curs_inopts(3x)
-              inwstr                  curs_inwstr(3x)
-              is_cleared              curs_opaque(3x)*
-              is_idcok                curs_opaque(3x)*
-              is_idlok                curs_opaque(3x)*
-
-              is_immedok              curs_opaque(3x)*
-              is_keypad               curs_opaque(3x)*
-              is_leaveok              curs_opaque(3x)*
-              is_linetouched          curs_touch(3x)
-              is_nodelay              curs_opaque(3x)*
-              is_notimeout            curs_opaque(3x)*
-              is_scrollok             curs_opaque(3x)*
-              is_syncok               curs_opaque(3x)*
-              is_term_resized         resizeterm(3x)*
-              is_wintouched           curs_touch(3x)
-              isendwin                curs_initscr(3x)
-              key_defined             key_defined(3x)*
-              key_name                curs_util(3x)
-              keybound                keybound(3x)*
-              keyname                 curs_util(3x)
-              keyok                   keyok(3x)*
-              keypad                  curs_inopts(3x)
-              killchar                curs_termattrs(3x)
-              killwchar               curs_termattrs(3x)
-              leaveok                 curs_outopts(3x)
-              longname                curs_termattrs(3x)
-              mcprint                 curs_print(3x)*
-              meta                    curs_inopts(3x)
-              mouse_trafo             curs_mouse(3x)*
-              mouseinterval           curs_mouse(3x)*
-              mousemask               curs_mouse(3x)*
-              move                    curs_move(3x)
-              mvadd_wch               curs_add_wch(3x)
-              mvadd_wchnstr           curs_add_wchstr(3x)
-              mvadd_wchstr            curs_add_wchstr(3x)
-              mvaddch                 curs_addch(3x)
-              mvaddchnstr             curs_addchstr(3x)
-              mvaddchstr              curs_addchstr(3x)
-              mvaddnstr               curs_addstr(3x)
-              mvaddnwstr              curs_addwstr(3x)
-              mvaddstr                curs_addstr(3x)
-              mvaddwstr               curs_addwstr(3x)
-              mvchgat                 curs_attr(3x)
-              mvcur                   curs_terminfo(3x)
-              mvdelch                 curs_delch(3x)
-              mvderwin                curs_window(3x)
-              mvget_wch               curs_get_wch(3x)
-              mvget_wstr              curs_get_wstr(3x)
-              mvgetch                 curs_getch(3x)
-              mvgetn_wstr             curs_get_wstr(3x)
-              mvgetnstr               curs_getstr(3x)
-              mvgetstr                curs_getstr(3x)
-              mvhline                 curs_border(3x)
-              mvhline_set             curs_border_set(3x)
-              mvin_wch                curs_in_wch(3x)
-              mvin_wchnstr            curs_in_wchstr(3x)
-              mvin_wchstr             curs_in_wchstr(3x)
-              mvinch                  curs_inch(3x)
-              mvinchnstr              curs_inchstr(3x)
-              mvinchstr               curs_inchstr(3x)
-              mvinnstr                curs_instr(3x)
-              mvinnwstr               curs_inwstr(3x)
-              mvins_nwstr             curs_ins_wstr(3x)
-              mvins_wch               curs_ins_wch(3x)
-              mvins_wstr              curs_ins_wstr(3x)
-              mvinsch                 curs_insch(3x)
-              mvinsnstr               curs_insstr(3x)
-              mvinsstr                curs_insstr(3x)
-              mvinstr                 curs_instr(3x)
-              mvinwstr                curs_inwstr(3x)
-
-              mvprintw                curs_printw(3x)
-              mvscanw                 curs_scanw(3x)
-              mvvline                 curs_border(3x)
-              mvvline_set             curs_border_set(3x)
-              mvwadd_wch              curs_add_wch(3x)
-              mvwadd_wchnstr          curs_add_wchstr(3x)
-              mvwadd_wchstr           curs_add_wchstr(3x)
-              mvwaddch                curs_addch(3x)
-              mvwaddchnstr            curs_addchstr(3x)
-              mvwaddchstr             curs_addchstr(3x)
-              mvwaddnstr              curs_addstr(3x)
-              mvwaddnwstr             curs_addwstr(3x)
-              mvwaddstr               curs_addstr(3x)
-              mvwaddwstr              curs_addwstr(3x)
-              mvwchgat                curs_attr(3x)
-              mvwdelch                curs_delch(3x)
-              mvwget_wch              curs_get_wch(3x)
-              mvwget_wstr             curs_get_wstr(3x)
-              mvwgetch                curs_getch(3x)
-              mvwgetn_wstr            curs_get_wstr(3x)
-              mvwgetnstr              curs_getstr(3x)
-              mvwgetstr               curs_getstr(3x)
-              mvwhline                curs_border(3x)
-              mvwhline_set            curs_border_set(3x)
-              mvwin                   curs_window(3x)
-              mvwin_wch               curs_in_wch(3x)
-              mvwin_wchnstr           curs_in_wchstr(3x)
-              mvwin_wchstr            curs_in_wchstr(3x)
-              mvwinch                 curs_inch(3x)
-              mvwinchnstr             curs_inchstr(3x)
-              mvwinchstr              curs_inchstr(3x)
-              mvwinnstr               curs_instr(3x)
-              mvwinnwstr              curs_inwstr(3x)
-              mvwins_nwstr            curs_ins_wstr(3x)
-              mvwins_wch              curs_ins_wch(3x)
-              mvwins_wstr             curs_ins_wstr(3x)
-              mvwinsch                curs_insch(3x)
-              mvwinsnstr              curs_insstr(3x)
-              mvwinsstr               curs_insstr(3x)
-              mvwinstr                curs_instr(3x)
-              mvwinwstr               curs_inwstr(3x)
-              mvwprintw               curs_printw(3x)
-              mvwscanw                curs_scanw(3x)
-              mvwvline                curs_border(3x)
-              mvwvline_set            curs_border_set(3x)
-              napms                   curs_kernel(3x)
-              newpad                  curs_pad(3x)
-              newterm                 curs_initscr(3x)
-              newwin                  curs_window(3x)
-              nl                      curs_outopts(3x)
-              nocbreak                curs_inopts(3x)
-              nodelay                 curs_inopts(3x)
-              noecho                  curs_inopts(3x)
-              nofilter                curs_util(3x)*
-              nonl                    curs_outopts(3x)
-              noqiflush               curs_inopts(3x)
-              noraw                   curs_inopts(3x)
-              notimeout               curs_inopts(3x)
-              overlay                 curs_overlay(3x)
-              overwrite               curs_overlay(3x)
-              pair_content            curs_color(3x)
-              pechochar               curs_pad(3x)
-              pnoutrefresh            curs_pad(3x)
-              prefresh                curs_pad(3x)
-              printw                  curs_printw(3x)
-
-              putp                    curs_terminfo(3x)
-              putwin                  curs_util(3x)
-              qiflush                 curs_inopts(3x)
-              raw                     curs_inopts(3x)
-              redrawwin               curs_refresh(3x)
-              refresh                 curs_refresh(3x)
-              reset_prog_mode         curs_kernel(3x)
-              reset_shell_mode        curs_kernel(3x)
-              resetty                 curs_kernel(3x)
-              resizeterm              resizeterm(3x)*
-              restartterm             curs_terminfo(3x)
-              ripoffline              curs_kernel(3x)
-              savetty                 curs_kernel(3x)
-              scanw                   curs_scanw(3x)
-              scr_dump                curs_scr_dump(3x)
-              scr_init                curs_scr_dump(3x)
-              scr_restore             curs_scr_dump(3x)
-              scr_set                 curs_scr_dump(3x)
-              scrl                    curs_scroll(3x)
-              scroll                  curs_scroll(3x)
-              scrollok                curs_outopts(3x)
-              set_curterm             curs_terminfo(3x)
-              set_term                curs_initscr(3x)
-              setcchar                curs_getcchar(3x)
-              setscrreg               curs_outopts(3x)
-              setsyx                  curs_kernel(3x)
-              setterm                 curs_terminfo(3x)
-              setupterm               curs_terminfo(3x)
-              slk_attr                curs_slk(3x)*
-              slk_attr_off            curs_slk(3x)
-              slk_attr_on             curs_slk(3x)
-              slk_attr_set            curs_slk(3x)
-              slk_attroff             curs_slk(3x)
-              slk_attron              curs_slk(3x)
-              slk_attrset             curs_slk(3x)
-              slk_clear               curs_slk(3x)
-              slk_color               curs_slk(3x)
-              slk_init                curs_slk(3x)
-              slk_label               curs_slk(3x)
-              slk_noutrefresh         curs_slk(3x)
-              slk_refresh             curs_slk(3x)
-              slk_restore             curs_slk(3x)
-              slk_set                 curs_slk(3x)
-              slk_touch               curs_slk(3x)
-              standend                curs_attr(3x)
-              standout                curs_attr(3x)
-              start_color             curs_color(3x)
-              subpad                  curs_pad(3x)
-              subwin                  curs_window(3x)
-              syncok                  curs_window(3x)
-              term_attrs              curs_termattrs(3x)
-              termattrs               curs_termattrs(3x)
-              termname                curs_termattrs(3x)
-              tgetent                 curs_termcap(3x)
-              tgetflag                curs_termcap(3x)
-              tgetnum                 curs_termcap(3x)
-              tgetstr                 curs_termcap(3x)
-              tgoto                   curs_termcap(3x)
-              tigetflag               curs_terminfo(3x)
-              tigetnum                curs_terminfo(3x)
-              tigetstr                curs_terminfo(3x)
-              timeout                 curs_inopts(3x)
-              touchline               curs_touch(3x)
-              touchwin                curs_touch(3x)
-              tparm                   curs_terminfo(3x)
-
-              tputs                   curs_termcap(3x)
-              tputs                   curs_terminfo(3x)
-              trace                   curs_trace(3x)*
-              typeahead               curs_inopts(3x)
-              unctrl                  curs_util(3x)
-              unget_wch               curs_get_wch(3x)
-              ungetch                 curs_getch(3x)
-              ungetmouse              curs_mouse(3x)*
-              untouchwin              curs_touch(3x)
-              use_default_colors      default_colors(3x)*
-              use_env                 curs_util(3x)
-              use_extended_names      curs_extend(3x)*
-              use_legacy_coding       legacy_coding(3x)*
-              use_tioctl              curs_util(3x)
-              vid_attr                curs_terminfo(3x)
-              vid_puts                curs_terminfo(3x)
-              vidattr                 curs_terminfo(3x)
-              vidputs                 curs_terminfo(3x)
-              vline                   curs_border(3x)
-              vline_set               curs_border_set(3x)
-              vw_printw               curs_printw(3x)
-              vw_scanw                curs_scanw(3x)
-              vwprintw                curs_printw(3x)
-              vwscanw                 curs_scanw(3x)
-              wadd_wch                curs_add_wch(3x)
-              wadd_wchnstr            curs_add_wchstr(3x)
-              wadd_wchstr             curs_add_wchstr(3x)
-              waddch                  curs_addch(3x)
-              waddchnstr              curs_addchstr(3x)
-              waddchstr               curs_addchstr(3x)
-              waddnstr                curs_addstr(3x)
-              waddnwstr               curs_addwstr(3x)
-              waddstr                 curs_addstr(3x)
-              waddwstr                curs_addwstr(3x)
-              wattr_get               curs_attr(3x)
-              wattr_off               curs_attr(3x)
-              wattr_on                curs_attr(3x)
-              wattr_set               curs_attr(3x)
-              wattroff                curs_attr(3x)
-              wattron                 curs_attr(3x)
-              wattrset                curs_attr(3x)
-              wbkgd                   curs_bkgd(3x)
-              wbkgdset                curs_bkgd(3x)
-              wbkgrnd                 curs_bkgrnd(3x)
-              wbkgrndset              curs_bkgrnd(3x)
-              wborder                 curs_border(3x)
-              wborder_set             curs_border_set(3x)
-              wchgat                  curs_attr(3x)
-              wclear                  curs_clear(3x)
-              wclrtobot               curs_clear(3x)
-              wclrtoeol               curs_clear(3x)
-              wcolor_set              curs_attr(3x)
-              wcursyncup              curs_window(3x)
-              wdelch                  curs_delch(3x)
-              wdeleteln               curs_deleteln(3x)
-              wecho_wchar             curs_add_wch(3x)
-              wechochar               curs_addch(3x)
-              wenclose                curs_mouse(3x)*
-              werase                  curs_clear(3x)
-              wget_wch                curs_get_wch(3x)
-              wget_wstr               curs_get_wstr(3x)
-              wgetbkgrnd              curs_bkgrnd(3x)
-              wgetch                  curs_getch(3x)
-              wgetn_wstr              curs_get_wstr(3x)
-              wgetnstr                curs_getstr(3x)
-
-              wgetstr                 curs_getstr(3x)
-              whline                  curs_border(3x)
-              whline_set              curs_border_set(3x)
-              win_wch                 curs_in_wch(3x)
-              win_wchnstr             curs_in_wchstr(3x)
-              win_wchstr              curs_in_wchstr(3x)
-              winch                   curs_inch(3x)
-              winchnstr               curs_inchstr(3x)
-              winchstr                curs_inchstr(3x)
-              winnstr                 curs_instr(3x)
-              winnwstr                curs_inwstr(3x)
-              wins_nwstr              curs_ins_wstr(3x)
-              wins_wch                curs_ins_wch(3x)
-              wins_wstr               curs_ins_wstr(3x)
-              winsch                  curs_insch(3x)
-              winsdelln               curs_deleteln(3x)
-              winsertln               curs_deleteln(3x)
-              winsnstr                curs_insstr(3x)
-              winsstr                 curs_insstr(3x)
-              winstr                  curs_instr(3x)
-              winwstr                 curs_inwstr(3x)
-              wmouse_trafo            curs_mouse(3x)*
-              wmove                   curs_move(3x)
-              wnoutrefresh            curs_refresh(3x)
-              wprintw                 curs_printw(3x)
-              wredrawln               curs_refresh(3x)
-              wrefresh                curs_refresh(3x)
-              wresize                 wresize(3x)*
-              wscanw                  curs_scanw(3x)
-              wscrl                   curs_scroll(3x)
-              wsetscrreg              curs_outopts(3x)
-              wstandend               curs_attr(3x)
-              wstandout               curs_attr(3x)
-              wsyncdown               curs_window(3x)
-              wsyncup                 curs_window(3x)
-              wtimeout                curs_inopts(3x)
-              wtouchln                curs_touch(3x)
-              wunctrl                 curs_util(3x)
-              wvline                  curs_border(3x)
-              wvline_set              curs_border_set(3x)
+

DESCRIPTION

+       The  "new  curses" library offers the programmer a terminal-independent
+       means of reading keyboard and mouse input and  updating  character-cell
+       terminals  with  output  optimized to minimize screen updates.  ncurses
+       replaces the curses libraries from System V Release 4 Unix ("SVr4") and
+       4.4BSD  Unix,  the  development  of  which  ceased  in the 1990s.  This
+       document describes ncurses version 6.5 (patch 20240427).
+
+       ncurses permits control of the terminal screen's contents;  abstraction
+       and  subdivision thereof with windows and pads; the reading of terminal
+       input; control of terminal input and output options; environment  query
+       routines;  color  manipulation;  the  definition  and use of soft label
+       keys; terminfo capability access; a  termcap  compatibility  interface;
+       and  an  abstraction  of the system's API for manipulating the terminal
+       (such as termios(3)).
+
+       ncurses implements the standard interface described  by  X/Open  Curses
+       Issue 7.   In  many  behavioral  details  not  standardized  by X/Open,
+       ncurses emulates the curses  library  of  SVr4  and  provides  numerous
+       useful extensions.
+
+       ncurses  man  pages employ several sections to clarify matters of usage
+       and interoperability with other curses implementations.
+
+       o   "NOTES" describes issues and caveats  of  which  any  user  of  the
+           ncurses  API should be aware, such as limitations on the size of an
+           underlying integral type or  the  availability  of  a  preprocessor
+           macro  exclusive  of  a  function  definition  (which  prevents its
+           address  from  being   taken).    This   section   also   describes
+           implementation  details  that will be significant to the programmer
+           but which are not standardized.
+
+       o   "EXTENSIONS" presents ncurses innovations beyond the X/Open  Curses
+           standard  and/or  the  SVr4 curses implementation.  They are termed
+           extensions to indicate that they cannot be  implemented  solely  by
+           using the library API, but require access to the library's internal
+           state.
+
+       o   "PORTABILITY" discusses matters (beyond the exercise of extensions)
+           that should be considered when writing to a curses standard, or for
+           multiple implementations.
+
+       o   "HISTORY" examines points of detail in  ncurses  and  other  curses
+           implementations over the decades of their development, particularly
+           where precedent or inertia have frustrated better design (and, in a
+           few cases, where such inertia has been overcome).
+
+       A curses application must be linked with the library; use the -lncurses
+       option to your compiler or linker.  A debugging version of the  library
+       may  be available; if so, link with it using -lncurses_g.  (Your system
+       integrator may have installed these libraries such that you can use the
+       options  -lcurses and -lcurses_g, respectively.)  The ncurses_g library
+       generates trace logs (in a file called trace in the current  directory)
+       that  describe ncurses actions.  See section "ALTERNATE CONFIGURATIONS"
+       below.
+
+
+

Application Structure

+       A  curses  application  uses  information  from  the   system   locale;
+       setlocale(3) prepares it for curses library calls.
+
+           setlocale(LC_ALL, "");
+
+       If  the  locale  is  not  thus  initialized,  the  library assumes that
+       characters are printable as in ISO 8859-1, to work with certain  legacy
+       programs.   You  should initialize the locale; do not expect consistent
+       behavior from the library when the locale has not been set up.
+
+       initscr(3x) or newterm(3x) must be called to initialize  curses  before
+       use of any functions that deal with windows and screens.
+
+       To  get  character-at-a-time  input  without echoing--most interactive,
+       screen-oriented programs want this--use the following sequence.
+
+           initscr(); cbreak(); noecho();
+
+       Most applications perform further setup as follows.
+
+           intrflush(stdscr, FALSE);
+           keypad(stdscr, TRUE);
+
+       A curses program then often enters an event loop of  some  sort.   Call
+       endwin(3x) before exiting.
+
+
+

Overview

+       A  curses  library abstracts the terminal screen by representing all or
+       part of it as a WINDOW data structure.  A window is a rectangular  grid
+       of  character  cells,  addressed  by row and column coordinates (y, x),
+       with the upper left corner as (0, 0).  A window called stdscr, the same
+       size  as  the terminal screen, is always available.  Create others with
+       newwin(3x).
+
+       A curses library does not manage overlapping windows (but  see  below).
+       You  can either use stdscr to manage one screen-filling window, or tile
+       the screen into non-overlapping windows and  not  use  stdscr  at  all.
+       Mixing  the  two  approaches will result in unpredictable and undesired
+       effects.
+
+       Functions permit manipulation of a window and  the  cursor  identifying
+       the  cell  within  it  at  which  the next output operation will occur.
+       Among those, the most basic are move(3x) and addch(3x): these place the
+       cursor and write a character to stdscr, respectively.
+
+       Frequent changes to the terminal screen can cause unpleasant flicker or
+       inefficient use of the communication channel  to  the  device,  so  the
+       library  does  not generally update it automatically.  Therefore, after
+       using curses functions to accumulate a set of desired updates that make
+       sense to present together, call refresh(3x) to tell the library to make
+       the user's screen look like stdscr.  The library optimizes  its  output
+       by  computing  a minimal number of operations to mutate the screen from
+       its  state  at  the  previous  refresh  to  the  new  one.    Effective
+       optimization  demands  accurate  information about the terminal device:
+       the management of such information is the province of the  terminfo(3x)
+       API, a feature of every standard curses implementation.
+
+       Special windows called pads may also be manipulated.  These are windows
+       that are not constrained to the size of the terminal screen  and  whose
+       contents need not be completely displayed.  See curs_pad(3x).
+
+       In  addition  to drawing characters on the screen, rendering attributes
+       and colors may be supported, causing the characters to show up in  such
+       modes  as  underlined,  in reverse video, or in color on terminals that
+       support such display enhancements.  See curs_attr(3x).
+
+       curses predefines constants for a small set of  forms-drawing  graphics
+       corresponding  to  the  DEC Alternate Character Set (ACS), a feature of
+       VT100 and other terminals.  See waddch(3x).
+
+       curses is implemented using the  operating  system's  terminal  driver;
+       keystroke  events are received not as scan codes but as byte sequences.
+       Graphical keycaps (alphanumeric and punctuation keys,  and  the  space)
+       appear  as-is.   Everything  else,  including  the  tab,  enter/return,
+       keypad, arrow, and function keys, appears as a control character  or  a
+       multibyte  escape  sequence.   curses  translates these into unique key
+       codes.  See getch(3x).
+
+       ncurses provides reimplementations of the SVr4 panel(3x), form(3x), and
+       menu(3x) libraries to ease construction of user interfaces with curses.
+
+
+

Initialization

+       The   selection  of  an  appropriate  value  of  TERM  in  the  process
+       environment  is  essential  to  correct  curses  and  terminfo  library
+       operation.   A  well-configured  system  selects  a  correct TERM value
+       automatically;  tset(1)  may   assist   with   troubleshooting   exotic
+       situations.
+
+       If  you  change the terminal type, export the TERM environment variable
+       in the shell, then  run  tset(1)  or  the  "tput  init"  command.   See
+       subsection "Tabs and Initialization" of terminfo(5).
+
+       If  the  environment  variables  LINES  and  COLUMNS are set, or if the
+       curses program is executing in a graphical windowing  environment,  the
+       information  obtained  thence  overrides that obtained by terminfo.  An
+       ncurses extension supports resizable terminals; see wresize(3x).
+
+       If the environment variable  TERMINFO  is  defined,  a  curses  program
+       checks  first  for  a  terminal  type  description  in  the location it
+       identifies.   TERMINFO  is  useful  for  developing  experimental  type
+       descriptions  or  when  write  permission to /usr/share/terminfo is not
+       available.
+
+       See section "ENVIRONMENT" below.
+
+
+

Naming Conventions

+       curses offers many functions in variant forms using a  regular  set  of
+       alternatives  to the name of an elemental one.  Those prefixed with "w"
+       require a WINDOW pointer argument;  those  with  a  "mv"  prefix  first
+       perform cursor movement using wmove(3x); a "mvw" prefix indicates both.
+       The "w" function is typically the elemental one; the  removal  of  this
+       prefix usually indicates operation on stdscr.
+
+       Four functions prefixed with "p" require a pad argument.
+
+       In  function  synopses,  ncurses man pages apply the following names to
+       parameters.
+
+                       bf    bool (TRUE or FALSE)
+                       c     a char or int
+                       ch    a chtype
+                       wc    a wchar_t or wint_t
+                       wch   a cchar_t
+                       win   pointer to a WINDOW
+                       pad   pointer to a WINDOW that is a pad
+
+
+

Wide and Non-wide Character Configurations

+       This manual page describes functions that appear in  any  configuration
+       of  the  library.   There  are  two  common configurations; see section
+       "ALTERNATE CONFIGURATIONS" below.
+
+       ncurses   is the library in its "non-wide" configuration, handling only
+                 eight-bit  characters.   It  stores a character combined with
+                 attributes in a chtype datum, which is often an alias of int.
+
+                 Attributes alone (with no  corresponding  character)  can  be
+                 stored  in  variables  of  chtype  or attr_t type.  In either
+                 case, they are represented as an integral bit mask.
+
+                 Each cell of a WINDOW is stored as a chtype.
+
+       ncursesw  is the library in its  "wide"  configuration,  which  handles
+                 character encodings requiring a larger data type than char (a
+                 byte-sized type) can represent.  It adds about one third more
+                 calls  using  additional  data  types  that  can  store  such
+                 multibyte characters.
+
+                 cchar_t  corresponds to the non-wide configuration's  chtype.
+                          It  always  a structure type, because it stores more
+                          data than  fit  into  a  standard  scalar  type.   A
+                          character  code  may not be representable as a char,
+                          and moreover more than one character  may  occupy  a
+                          cell  (as  with  accent marks and other diacritics).
+                          Each  character  is  of  type  wchar_t;  a   complex
+                          character contains one spacing character and zero or
+                          more non-spacing characters (see below).  Attributes
+                          and  color data are stored in separate fields of the
+                          structure, not combined as in chtype.
+
+                 Each cell of a WINDOW is stored as a cchar_t.
+
+                 setcchar(3x) and  getcchar(3x)  store  and  retrieve  cchar_t
+                 data.   The  wide  library API of ncurses depends on two data
+                 types standardized by ISO C95.
+
+                 wchar_t  stores a wide character.  Like chtype, it may be  an
+                          alias  of int.  Depending on the character encoding,
+                          a wide character may be  spacing,  meaning  that  it
+                          occupies  a  character  cell by itself and typically
+                          accompanies  cursor  advancement,  or   non-spacing,
+                          meaning  that it occupies the same cell as a spacing
+                          character, is often regarded as a "modifier" of  the
+                          base  glyph  with  which  it combines, and typically
+                          does not advance the cursor.
+
+                 wint_t   can  store  a  wchar_t   or   the   constant   WEOF,
+                          analogously  to the int-sized character manipulation
+                          functions of ISO C and its constant EOF.
+
+                 The  wide  library   provides   additional   functions   that
+                 complement  those  in  the non-wide library where the size of
+                 the underlying character type  is  significant.   A  somewhat
+                 regular  naming  convention relates many of the wide variants
+                 to their non-wide counterparts;  where  a  non-wide  function
+                 name  contains  "ch"  or "str", prefix it with "_w" to obtain
+                 the wide counterpart.  For example, waddch becomes  wadd_wch.
+                 (Exceptions  that  add only "w" comprise addwstr, inwstr, and
+                 their variants.)
+
+                 This convention is inapplicable  to  some  non-wide  function
+                 names,  so  other  transformations  are  used  for  the  wide
+                 configuration:  the  window  background  management  function
+                 "bkgd"   becomes  "bkgrnd";  the  window  border-drawing  and
+                 -clearing functions are suffixed with "_set";  and  character
+                 attribute   manipulation   functions   like  "attron"  become
+                 "attr_on".
+
+
+

Function Name Index

+       The following table lists the curses functions provided in the non-wide
+       and  wide  APIs  and  the  corresponding  man pages that describe them.
+       Those flagged with  "*"  are  ncurses-specific,  neither  described  by
+       X/Open Curses nor present in SVr4.
+
+                    curses Function Name     Man Page
+                    ---------------------------------------------
+                    COLOR_PAIR               curs_color(3x)
+                    PAIR_NUMBER              curs_color(3x)
+                    add_wch                  curs_add_wch(3x)
+                    add_wchnstr              curs_add_wchstr(3x)
+                    add_wchstr               curs_add_wchstr(3x)
+                    addch                    curs_addch(3x)
+                    addchnstr                curs_addchstr(3x)
+                    addchstr                 curs_addchstr(3x)
+                    addnstr                  curs_addstr(3x)
+                    addnwstr                 curs_addwstr(3x)
+                    addstr                   curs_addstr(3x)
+                    addwstr                  curs_addwstr(3x)
+                    alloc_pair               new_pair(3x)*
+                    assume_default_colors    default_colors(3x)*
+                    attr_get                 curs_attr(3x)
+                    attr_off                 curs_attr(3x)
+                    attr_on                  curs_attr(3x)
+                    attr_set                 curs_attr(3x)
+                    attroff                  curs_attr(3x)
+                    attron                   curs_attr(3x)
+                    attrset                  curs_attr(3x)
+                    baudrate                 curs_termattrs(3x)
+                    beep                     curs_beep(3x)
+                    bkgd                     curs_bkgd(3x)
+                    bkgdset                  curs_bkgd(3x)
+                    bkgrnd                   curs_bkgrnd(3x)
+                    bkgrndset                curs_bkgrnd(3x)
+                    border                   curs_border(3x)
+                    border_set               curs_border_set(3x)
+                    box                      curs_border(3x)
+                    box_set                  curs_border_set(3x)
+                    can_change_color         curs_color(3x)
+                    cbreak                   curs_inopts(3x)
+                    chgat                    curs_attr(3x)
+                    clear                    curs_clear(3x)
+                    clearok                  curs_outopts(3x)
+                    clrtobot                 curs_clear(3x)
+                    clrtoeol                 curs_clear(3x)
+                    color_content            curs_color(3x)
+                    color_set                curs_attr(3x)
+                    copywin                  curs_overlay(3x)
+                    curs_set                 curs_kernel(3x)
+                    curses_trace             curs_trace(3x)*
+                    curses_version           curs_extend(3x)*
+                    def_prog_mode            curs_kernel(3x)
+                    def_shell_mode           curs_kernel(3x)
+                    define_key               define_key(3x)*
+                    del_curterm              curs_terminfo(3x)
+                    delay_output             curs_util(3x)
+                    delch                    curs_delch(3x)
+                    deleteln                 curs_deleteln(3x)
+                    delscreen                curs_initscr(3x)
+                    delwin                   curs_window(3x)
+                    derwin                   curs_window(3x)
+                    doupdate                 curs_refresh(3x)
+                    dupwin                   curs_window(3x)
+                    echo                     curs_inopts(3x)
+
+                    echo_wchar               curs_add_wch(3x)
+                    echochar                 curs_addch(3x)
+                    endwin                   curs_initscr(3x)
+                    erase                    curs_clear(3x)
+                    erasechar                curs_termattrs(3x)
+                    erasewchar               curs_termattrs(3x)
+                    exit_curses              curs_memleaks(3x)*
+                    exit_terminfo            curs_memleaks(3x)*
+                    extended_color_content   curs_color(3x)*
+                    extended_pair_content    curs_color(3x)*
+                    extended_slk_color       curs_slk(3x)*
+                    filter                   curs_util(3x)
+                    find_pair                new_pair(3x)*
+                    flash                    curs_beep(3x)
+                    flushinp                 curs_util(3x)
+                    free_pair                new_pair(3x)*
+                    get_escdelay             curs_threads(3x)*
+                    get_wch                  curs_get_wch(3x)
+                    get_wstr                 curs_get_wstr(3x)
+                    getattrs                 curs_attr(3x)
+                    getbegx                  curs_legacy(3x)*
+                    getbegy                  curs_legacy(3x)*
+                    getbegyx                 curs_getyx(3x)
+                    getbkgd                  curs_bkgd(3x)
+                    getbkgrnd                curs_bkgrnd(3x)
+                    getcchar                 curs_getcchar(3x)
+                    getch                    curs_getch(3x)
+                    getcurx                  curs_legacy(3x)*
+                    getcury                  curs_legacy(3x)*
+                    getmaxx                  curs_legacy(3x)*
+                    getmaxy                  curs_legacy(3x)*
+                    getmaxyx                 curs_getyx(3x)
+                    getmouse                 curs_mouse(3x)*
+                    getn_wstr                curs_get_wstr(3x)
+                    getnstr                  curs_getstr(3x)
+                    getparx                  curs_legacy(3x)*
+                    getpary                  curs_legacy(3x)*
+                    getparyx                 curs_getyx(3x)
+                    getstr                   curs_getstr(3x)
+                    getsyx                   curs_kernel(3x)
+                    getwin                   curs_util(3x)
+                    getyx                    curs_getyx(3x)
+                    halfdelay                curs_inopts(3x)
+                    has_colors               curs_color(3x)
+                    has_ic                   curs_termattrs(3x)
+                    has_il                   curs_termattrs(3x)
+                    has_key                  curs_getch(3x)*
+                    has_mouse                curs_mouse(3x)*
+                    hline                    curs_border(3x)
+                    hline_set                curs_border_set(3x)
+                    idcok                    curs_outopts(3x)
+                    idlok                    curs_outopts(3x)
+                    immedok                  curs_outopts(3x)
+                    in_wch                   curs_in_wch(3x)
+                    in_wchnstr               curs_in_wchstr(3x)
+                    in_wchstr                curs_in_wchstr(3x)
+                    inch                     curs_inch(3x)
+                    inchnstr                 curs_inchstr(3x)
+                    inchstr                  curs_inchstr(3x)
+                    init_color               curs_color(3x)
+                    init_extended_color      curs_color(3x)*
+                    init_extended_pair       curs_color(3x)*
+                    init_pair                curs_color(3x)
+                    initscr                  curs_initscr(3x)
+                    innstr                   curs_instr(3x)
+
+                    innwstr                  curs_inwstr(3x)
+                    ins_nwstr                curs_ins_wstr(3x)
+                    ins_wch                  curs_ins_wch(3x)
+                    ins_wstr                 curs_ins_wstr(3x)
+                    insch                    curs_insch(3x)
+                    insdelln                 curs_deleteln(3x)
+                    insertln                 curs_deleteln(3x)
+                    insnstr                  curs_insstr(3x)
+                    insstr                   curs_insstr(3x)
+                    instr                    curs_instr(3x)
+                    intrflush                curs_inopts(3x)
+                    inwstr                   curs_inwstr(3x)
+                    is_cbreak                curs_inopts(3x)*
+                    is_cleared               curs_opaque(3x)*
+                    is_echo                  curs_inopts(3x)*
+                    is_idcok                 curs_opaque(3x)*
+                    is_idlok                 curs_opaque(3x)*
+                    is_immedok               curs_opaque(3x)*
+                    is_keypad                curs_opaque(3x)*
+                    is_leaveok               curs_opaque(3x)*
+                    is_linetouched           curs_touch(3x)
+                    is_nl                    curs_inopts(3x)*
+                    is_nodelay               curs_opaque(3x)*
+                    is_notimeout             curs_opaque(3x)*
+                    is_pad                   curs_opaque(3x)*
+                    is_raw                   curs_inopts(3x)*
+                    is_scrollok              curs_opaque(3x)*
+                    is_subwin                curs_opaque(3x)*
+                    is_syncok                curs_opaque(3x)*
+                    is_term_resized          resizeterm(3x)*
+                    is_wintouched            curs_touch(3x)
+                    isendwin                 curs_initscr(3x)
+                    key_defined              key_defined(3x)*
+                    key_name                 curs_util(3x)
+                    keybound                 keybound(3x)*
+                    keyname                  curs_util(3x)
+                    keyok                    keyok(3x)*
+                    keypad                   curs_inopts(3x)
+                    killchar                 curs_termattrs(3x)
+                    killwchar                curs_termattrs(3x)
+                    leaveok                  curs_outopts(3x)
+                    longname                 curs_termattrs(3x)
+                    mcprint                  curs_print(3x)*
+                    meta                     curs_inopts(3x)
+                    mouse_trafo              curs_mouse(3x)*
+                    mouseinterval            curs_mouse(3x)*
+                    mousemask                curs_mouse(3x)*
+                    move                     curs_move(3x)
+                    mvadd_wch                curs_add_wch(3x)
+                    mvadd_wchnstr            curs_add_wchstr(3x)
+                    mvadd_wchstr             curs_add_wchstr(3x)
+                    mvaddch                  curs_addch(3x)
+                    mvaddchnstr              curs_addchstr(3x)
+                    mvaddchstr               curs_addchstr(3x)
+                    mvaddnstr                curs_addstr(3x)
+                    mvaddnwstr               curs_addwstr(3x)
+                    mvaddstr                 curs_addstr(3x)
+                    mvaddwstr                curs_addwstr(3x)
+                    mvchgat                  curs_attr(3x)
+                    mvcur                    curs_terminfo(3x)
+                    mvdelch                  curs_delch(3x)
+                    mvderwin                 curs_window(3x)
+                    mvget_wch                curs_get_wch(3x)
+                    mvget_wstr               curs_get_wstr(3x)
+                    mvgetch                  curs_getch(3x)
+
+                    mvgetn_wstr              curs_get_wstr(3x)
+                    mvgetnstr                curs_getstr(3x)
+                    mvgetstr                 curs_getstr(3x)
+                    mvhline                  curs_border(3x)
+                    mvhline_set              curs_border_set(3x)
+                    mvin_wch                 curs_in_wch(3x)
+                    mvin_wchnstr             curs_in_wchstr(3x)
+                    mvin_wchstr              curs_in_wchstr(3x)
+                    mvinch                   curs_inch(3x)
+                    mvinchnstr               curs_inchstr(3x)
+                    mvinchstr                curs_inchstr(3x)
+                    mvinnstr                 curs_instr(3x)
+                    mvinnwstr                curs_inwstr(3x)
+                    mvins_nwstr              curs_ins_wstr(3x)
+                    mvins_wch                curs_ins_wch(3x)
+                    mvins_wstr               curs_ins_wstr(3x)
+                    mvinsch                  curs_insch(3x)
+                    mvinsnstr                curs_insstr(3x)
+                    mvinsstr                 curs_insstr(3x)
+                    mvinstr                  curs_instr(3x)
+                    mvinwstr                 curs_inwstr(3x)
+                    mvprintw                 curs_printw(3x)
+                    mvscanw                  curs_scanw(3x)
+                    mvvline                  curs_border(3x)
+                    mvvline_set              curs_border_set(3x)
+                    mvwadd_wch               curs_add_wch(3x)
+                    mvwadd_wchnstr           curs_add_wchstr(3x)
+                    mvwadd_wchstr            curs_add_wchstr(3x)
+                    mvwaddch                 curs_addch(3x)
+                    mvwaddchnstr             curs_addchstr(3x)
+                    mvwaddchstr              curs_addchstr(3x)
+                    mvwaddnstr               curs_addstr(3x)
+                    mvwaddnwstr              curs_addwstr(3x)
+                    mvwaddstr                curs_addstr(3x)
+                    mvwaddwstr               curs_addwstr(3x)
+                    mvwchgat                 curs_attr(3x)
+                    mvwdelch                 curs_delch(3x)
+                    mvwget_wch               curs_get_wch(3x)
+                    mvwget_wstr              curs_get_wstr(3x)
+                    mvwgetch                 curs_getch(3x)
+                    mvwgetn_wstr             curs_get_wstr(3x)
+                    mvwgetnstr               curs_getstr(3x)
+                    mvwgetstr                curs_getstr(3x)
+                    mvwhline                 curs_border(3x)
+                    mvwhline_set             curs_border_set(3x)
+                    mvwin                    curs_window(3x)
+                    mvwin_wch                curs_in_wch(3x)
+                    mvwin_wchnstr            curs_in_wchstr(3x)
+                    mvwin_wchstr             curs_in_wchstr(3x)
+                    mvwinch                  curs_inch(3x)
+                    mvwinchnstr              curs_inchstr(3x)
+                    mvwinchstr               curs_inchstr(3x)
+                    mvwinnstr                curs_instr(3x)
+                    mvwinnwstr               curs_inwstr(3x)
+                    mvwins_nwstr             curs_ins_wstr(3x)
+                    mvwins_wch               curs_ins_wch(3x)
+                    mvwins_wstr              curs_ins_wstr(3x)
+                    mvwinsch                 curs_insch(3x)
+                    mvwinsnstr               curs_insstr(3x)
+                    mvwinsstr                curs_insstr(3x)
+                    mvwinstr                 curs_instr(3x)
+                    mvwinwstr                curs_inwstr(3x)
+                    mvwprintw                curs_printw(3x)
+                    mvwscanw                 curs_scanw(3x)
+                    mvwvline                 curs_border(3x)
+
+                    mvwvline_set             curs_border_set(3x)
+                    napms                    curs_kernel(3x)
+                    newpad                   curs_pad(3x)
+                    newterm                  curs_initscr(3x)
+                    newwin                   curs_window(3x)
+                    nl                       curs_inopts(3x)
+                    nocbreak                 curs_inopts(3x)
+                    nodelay                  curs_inopts(3x)
+                    noecho                   curs_inopts(3x)
+                    nofilter                 curs_util(3x)*
+                    nonl                     curs_inopts(3x)
+                    noqiflush                curs_inopts(3x)
+                    noraw                    curs_inopts(3x)
+                    notimeout                curs_inopts(3x)
+                    overlay                  curs_overlay(3x)
+                    overwrite                curs_overlay(3x)
+                    pair_content             curs_color(3x)
+                    pecho_wchar              curs_pad(3x)
+                    pechochar                curs_pad(3x)
+                    pnoutrefresh             curs_pad(3x)
+                    prefresh                 curs_pad(3x)
+                    printw                   curs_printw(3x)
+                    putp                     curs_terminfo(3x)
+                    putwin                   curs_util(3x)
+                    qiflush                  curs_inopts(3x)
+                    raw                      curs_inopts(3x)
+                    redrawwin                curs_refresh(3x)
+                    refresh                  curs_refresh(3x)
+                    reset_color_pairs        curs_color(3x)*
+                    reset_prog_mode          curs_kernel(3x)
+                    reset_shell_mode         curs_kernel(3x)
+                    resetty                  curs_kernel(3x)
+                    resize_term              resizeterm(3x)*
+                    resizeterm               resizeterm(3x)*
+                    restartterm              curs_terminfo(3x)
+                    ripoffline               curs_kernel(3x)
+                    savetty                  curs_kernel(3x)
+                    scanw                    curs_scanw(3x)
+                    scr_dump                 curs_scr_dump(3x)
+                    scr_init                 curs_scr_dump(3x)
+                    scr_restore              curs_scr_dump(3x)
+                    scr_set                  curs_scr_dump(3x)
+                    scrl                     curs_scroll(3x)
+                    scroll                   curs_scroll(3x)
+                    scrollok                 curs_outopts(3x)
+                    set_curterm              curs_terminfo(3x)
+                    set_escdelay             curs_threads(3x)*
+                    set_tabsize              curs_threads(3x)*
+                    set_term                 curs_initscr(3x)
+                    setcchar                 curs_getcchar(3x)
+                    setscrreg                curs_outopts(3x)
+                    setsyx                   curs_kernel(3x)
+                    setupterm                curs_terminfo(3x)
+                    slk_attr                 curs_slk(3x)*
+                    slk_attr_off             curs_slk(3x)
+                    slk_attr_on              curs_slk(3x)
+                    slk_attr_set             curs_slk(3x)
+                    slk_attroff              curs_slk(3x)
+                    slk_attron               curs_slk(3x)
+                    slk_attrset              curs_slk(3x)
+                    slk_clear                curs_slk(3x)
+                    slk_color                curs_slk(3x)
+                    slk_init                 curs_slk(3x)
+                    slk_label                curs_slk(3x)
+                    slk_noutrefresh          curs_slk(3x)
+
+                    slk_refresh              curs_slk(3x)
+                    slk_restore              curs_slk(3x)
+                    slk_set                  curs_slk(3x)
+                    slk_touch                curs_slk(3x)
+                    slk_wset                 curs_slk(3x)
+                    standend                 curs_attr(3x)
+                    standout                 curs_attr(3x)
+                    start_color              curs_color(3x)
+                    subpad                   curs_pad(3x)
+                    subwin                   curs_window(3x)
+                    syncok                   curs_window(3x)
+                    term_attrs               curs_termattrs(3x)
+                    termattrs                curs_termattrs(3x)
+                    termname                 curs_termattrs(3x)
+                    tgetent                  curs_termcap(3x)
+                    tgetflag                 curs_termcap(3x)
+                    tgetnum                  curs_termcap(3x)
+                    tgetstr                  curs_termcap(3x)
+                    tgoto                    curs_termcap(3x)
+                    tigetflag                curs_terminfo(3x)
+                    tigetnum                 curs_terminfo(3x)
+                    tigetstr                 curs_terminfo(3x)
+                    timeout                  curs_inopts(3x)
+                    tiparm                   curs_terminfo(3x)
+                    tiparm_s                 curs_terminfo(3x)*
+                    tiscan_s                 curs_terminfo(3x)*
+                    touchline                curs_touch(3x)
+                    touchwin                 curs_touch(3x)
+                    tparm                    curs_terminfo(3x)
+                    tputs                    curs_termcap(3x)
+                    tputs                    curs_terminfo(3x)
+                    trace                    curs_trace(3x)*
+                    typeahead                curs_inopts(3x)
+                    unctrl                   curs_util(3x)
+                    unget_wch                curs_get_wch(3x)
+                    ungetch                  curs_getch(3x)
+                    ungetmouse               curs_mouse(3x)*
+                    untouchwin               curs_touch(3x)
+                    use_default_colors       default_colors(3x)*
+                    use_env                  curs_util(3x)
+                    use_extended_names       curs_extend(3x)*
+                    use_legacy_coding        legacy_coding(3x)*
+                    use_screen               curs_threads(3x)*
+                    use_tioctl               curs_util(3x)*
+                    use_window               curs_threads(3x)*
+                    vid_attr                 curs_terminfo(3x)
+                    vid_puts                 curs_terminfo(3x)
+                    vidattr                  curs_terminfo(3x)
+                    vidputs                  curs_terminfo(3x)
+                    vline                    curs_border(3x)
+                    vline_set                curs_border_set(3x)
+                    vw_printw                curs_printw(3x)
+                    vw_scanw                 curs_scanw(3x)
+                    vwprintw                 curs_printw(3x)
+                    vwscanw                  curs_scanw(3x)
+                    wadd_wch                 curs_add_wch(3x)
+                    wadd_wchnstr             curs_add_wchstr(3x)
+                    wadd_wchstr              curs_add_wchstr(3x)
+                    waddch                   curs_addch(3x)
+                    waddchnstr               curs_addchstr(3x)
+                    waddchstr                curs_addchstr(3x)
+                    waddnstr                 curs_addstr(3x)
+                    waddnwstr                curs_addwstr(3x)
+                    waddstr                  curs_addstr(3x)
+                    waddwstr                 curs_addwstr(3x)
+
+                    wattr_get                curs_attr(3x)
+                    wattr_off                curs_attr(3x)
+                    wattr_on                 curs_attr(3x)
+                    wattr_set                curs_attr(3x)
+                    wattroff                 curs_attr(3x)
+                    wattron                  curs_attr(3x)
+                    wattrset                 curs_attr(3x)
+                    wbkgd                    curs_bkgd(3x)
+                    wbkgdset                 curs_bkgd(3x)
+                    wbkgrnd                  curs_bkgrnd(3x)
+                    wbkgrndset               curs_bkgrnd(3x)
+                    wborder                  curs_border(3x)
+                    wborder_set              curs_border_set(3x)
+                    wchgat                   curs_attr(3x)
+                    wclear                   curs_clear(3x)
+                    wclrtobot                curs_clear(3x)
+                    wclrtoeol                curs_clear(3x)
+                    wcolor_set               curs_attr(3x)
+                    wcursyncup               curs_window(3x)
+                    wdelch                   curs_delch(3x)
+                    wdeleteln                curs_deleteln(3x)
+                    wecho_wchar              curs_add_wch(3x)
+                    wechochar                curs_addch(3x)
+                    wenclose                 curs_mouse(3x)*
+                    werase                   curs_clear(3x)
+                    wget_wch                 curs_get_wch(3x)
+                    wget_wstr                curs_get_wstr(3x)
+                    wgetbkgrnd               curs_bkgrnd(3x)
+                    wgetch                   curs_getch(3x)
+                    wgetdelay                curs_opaque(3x)*
+                    wgetn_wstr               curs_get_wstr(3x)
+                    wgetnstr                 curs_getstr(3x)
+                    wgetparent               curs_opaque(3x)*
+                    wgetscrreg               curs_opaque(3x)*
+                    wgetstr                  curs_getstr(3x)
+                    whline                   curs_border(3x)
+                    whline_set               curs_border_set(3x)
+                    win_wch                  curs_in_wch(3x)
+                    win_wchnstr              curs_in_wchstr(3x)
+                    win_wchstr               curs_in_wchstr(3x)
+                    winch                    curs_inch(3x)
+                    winchnstr                curs_inchstr(3x)
+                    winchstr                 curs_inchstr(3x)
+                    winnstr                  curs_instr(3x)
+                    winnwstr                 curs_inwstr(3x)
+                    wins_nwstr               curs_ins_wstr(3x)
+                    wins_wch                 curs_ins_wch(3x)
+                    wins_wstr                curs_ins_wstr(3x)
+                    winsch                   curs_insch(3x)
+                    winsdelln                curs_deleteln(3x)
+                    winsertln                curs_deleteln(3x)
+                    winsnstr                 curs_insstr(3x)
+                    winsstr                  curs_insstr(3x)
+                    winstr                   curs_instr(3x)
+                    winwstr                  curs_inwstr(3x)
+                    wmouse_trafo             curs_mouse(3x)*
+                    wmove                    curs_move(3x)
+                    wnoutrefresh             curs_refresh(3x)
+                    wprintw                  curs_printw(3x)
+                    wredrawln                curs_refresh(3x)
+                    wrefresh                 curs_refresh(3x)
+                    wresize                  wresize(3x)*
+                    wscanw                   curs_scanw(3x)
+                    wscrl                    curs_scroll(3x)
+                    wsetscrreg               curs_outopts(3x)
+
+                    wstandend                curs_attr(3x)
+                    wstandout                curs_attr(3x)
+                    wsyncdown                curs_window(3x)
+                    wsyncup                  curs_window(3x)
+                    wtimeout                 curs_inopts(3x)
+                    wtouchln                 curs_touch(3x)
+                    wunctrl                  curs_util(3x)
+                    wvline                   curs_border(3x)
+                    wvline_set               curs_border_set(3x)
+
+       ncurses's    screen-pointer   extension   adds   additional   functions
+       corresponding to many of the above, each  with  an  "_sp"  suffix;  see
+       curs_sp_funcs(3x).
+
+       The  availability  of  some  extensions is configurable when ncurses is
+       compiled; see  sections  "ALTERNATE  CONFIGURATIONS"  and  "EXTENSIONS"
+       below.
+
+
+

RETURN VALUE

+       Unless  otherwise  noted, functions that return an integer return OK on
+       success and ERR on failure.  Functions that return pointers return NULL
+       on  failure.   Typically,  ncurses  treats  a  null pointer passed as a
+       function parameter as a failure.  Functions prefixed  with  "mv"  first
+       perform  cursor movement and fail if the position (y, x) is outside the
+       window boundaries.
+
+
+

ENVIRONMENT

+       The following  symbols  from  the  process  environment  customize  the
+       runtime   behavior   of  ncurses  applications.   The  library  may  be
+       configured  to  disregard  the   variables   TERMINFO,   TERMINFO_DIRS,
+       TERMPATH,  and  HOME,  if  the  user  is  the  superuser (root), or the
+       application uses setuid(2) or setgid(2).
+
+
+

BAUDRATE

+       The debugging library checks this variable  when  the  application  has
+       redirected  output  to a file.  Its integral value is used for the baud
+       rate.  If that value is absent or invalid,  ncurses  uses  9600.   This
+       feature  allows  testers  to  construct repeatable test cases that take
+       into account optimization decisions that depend on baud rate.
+
+
+

CC (command character)

+       When set, the command_character  (cmdch)  capability  value  of  loaded
+       terminfo entries changes to the value of this variable.  Very few term-
+       info entries provide this feature.
+
+       Because this name is also used in development environments to represent
+       the  C  compiler's  name,  ncurses  ignores  its value if it is not one
+       character in length.
+
+
+

COLUMNS

+       This  variable  specifies  the  width  of  the  screen  in  characters.
+       Applications  running  in  a  windowing environment usually are able to
+       obtain the width of the window in which they are executing.  If COLUMNS
+       is not defined and the terminal's screen size is not available from the
+       terminal driver, ncurses uses the size specified by the columns  (cols)
+       capability  of  the  terminal type's entry in the terminfo database, if
+       any.
+
+       It is important that your application  use  the  correct  screen  size.
+       Automatic   detection   thereof  is  not  always  possible  because  an
+       application may  be  running  on  a  host  that  does  not  honor  NAWS
+       (Negotiations  About  Window  Size)  or as a different user ID than the
+       owner of the  terminal  device  file.   Setting  COLUMNS  and/or  LINES
+       overrides  the  library's  use  of  the  screen  size obtained from the
+       operating system.
+
+       The COLUMNS and LINES variables may be specified  independently.   This
+       property  is  useful  to circumvent misfeatures of legacy terminal type
+       descriptions; xterm(1)  descriptions  specifying  65  lines  were  once
+       notorious.    For   best  results,  avoid  specifying  cols  and  lines
+       capability codes in terminfo descriptions of terminal emulators.
+
+       use_env(3x) can disable use of the process environment  in  determining
+       the  screen size.  use_tioctl(3x) can update COLUMNS and LINES to match
+       the screen size obtained from system calls or the terminal database.
+
+
+

ESCDELAY

+       For curses to distinguish the ESC character  resulting  from  a  user's
+       press  of  the  "Escape"  key on the input device from one beginning an
+       escape sequence (as commonly produced by function keys), it waits after
+       receiving  the  escape  character  to  see  if  further  characters are
+       available on the input  stream  within  a  short  interval.   A  global
+       variable  ESCDELAY  stores  this interval in milliseconds.  The default
+       value of 1000 (one second) is adequate for most uses.  This environment
+       variable overrides it.
+
+       The  most common instance where you may wish to change this value is to
+       work with a remote host over a slow communication channel.  If the host
+       running  a  curses  application  does  not receive the characters of an
+       escape sequence in a timely manner, the library can interpret  them  as
+       multiple key stroke events.
+
+       xterm(1) mouse events are a form of escape sequence; therefore, if your
+       application makes heavy use  of  multiple-clicking,  you  may  wish  to
+       lengthen  the  default value because the delay applies to the composite
+       multi-click event as well as the individual clicks.
+
+       Portable applications should not rely upon the presence of ESCDELAY  in
+       either  form,  but  setting  the  environment  variable rather than the
+       global variable does not create problems when compiling an application.
+
+       If keypad(3x) is disabled for the  curses  window  receiving  input,  a
+       program must disambiguate escape sequences itself.
+
+
+

HOME

+       ncurses  may read and write auxiliary terminal descriptions in .termcap
+       and .terminfo files in the user's home directory.
+
+
+

LINES

+       This counterpart to COLUMNS specifies  the  height  of  the  screen  in
+       characters.   The  corresponding terminfo capability and code is lines.
+       See the description of the COLUMNS variable above.
+
+
+

MOUSE_BUTTONS_123

+       (OS/2 EMX port only) OS/2 numbers a three-button  mouse  inconsistently
+       with  other platforms, such that 1 is the left button, 2 the right, and
+       3 the middle.  This variable customizes  the  mouse  button  numbering.
+       Its  value  must be three digits 1-3 in any order.  By default, ncurses
+       assumes a numbering of "132".
+
+
+

NCURSES_ASSUMED_COLORS

+       If set, this  variable  overrides  the  ncurses  library's  compiled-in
+       assumption  that  the terminal's default colors are white on black; see
+       default_colors(3x).  Set the foreground  and  background  color  values
+       with  this  environment  variable  by  assigning  it two integer values
+       separated  by  a  comma,  indicating  foregound  and  background  color
+       numbers, respectively.
+
+       For  example,  to tell ncurses not to assume anything about the colors,
+       use a value of "-1,-1".  To make the  default  color  scheme  green  on
+       black,  use  "2,0".   ncurses accepts integral values from -1 up to the
+       value of the terminfo max_colors (colors) capability.
+
+
+

NCURSES_CONSOLE2

+       (MinGW  port  only)  The  Console2  program  defectively  handles   the
+       Microsoft  Console  API  call  CreateConsoleScreenBuffer.  Applications
+       that use it will hang.  However, it is possible to simulate the  action
+       of  this  call  by mapping coordinates, explicitly saving and restoring
+       the original screen contents.  Setting the environment  variable  NCGDB
+       has the same effect.
+
+
+

NCURSES_GPM_TERMS

+       (Linux  only) When ncurses is configured to use the GPM interface, this
+       variable may list one or more terminal names  against  which  the  TERM
+       variable  (see  below)  is  matched.   An  empty value disables the GPM
+       interface,  using  ncurses's  built-in  support  for   xterm(1)   mouse
+       protocols instead.  If the variable is absent, ncurses attempts to open
+       GPM if TERM contains "linux".
+
+
+

NCURSES_NO_HARD_TABS

+       ncurses may use tab characters in  cursor  movement  optimization.   In
+       some  cases,  your  terminal  driver may not handle them properly.  Set
+       this environment variable to any value to disable the feature.  You can
+       also adjust your stty(1) settings to avoid the problem.
+
+
+

NCURSES_NO_MAGIC_COOKIE

+       Many  terminals  store  video  attributes  as a property of a character
+       cell, as curses does.  Historically, some  recorded  changes  in  video
+       attributes  as  data  that  logically  occupies  character cells on the
+       display, switching attributes on or off, similarly to tags in a  markup
+       language;  these  are  termed "magic cookies", and must be subsequently
+       overprinted.  If the terminfo entry for your  terminal  type  does  not
+       adequately describe its handling of magic cookies, set this variable to
+       any value to instruct ncurses to disable attributes entirely.
+
+
+

NCURSES_NO_PADDING

+       Most  terminal  type  descriptions  in  the  terminfo  database  detail
+       hardware   devices.   Many  people  use  curses-based  applications  in
+       terminal emulator programs that run in a windowing environment.   These
+       programs  can  duplicate  all  of  the important features of a hardware
+       terminal, but often lack their limitations.  Chief among  these  absent
+       drawbacks is the problem of data flow management; that is, limiting the
+       speed of communication to what the hardware  could  handle.   Unless  a
+       hardware  terminal  is  interfaced  into a terminal concentrator (which
+       does flow control), an application must manage flow control  itself  to
+       prevent overruns and data loss.
+
+       A  solution  that  comes  at  no hardware cost is for an application to
+       pause after directing a  terminal  to  execute  an  operation  that  it
+       performs  slowly,  such  as  clearing  the display.  Many terminal type
+       descriptions, including that for the VT100, embed delay  specifications
+       in  capabilities.   You  may  wish  to  use these terminal descriptions
+       without paying the performance penalty.  Set NCURSES_NO_PADDING to  any
+       value  to disable all but mandatory padding.  Mandatory padding is used
+       by such terminal capabilities as flash_screen (flash).
+
+
+

NCURSES_NO_SETBUF

+       (Obsolete) Prior to internal changes developed in ncurses 5.9  (patches
+       20120825  through 20130126), the library used setbuf(3) to enable fully
+       buffered output when initializing the terminal.  This was done,  as  in
+       SVr4  curses,  to  increase performance.  For testing purposes, both of
+       ncurses and of certain applications, this feature  was  made  optional.
+       Setting  this  variable  disabled  output buffering, leaving the output
+       stream in the original (usually line-buffered) mode.
+
+       Nowadays, ncurses performs its own buffering and does not require  this
+       workaround;  it  does  not  modify the buffering of the standard output
+       stream.  This approach makes signal handling, as for  interrupts,  more
+       robust.   A  drawback  is  that  certain  unconventional programs mixed
+       stdio(3) calls with ncurses calls and (usually) got the  behavior  they
+       expected.   This  is  no longer the case; ncurses does not write to the
+       standard output file descriptor through a stdio-buffered stream.
+
+       As a special case, low-level API calls such as putp(3x) still  use  the
+       standard  output stream.  High-level curses calls such as printw(3x) do
+       not.
+
+
+

NCURSES_NO_UTF8_ACS

+       At initialization, ncurses inspects the TERM environment  variable  for
+       special   cases   where   VT100   forms-drawing   characters  (and  the
+       corresponding alternate character set terminfo capabilities) are  known
+       to  be  unsupported  by  terminal  types  that  otherwise  claim  VT100
+       compatibility.  Specifically, when running in a UTF-8 locale, the Linux
+       virtual  console device and the GNU screen(1) program ignore them.  Set
+       this  variable  to  a  nonzero  value  to  instruct  ncurses  that  the
+       terminal's ACS support is broken; the library then outputs Unicode code
+       points that correspond to the forms-drawing characters.  Set it to zero
+       (or a non-integer) to disable the special check for terminal type names
+       matching "linux" or "screen", directing ncurses to assume that the  ACS
+       feature works if the terminal type description advertises it.
+
+       As  an  alternative  to  use  of  this  variable, ncurses checks for an
+       extended terminfo numeric capability U8 that can be compiled using "tic
+       -x".  Examples follow.
+
+          # linux console, if patched to provide working
+          # VT100 shift-in/shift-out, with corresponding font.
+          linux-vt100|linux console with VT100 line-graphics,
+                  U8#0, use=linux,
+
+          # uxterm with vt100Graphics resource set to false
+          xterm-utf8|xterm relying on UTF-8 line-graphics,
+                  U8#1, use=xterm,
+
+       The  two-character name "U8" was chosen to permit its use via ncurses's
+       termcap interface.
+
+
+

NCURSES_TRACE

+       At initialization, ncurses (in its debugging configuration) checks  for
+       this  variable's  presence.   If  defined  with  an integral value, the
+       library calls curses_trace(3x) with that value as the argument.
+
+
+

TERM

+       The TERM variable denotes the terminal type.  Each is distinct,  though
+       many  are  similar.   It  is commonly set by terminal emulators to help
+       applications find a  workable  terminal  description.   Some  choose  a
+       popular  approximation  such as "ansi", "vt100", or "xterm" rather than
+       an exact fit to their capabilities.  Not infrequently,  an  application
+       will  have  problems  with that approach; for example, a key stroke may
+       not operate  correctly,  or  produce  no  effect  but  seeming  garbage
+       characters on the screen.
+
+       Setting  TERM  has  no effect on hardware operation; it affects the way
+       applications communicate with the terminal.   Likewise,  as  a  general
+       rule  (xterm(1)  being a rare exception), terminal emulators that allow
+       you to specify TERM as a parameter or configuration value do not change
+       their behavior to match that setting.
+
+
+

TERMCAP

+       If ncurses is configured with termcap support, it checks for a terminal
+       type description in termcap format if one in  terminfo  format  is  not
+       available.   Setting  this variable directs ncurses to ignore the usual
+       termcap database location, /etc/termcap; see TERMPATH  below.   TERMCAP
+       should  contain  either  a terminal description (with newlines stripped
+       out), or a file name indicating where the information required  by  the
+       TERM environment variable is stored.
 
 
-
-

RETURN VALUE

-       Routines  that  return  an integer return ERR upon failure
-       and an integer value other than ERR upon  successful  com-
-       pletion,  unless  otherwise  noted in the routine descrip-
-       tions.
+

TERMINFO

+       ncurses  can  be configured to read terminal type description databases
+       in various locations using different formats.  This variable  overrides
+       the default location.
 
-       As a general rule, routines check for null pointers passed
-       as parameters, and handle this as an error.
+       o   Descriptions  in terminfo format are normally stored in a directory
+           tree using subdirectories named by the common first letters of  the
+           terminal types named therein.  This is the scheme used in System V.
 
-       All  macros  return  the  value  of  the w version, except
-       setscrreg, wsetscrreg, getyx, getbegyx, and getmaxyx.  The
-       return  values  of setscrreg, wsetscrreg, getyx, getbegyx,
-       and getmaxyx are undefined (i.e., these should not be used
-       as the right-hand side of assignment statements).
+       o   If ncurses is configured to use hashed databases, then TERMINFO may
+           name its location,  such  as  /usr/share/terminfo.db,  rather  than
+           /usr/share/terminfo/.
 
-       Routines that return pointers return NULL on error.
+       The  hashed  database  uses less disk space and is a little faster than
+       the directory tree.  However, some applications assume the existence of
+       the directory tree, and read it directly rather than using the terminfo
+       API.
 
+       o   If ncurses is configured with termcap support,  this  variable  may
+           contain the location of a termcap file.
 
-
-

ENVIRONMENT

-       The following environment symbols are useful for customiz-
-       ing the runtime behavior of the ncurses library.  The most
-       important ones have been already discussed in detail.
-
-       CC   When set, change occurrences of the command_character
-            (i.e., the cmdch capability) of the  loaded  terminfo
-            entries to the value of this variable.  Very few ter-
-            minfo entries provide this feature.
-
-            Because this name is also used in  development  envi-
-            ronments  to represent the C compiler's name, ncurses
-            ignores it if it does not happen to be a single char-
-            acter.
-
-       BAUDRATE
-            The  debugging  library checks this environment vari-
-            able when the application has redirected output to  a
-            file.   The  variable's numeric value is used for the
-            baudrate.  If no value is found, ncurses  uses  9600.
-            This  allows  testers  to  construct repeatable test-
-            cases that take into account  costs  that  depend  on
-            baudrate.
-
-       COLUMNS
-            Specify  the  width  of  the  screen  in  characters.
-            Applications running in a windowing environment  usu-
-            ally  are  able  to obtain the width of the window in
-            which they are executing.   If  neither  the  COLUMNS
-            value  nor  the  terminal's screen size is available,
-            ncurses uses the size which may be specified  in  the
-            terminfo database (i.e., the cols capability).
-
-            It  is  important that your application use a correct
-            size for the screen.  This  is  not  always  possible
-            because  your  application  may  be running on a host
-            which does not honor NAWS (Negotiations About  Window
-            Size),  or  because  you  are  temporarily running as
-            another user.  However, setting COLUMNS and/or  LINES
-            overrides  the  library's  use  of  the  screen  size
-            obtained from the operating system.
-
-            Either COLUMNS or  LINES  symbols  may  be  specified
-            independently.   This  is mainly useful to circumvent
-            legacy misfeatures of  terminal  descriptions,  e.g.,
-            xterm which commonly specifies a 65 line screen.  For
-            best results, lines and cols should not be  specified
-            in a terminal description for terminals which are run
-            as emulations.
-
-            Use the use_env function to disable all use of exter-
-            nal  environment  (but not including system calls) to
-            determine the screen size.  Use the use_tioctl  func-
-            tion  to  update COLUMNS or LINES to match the screen
-            size obtained from system calls or the terminal data-
-            base.
-
-       ESCDELAY
-            Specifies  the total time, in milliseconds, for which
-            ncurses will await  a  character  sequence,  e.g.,  a
-            function  key.  The default value, 1000 milliseconds,
-            is enough for most uses.  However, it is made a vari-
-            able to accommodate unusual applications.
-
-            The most common instance where you may wish to change
-            this value is to work with slow hosts, e.g.,  running
-            on  a  network.   If  the host cannot read characters
-            rapidly enough, it will have the same  effect  as  if
-            the  terminal did not send characters rapidly enough.
-            The library will still see a timeout.
-
-            Note that xterm mouse events are built up from  char-
-            acter  sequences  received  from  the xterm.  If your
-            application makes heavy use of multiple-clicking, you
-            may  wish  to lengthen this default value because the
-            timeout applies to the composed multi-click event  as
-            well as the individual clicks.
-
-            In  addition to the environment variable, this imple-
-            mentation provides a global variable  with  the  same
-            name.  Portable applications should not rely upon the
-            presence of ESCDELAY in either form, but setting  the
-            environment  variable rather than the global variable
-            does not create problems when compiling  an  applica-
-            tion.
-
-       HOME Tells  ncurses where your home directory is.  That is
-            where  it  may  read  and  write  auxiliary  terminal
-            descriptions:
-
-            $HOME/.termcap
-            $HOME/.terminfo
-
-       LINES
-            Like  COLUMNS,  specify  the  height of the screen in
-            characters.  See COLUMNS for a detailed description.
-
-       MOUSE_BUTTONS_123
-            This applies only to the OS/2 EMX port.  It specifies
-            the  order  of  buttons on the mouse.  OS/2 numbers a
-            3-button mouse inconsistently from other platforms:
-
-            1 = left
-            2 = right
-            3 = middle.
-
-            This variable lets  you  customize  the  mouse.   The
-            variable  must  be  three  numeric  digits 1-3 in any
-            order, e.g., 123 or 321.  If  it  is  not  specified,
-            ncurses uses 132.
-
-       NCURSES_ASSUMED_COLORS
-            Override  the  compiled-in assumption that the termi-
-            nal's  default   colors   are   white-on-black   (see
-            default_colors(3x)).   You may set the foreground and
-            background color values with this  environment  vari-
-            able  by  proving  a 2-element list: foreground,back-
-            ground.  For example, to tell ncurses to  not  assume
-            anything  about  the colors, set this to "-1,-1".  To
-            make it green-on-black, set it to "2,0".   Any  posi-
-            tive value from zero to the terminfo max_colors value
-            is allowed.
-
-       NCURSES_CONSOLE2
-            This applies only to the MinGW port of ncurses.
-
-            The Console2 program's handling of the Microsoft Con-
-            sole API call CreateConsoleScreenBuffer is defective.
-            Applications which use this will hang.   However,  it
-            is  possible  to  simulate the action of this call by
-            mapping coordinates, explicitly saving and  restoring
-            the  original  screen contents.  Setting the environ-
-            ment variable NCGDB has the same effect.
-
-       NCURSES_GPM_TERMS
-            This applies only to ncurses configured  to  use  the
-            GPM interface.
-
-            If present, the environment variable is a list of one
-            or more terminal names against which the  TERM  envi-
-            ronment  variable is matched.  Setting it to an empty
-            value disables the GPM interface; using the  built-in
-            support for xterm, etc.
-
-            If  the  environment variable is absent, ncurses will
-            attempt to open GPM if TERM contains "linux".
-
-       NCURSES_NO_HARD_TABS
-            Ncurses may use tabs as part of the  cursor  movement
-            optimization.   In  some  cases, your terminal driver
-            may not handle these properly.  Set this  environment
-            variable to disable the feature.  You can also adjust
-            your stty settings to avoid the problem.
-
-       NCURSES_NO_MAGIC_COOKIE
-            Some  terminals  use  a  magic-cookie  feature  which
-            requires  special  handling  to make highlighting and
-            other video attributes  display  properly.   You  can
-            suppress  the  highlighting entirely for these termi-
-            nals by setting this environment variable.
-
-       NCURSES_NO_PADDING
-            Most of the terminal  descriptions  in  the  terminfo
-            database  are  written for real "hardware" terminals.
-            Many people use terminal emulators  which  run  in  a
-            windowing  environment  and use curses-based applica-
-            tions.  Terminal emulators can duplicate all  of  the
-            important aspects of a hardware terminal, but they do
-            not have the same limitations.  The chief  limitation
-            of  a  hardware  terminal from the standpoint of your
-            application is the management of dataflow, i.e., tim-
-            ing.  Unless a hardware terminal is interfaced into a
-            terminal concentrator (which does flow  control),  it
-            (or  your application) must manage dataflow, prevent-
-            ing overruns.  The  cheapest  solution  (no  hardware
-            cost) is for your program to do this by pausing after
-            operations that the terminal  does  slowly,  such  as
-            clearing the display.
-
-            As  a  result,  many terminal descriptions (including
-            the vt100) have delay times embedded.  You  may  wish
-            to  use  these  descriptions, but not want to pay the
-            performance penalty.
-
-            Set the NCURSES_NO_PADDING  environment  variable  to
-            disable all but mandatory padding.  Mandatory padding
-            is used as a part of special control  sequences  such
-            as flash.
-
-       NCURSES_NO_SETBUF
-            This setting is obsolete.  Before changes
-
-            o   started with 5.9 patch 20120825 and
-
-            o   continued though 5.9 patch 20130126
-
-            ncurses  enabled buffered output during terminal ini-
-            tialization.  This was done (as in SVr4  curses)  for
-            performance  reasons.   For testing purposes, both of
-            ncurses and certain applications,  this  feature  was
-            made  optional.   Setting the NCURSES_NO_SETBUF vari-
-            able disabled output buffering, leaving the output in
-            the original (usually line buffered) mode.
-
-            In  the  current implementation, ncurses performs its
-            own buffering and does not require  this  workaround.
-            It does not modify the buffering of the standard out-
-            put.
-
-            The reason for the change was to  make  the  behavior
-            for  interrupts  and  other signals more robust.  One
-            drawback is  that  certain  nonconventional  programs
-            would mix ordinary stdio calls with ncurses calls and
-            (usually) work.  This is  no  longer  possible  since
-            ncurses is not using the buffered standard output but
-            its own output (to the same file descriptor).   As  a
-            special  case, the low-level calls such as putp still
-            use the standard output.  But high-level curses calls
-            do not.
-
-       NCURSES_NO_UTF8_ACS
-            During initialization, the ncurses library checks for
-            special cases where VT100 line-drawing (and the  cor-
-            responding   alternate  character  set  capabilities)
-            described in the terminfo are known  to  be  missing.
-            Specifically,  when  running  in  a UTF-8 locale, the
-            Linux console emulator and  the  GNU  screen  program
-            ignore  these.   Ncurses  checks the TERM environment
-            variable for these.  For  other  special  cases,  you
-            should  set  this  environment  variable.  Doing this
-            tells ncurses to use Unicode values which  correspond
-            to the VT100 line-drawing glyphs.  That works for the
-            special cases cited, and is likely to work for termi-
-            nal emulators.
-
-            When  setting  this  variable, you should set it to a
-            nonzero value.  Setting it to zero (or to  a  nonnum-
-            ber)  disables  the  special  check  for  "linux" and
-            "screen".
-
-            As  an  alternative  to  the  environment   variable,
-            ncurses  checks  for  an extended terminfo capability
-            U8.  This is a numeric capability which can  be  com-
-            piled using tic -x.  For example
-
-            # linux console, if patched to provide working
-            # VT100 shift-in/shift-out, with corresponding font.
-            linux-vt100|linux console with VT100 line-graphics,
-                    U8#0, use=linux,
-
-            # uxterm with vt100Graphics resource set to false
-            xterm-utf8|xterm relying on UTF-8 line-graphics,
-                    U8#1, use=xterm,
-
-            The name "U8" is chosen to be two characters, to per-
-            mit it to be used by applications that  use  ncurses'
-            termcap interface.
-
-       NCURSES_TRACE
-            During  initialization, the ncurses debugging library
-            checks the NCURSES_TRACE environment variable.  If it
-            is  defined,  to  a  numeric value, ncurses calls the
-            trace function, using that value as the argument.
-
-            The argument values, which are defined  in  curses.h,
-            provide  several  types of information.  When running
-            with traces enabled, your application will write  the
-            file trace to the current directory.
-
-       TERM Denotes  your  terminal  type.  Each terminal type is
-            distinct, though many are similar.
-
-            TERM is commonly set by terminal  emulators  to  help
-            applications  find  a  workable terminal description.
-            Some of those choose a popular  approximation,  e.g.,
-            "ansi",  "vt100",  "xterm"  rather than an exact fit.
-            Not infrequently, your application will have problems
-            with that approach, e.g., incorrect function-key def-
-            initions.
-
-            If you set TERM in your environment, it has no effect
-            on  the  operation of the terminal emulator.  It only
-            affects the way applications work within  the  termi-
-            nal.  Likewise, as a general rule (xterm being a rare
-            exception), terminal emulators  which  allow  you  to
-            specify TERM as a parameter or configuration value do
-            not change their behavior to match that setting.
-
-       TERMCAP
-            If the ncurses library has been configured with term-
-            cap  support,  ncurses  will  check  for a terminal's
-            description in termcap form if it is not available in
-            the terminfo database.
-
-            The  TERMCAP  environment  variable contains either a
-            terminal description (with newlines stripped out), or
-            a  file name telling where the information denoted by
-            the TERM  environment  variable  exists.   In  either
-            case,  setting it directs ncurses to ignore the usual
-            place for this information, e.g., /etc/termcap.
-
-       TERMINFO
-            Overrides the directory in which ncurses searches for
-            your terminal description.  This is the simplest, but
-            not the only way to change the list  of  directories.
-            The complete list of directories in order follows:
-
-            o   the  last  directory  to  which ncurses wrote, if
-                any, is searched first
-
-            o   the directory specified by the TERMINFO  environ-
-                ment variable
-
-            o   $HOME/.terminfo
-
-            o   directories  listed in the TERMINFO_DIRS environ-
-                ment variable
-
-            o   one or more directories whose names  are  config-
-                ured and compiled into the ncurses library, i.e.,
-
-                o   /usr/local/ncurses/share/ter-
-                    minfo:/usr/share/terminfo  (corresponding  to
-                    the TERMINFO_DIRS variable)
-
-                o   /usr/share/terminfo   (corresponding  to  the
-                    TERMINFO variable)
-
-       TERMINFO_DIRS
-            Specifies a list of directories to search for  termi-
-            nal  descriptions.   The  list is separated by colons
-            (i.e., ":") on Unix, semicolons on OS/2 EMX.
-
-            All of the  terminal  descriptions  are  in  terminfo
-            form.  Normally these are stored in a directory tree,
-            using subdirectories named by the first letter of the
-            terminal names therein.
-
-            If ncurses is built with a hashed database, then each
-            entry in this list can also be the path of the corre-
-            sponding database file.
-
-            If  ncurses is built with a support for reading term-
-            cap files directly, then an entry in this list may be
-            the path of a termcap file.
-
-       TERMPATH
-            If  TERMCAP  does  not  hold a file name then ncurses
-            checks the TERMPATH environment variable.  This is  a
-            list  of  filenames  separated  by  spaces  or colons
-            (i.e., ":") on Unix, semicolons on OS/2 EMX.
-
-            If the TERMPATH  environment  variable  is  not  set,
-            ncurses    looks    in    the   files   /etc/termcap,
-            /usr/share/misc/termcap and $HOME/.termcap,  in  that
-            order.
-
-       The  library  may be configured to disregard the following
-       variables when the current user is the  superuser  (root),
-       or if the application uses setuid or setgid permissions:
-
-              $TERMINFO,  $TERMINFO_DIRS,  $TERMPATH,  as well as
-              $HOME.
+       o   If the value of TERMINFO begins with "hex:" or "b64:", ncurses uses
+           the remainder of the value as a compiled terminfo description.  You
+           might produce the base64 format using infocmp(1m).
 
+                  TERMINFO=$(infocmp -0 -Q2 -q)
+                  export TERMINFO
 
-
-

ALTERNATE CONFIGURATIONS

-       Several different configurations are  possible,  depending
-       on   the  configure  script  options  used  when  building
-       ncurses.  There are a few main options whose  effects  are
-       visible to the applications developer using ncurses:
+           The  compiled  description  is  used  only if it corresponds to the
+           terminal type identified by TERM.
+
+       Setting TERMINFO is the simplest, but  not  the  only,  way  to  direct
+       ncurses to a terminal database.  The search path is as follows.
+
+       o   the last terminal database to which the running ncurses application
+           wrote, if any
+
+       o   the location specified by the TERMINFO environment variable
+
+       o   $HOME/.terminfo
 
-       --disable-overwrite
-            The  standard include for ncurses is as noted in SYN-
-            OPSIS:
+       o   locations listed in the TERMINFO_DIRS environment variable
 
-            #include <curses.h>
+       o   location(s) configured and compiled into ncurses
 
-            This option is used to avoid filename conflicts  when
-            ncurses  is  not the main implementation of curses of
-            the computer.   If  ncurses  is  installed  disabling
-            overwrite,  it  puts  its  headers in a subdirectory,
-            e.g.,
+          o   /usr/share/terminfo
 
-            #include <ncurses/curses.h>
 
-            It also omits a symbolic link which would  allow  you
-            to use -lcurses to build executables.
+

TERMINFO_DIRS

+       This variable specifies a list of locations, akin  to  PATH,  in  which
+       ncurses  searches  for  the  terminal  type  descriptions  described by
+       TERMINFO above.  The list items are separated by  colons  on  Unix  and
+       semicolons  on  OS/2  EMX.   System V  terminfo  lacks  a corresponding
+       feature; TERMINFO_DIRS is an ncurses extension.
 
-       --enable-widec
-            The  configure script renames the library and (if the
-            --disable-overwrite option is used) puts  the  header
-            files  in  a  different  subdirectory.   All  of  the
-            library names have a  "w"  appended  to  them,  i.e.,
-            instead of
 
-            -lncurses
+

TERMPATH

+       If TERMCAP does not hold a terminal type description or file name, then
+       ncurses  checks  the contents of TERMPATH, a list of locations, akin to
+       PATH, in which it searches for termcap terminal type descriptions.  The
+       list items are separated by colons on Unix and semicolons on OS/2 EMX.
+
+       If both TERMCAP and TERMPATH are unset or invalid, ncurses searches for
+       the files /etc/termcap, /usr/share/misc/termcap, and $HOME/.termcap, in
+       that order.
+
+
+

ALTERNATE CONFIGURATIONS

+       Many  different  ncurses configurations are possible, determined by the
+       options given to the configure script when building the  library.   Run
+       the  script  with  the  --help option to peruse them all.  A few are of
+       particular significance to the application developer employing ncurses.
+
+       --disable-overwrite
+            The standard include for ncurses is as noted in SYNOPSIS:
+
+                #include <curses.h>
+
+            This option is used to avoid filename conflicts  when  ncurses  is
+            not the main implementation of curses of the computer.  If ncurses
+            is installed  disabling  overwrite,  it  puts  its  headers  in  a
+            subdirectory, e.g.,
+
+                #include <ncurses/curses.h>
+
+            It  also  omits  a  symbolic  link  which  would  allow you to use
+            -lcurses to build executables.
+
+       --enable-widec
+            The  configure  script   renames   the   library   and   (if   the
+            --disable-overwrite  option  is  used)  puts the header files in a
+            different subdirectory.  All of  the  library  names  have  a  "w"
+            appended to them, i.e., instead of
+
+                -lncurses
 
             you link with
 
-            -lncursesw
-
-            You must also define _XOPEN_SOURCE_EXTENDED when com-
-            piling for the  wide-character  library  to  use  the
-            extended  (wide-character)  functions.   The curses.h
-            file  which  is  installed  for  the   wide-character
-            library  is designed to be compatible with the normal
-            library's header.  Only the size of the WINDOW struc-
-            ture  differs, and very few applications require more
-            than a  pointer  to  WINDOWs.   If  the  headers  are
-            installed   allowing  overwrite,  the  wide-character
-            library's headers should be installed last, to  allow
-            applications  to  be  built using either library from
-            the same set of headers.
-
-       --with-pthread
-            The configure script renames the library.  All of the
-            library names have a "t" appended to them (before any
-            "w" added by --enable-widec).
-
-            The global variables such as LINES  are  replaced  by
-            macros  to allow read-only access.  At the same time,
-            setter-functions are provided to  set  these  values.
-            Some  applications  (very few) may require changes to
-            work with this convention.
-
-       --with-shared
-
-       --with-normal
-
-       --with-debug
-
-       --with-profile
-            The shared and normal (static) library  names  differ
-            by  their  suffixes,  e.g.,  libncurses.so  and libn-
-            curses.a.  The debug and profiling  libraries  add  a
-            "_g" and a "_p" to the root names respectively, e.g.,
-            libncurses_g.a and libncurses_p.a.
-
-       --with-trace
-            The trace function  normally  resides  in  the  debug
-            library, but it is sometimes useful to configure this
-            in the  shared  library.   Configure  scripts  should
-            check for the function's existence rather than assum-
-            ing it is always in the debug library.
+                -lncursesw
 
+            You  must  also  enable  the wide-character features in the header
+            file when compiling for the  wide-character  library  to  use  the
+            extended  (wide-character)  functions.   The  symbol which enables
+            these features has changed since X/Open Curses, Issue 4:
 
-
-

FILES

-       /usr/share/tabset
-            directory containing  initialization  files  for  the
-            terminal capability database /usr/share/terminfo ter-
-            minal capability database
+            o   Originally, the wide-character  feature  required  the  symbol
+                _XOPEN_SOURCE_EXTENDED  but  that  was  only  valid  for  XPG4
+                (1996).
 
+            o   Later, that was deemed conflicting with _XOPEN_SOURCE  defined
+                to 500.
 
-
-

SEE ALSO

-       terminfo(5) and related pages whose  names  begin  "curs_"
-       for detailed routine descriptions.
-       curs_variables(3x)
+            o   As  of  mid-2018,  none of the features in this implementation
+                require a _XOPEN_SOURCE feature greater  than  600.   However,
+                X/Open Curses, Issue 7 (2009) recommends defining it to 700.
 
+            o   Alternatively,   you   can  enable  the  feature  by  defining
+                NCURSES_WIDECHAR with the caveat that some other  header  file
+                than  curses.h  may require a specific value for _XOPEN_SOURCE
+                (or a system-specific symbol).
 
-
-

EXTENSIONS

-       The  ncurses  library  can  be  compiled  with  an  option
-       (-DUSE_GETCAP) that falls back to the old-style /etc/term-
-       cap file if the terminal setup code cannot find a terminfo
-       entry corresponding to TERM.  Use of this feature  is  not
-       recommended,  as it essentially includes an entire termcap
-       compiler in the ncurses startup code, at significant  cost
-       in core and startup cycles.
-
-       The  ncurses  library  includes  facilities  for capturing
-       mouse events on certain terminals (including xterm).   See
-       the curs_mouse(3x) manual page for details.
-
-       The  ncurses library includes facilities for responding to
-       window resizing events, e.g., when running  in  an  xterm.
-       See  the  resizeterm(3x)  and wresize(3x) manual pages for
-       details.  In addition, the library may be configured  with
-       a SIGWINCH handler.
-
-       The  ncurses library extends the fixed set of function key
-       capabilities of  terminals  by  allowing  the  application
-       designer  to  define  additional key sequences at runtime.
-       See the define_key(3x) key_defined(3x), and keyok(3x) man-
-       ual pages for details.
-
-       The ncurses library can exploit the capabilities of termi-
-       nals which implement the ISO-6429 SGR 39 and SGR  49  con-
-       trols, which allow an application to reset the terminal to
-       its original foreground and background colors.   From  the
-       users'  perspective,  the application is able to draw col-
-       ored text on a background  whose  color  is  set  indepen-
-       dently,  providing  better  control  over color contrasts.
-       See the default_colors(3x) manual page for details.
-
-       The ncurses library  includes  a  function  for  directing
-       application  output  to a printer attached to the terminal
-       device.  See the curs_print(3x) manual page for details.
+            The curses.h header file installed for the wide-character  library
+            is  designed  to be compatible with the non-wide library's header.
+            Only the size of the WINDOW structure  differs;  few  applications
+            require more than pointers to WINDOWs.
 
+            If  the  headers  are  installed  allowing  overwrite,  the  wide-
+            character library's headers should be  installed  last,  to  allow
+            applications to be built using either library from the same set of
+            headers.
 
-
-

PORTABILITY

-       The ncurses library is intended to be  BASE-level  confor-
-       mant with XSI Curses.  The EXTENDED XSI Curses functional-
-       ity (including color support) is supported.
-
-       A small number of local differences (that  is,  individual
-       differences  between the XSI Curses and ncurses calls) are
-       described in  PORTABILITY  sections  of  the  library  man
-       pages.
-
-       Unlike  other  implementations, this one checks parameters
-       such as pointers to WINDOW structures to ensure  they  are
-       not  null.  The main reason for providing this behavior is
-       to guard against programmer error.  The standard interface
-       does not provide a way for the library to tell an applica-
-       tion which  of  several  possible  errors  were  detected.
-       Relying  on  this (or some other) extension will adversely
-       affect the portability of curses applications.
-
-       This implementation also contains several extensions:
-
-       o   The routine has_key is not part of  XPG4,  nor  is  it
-           present  in  SVr4.  See the curs_getch(3x) manual page
-           for details.
-
-       o   The routine slk_attr is not part of XPG4,  nor  is  it
-           present in SVr4.  See the curs_slk(3x) manual page for
-           details.
-
-       o   The routines getmouse, mousemask, ungetmouse, mousein-
-           terval, and wenclose relating to mouse interfacing are
-           not part of XPG4, nor are they present in  SVr4.   See
-           the curs_mouse(3x) manual page for details.
-
-       o   The  routine  mcprint  was not present in any previous
-           curses implementation.  See the curs_print(3x)  manual
-           page for details.
-
-       o   The  routine  wresize  is  not part of XPG4, nor is it
-           present in SVr4.  See the wresize(3x) manual page  for
-           details.
-
-       o   The  WINDOW structure's internal details can be hidden
-           from application programs.   See  curs_opaque(3x)  for
-           the discussion of is_scrollok, etc.
-
-       o   This implementation can be configured to provide rudi-
-           mentary support for multi-threaded applications.   See
-           curs_threads(3x) for details.
-
-       o   This  implementation can also be configured to provide
-           a set of functions which improve the ability to manage
-           multiple screens.  See curs_sp_funcs(3x) for details.
-
-       In  historic curses versions, delays embedded in the capa-
-       bilities cr, ind, cub1, ff and tab activated corresponding
-       delay  bits  in  the UNIX tty driver.  In this implementa-
-       tion, all padding is done  by  sending  NUL  bytes.   This
-       method  is slightly more expensive, but narrows the inter-
-       face to the UNIX kernel significantly  and  increases  the
-       package's portability correspondingly.
+       --with-pthread
+            The configure script renames the  library.   All  of  the  library
+            names  have  a  "t"  appended  to  them  (before  any "w" added by
+            --enable-widec).
 
+            The global variables such as LINES are replaced by macros to allow
+            read-only access.  At the same time, setter-functions are provided
+            to set these values.  Some applications  (very  few)  may  require
+            changes to work with this convention.
 
-
-

NOTES

-       The  header  file  <curses.h>  automatically  includes the
-       header files <stdio.h> and <unctrl.h>.
+       --with-shared
+       --with-normal
+       --with-debug
+       --with-profile
+            The  shared  and  normal  (static)  library  names differ by their
+            suffixes, e.g., libncurses.so and  libncurses.a.   The  debug  and
+            profiling  libraries  add  a  "_g"  and  a  "_p" to the root names
+            respectively, e.g., libncurses_g.a and libncurses_p.a.
 
-       If standard output from a ncurses program  is  re-directed
-       to  something  which  is not a tty, screen updates will be
-       directed to standard error.  This was an undocumented fea-
-       ture of AT&T System V Release 3 curses.
+       --with-termlib
+            Low-level functions which do not depend upon whether  the  library
+            supports wide-characters, are provided in the tinfo library.
 
+            By  doing  this, it is possible to share the tinfo library between
+            wide/normal configurations as well  as  reduce  the  size  of  the
+            library when only low-level functions are needed.
 
-
-

AUTHORS

-       Zeyd  M.  Ben-Halim,  Eric  S.  Raymond, Thomas E. Dickey.
-       Based on pcurses by Pavel Curtis.
+            Those functions are described in these pages:
+
+            o   curs_extend(3x) - miscellaneous curses extensions
+
+            o   curs_inopts(3x) - curses input options
+
+            o   curs_kernel(3x) - low-level curses routines
+
+            o   curs_termattrs(3x) - curses environment query routines
+
+            o   curs_termcap(3x) - curses emulation of termcap
+
+            o   curs_terminfo(3x) - curses interface to terminfo database
+
+            o   curs_util(3x) - miscellaneous curses utility routines
+
+       --with-trace
+            The  trace  function normally resides in the debug library, but it
+            is sometimes useful to  configure  this  in  the  shared  library.
+            Configure scripts should check for the function's existence rather
+            than assuming it is always in the debug library.
+
+
+

FILES

+       /usr/share/tabset
+              tab stop initialization database
+
+       /usr/share/terminfo
+              compiled terminal capability database
+
+
+

NOTES

+       X/Open Curses permits most functions it specifies to be made  available
+       as macros as well.  ncurses does so
+
+       o   for functions that return values via their parameters,
+
+       o   to support obsolete features,
+
+       o   to  reuse functions (for example, those that move the cursor before
+           another operation), and
+
+       o   a few special cases.
+
+       If the standard  output  file  descriptor  of  an  ncurses  program  is
+       redirected  to  something  that  is  not a terminal device, the library
+       writes screen updates to the standard error file descriptor.  This  was
+       an undocumented feature of SVr3 curses.
+
+       See  subsection  "Header  Files"  below  regarding  symbols  exposed by
+       inclusion of curses.h.
+
+
+

EXTENSIONS

+       ncurses enables an application  to  capture  mouse  events  on  certain
+       terminals, including xterm(1); see curs_mouse(3x).
+
+       ncurses  provides  a  means of responding to window resizing events, as
+       when running in a GUI terminal emulator application such as xterm;  see
+       resizeterm(3x) and wresize(3x).
+
+       ncurses allows an application to query the terminal for the presence of
+       a wide variety of special keys; see has_key(3x).
+
+       ncurses extends the fixed set of function key capabilities specified by
+       X/Open   Curses  by  allowing  the  application  programmer  to  define
+       additional key events at runtime; see define_key(3x),  key_defined(3x),
+       keybound(3x), and keyok(3x).
+
+       ncurses   can   exploit  the  capabilities  of  terminals  implementing
+       ISO 6429/ECMA-48  SGR 39  and  SGR 49   sequences,   which   allow   an
+       application  to  reset  the  terminal  to  its  original foreground and
+       background colors.  From a user's perspective, the application is  able
+       to  draw colored text on a background whose color is set independently,
+       providing better control over color contrasts.  See default_colors(3x).
+
+       An  ncurses  application  can  eschew  knowledge  of  WINDOW  structure
+       internals, instead using accessor functions such as is_scrollok(3x).
+
+       ncurses  enables  an  application  to  direct  application  output to a
+       printer attached to the terminal device; see curs_print(3x).
+
+       ncurses offers slk_attr(3x) as a counterpart of attr_get(3x) for  soft-
+       label  key lines, and extended_slk_color(3x) as a form of slk_color(3x)
+       that can gather color  information  from  them  when  many  colors  are
+       supported.
+
+       Some  extensions  are available only if ncurses permits modification of
+       unctrl(3x)'s behavior; see use_legacy_coding(3x).  ncurses is  compiled
+       to support them; section "ALTERNATE CONFIGURATIONS" describes how.
+
+       o   Rudimentary   support   for   multi-threaded  applications  may  be
+           available; see curs_threads(3x).
+
+       o   Functions that ease the  management  of  multiple  screens  can  be
+           exposed; see curs_sp_funcs(3x).
+
+       o   To aid applications to debug their memory usage, ncurses optionally
+           offers functions to more aggressively free  memory  it  dynamically
+           allocates itself; see curs_memleaks(3x).
+
+       o   The   library  facilitates  auditing  and  troubleshooting  of  its
+           behavior; see curs_trace(3x).
+
+       o   The compiler option -DUSE_GETCAP causes the library to fall back to
+           reading /etc/termcap if the terminal setup code cannot find a term-
+           info entry corresponding to TERM.   Use  of  this  feature  is  not
+           recommended,  as it essentially includes an entire termcap compiler
+           in the ncurses  startup  code,  at  a  cost  in  memory  usage  and
+           application launch latency.
+
+       PDCurses   and  NetBSD  curses  incorporate  some  ncurses  extensions.
+       Individual man pages indicate where this is the case.
+
+
+

PORTABILITY

+       X/Open Curses defines two levels of conformance, "base" and "enhanced".
+       The latter includes several additional features, such as wide-character
+       and color support.  ncurses intends base-level conformance with  X/Open
+       Curses,  and  supports  all  features  of its enhanced level except the
+       untic utility.
+
+       Differences between X/Open Curses and ncurses  are  documented  in  the
+       "PORTABILITY" sections of applicable man pages.
+
+
+

Error Checking

+       In  many cases, X/Open Curses is vague about error conditions, omitting
+       some of the SVr4 documentation.
+
+       Unlike other implementations, ncurses checks pointer  parameters,  such
+       as  those to WINDOW structures, to ensure that they are not null.  This
+       is done primarily to guard  against  programmer  error.   The  standard
+       interface does not provide a way for the library to tell an application
+       which of several possible errors occurred.  Relying on  this  (or  some
+       other)   extension   adversely   affects   the  portability  of  curses
+       applications.
+
+
+

Padding Differences

+       In historical curses implementations, delays embedded in  the  terminfo
+       capabilities  carriage_return  (cr),  scroll_forward (ind), cursor_left
+       (cub1), form_feed (ff), and tab (ht) activated corresponding delay bits
+       in  the  Unix terminal driver.  ncurses performs all padding by sending
+       NUL bytes to the device.  This method is slightly more  expensive,  but
+       narrows   the   interface   to   the   Unix  kernel  significantly  and
+       correspondingly increases the package's portability.
+
+
+

Header Files

+       The header file curses.h itself includes the header files  stdio.h  and
+       unctrl.h.
+
+       X/Open Curses has more to say,
+
+           The  inclusion  of  curses.h  may make visible all symbols from the
+           headers stdio.h, term.h, termios.h, and wchar.h.
+
+       but does not finish the story.  A more complete account follows.
+
+       o   Starting with 4BSD curses (1980) all implementations have  provided
+           a curses.h file.
+
+           BSD  curses  code  included  curses.h and unctrl.h from an internal
+           header file curses.ext, where "ext" abbreviated "externs".
+
+           The implementations of printw and scanw used undocumented  internal
+           functions  of  the  standard I/O library (_doprnt and _doscan), but
+           nothing in curses.h itself relied upon stdio.h.
+
+       o   SVr2 curses added newterm, which relies upon  stdio.h  because  its
+           function prototype employs the FILE type.
+
+           SVr4 curses added putwin and getwin, which also use stdio.h.
+
+           X/Open Curses specifies all three of these functions.
+
+           SVr4  curses  and  X/Open  Curses  do  not require the developer to
+           include stdio.h before curses.h.  Both document use  of  curses  as
+           requiring only curses.h.
+
+           As a result, standard curses.h always includes stdio.h.
+
+       o   X/Open  Curses  and  SVr4  curses  are inconsistent with respect to
+           unctrl.h.
+
+           As noted in curs_util(3x), ncurses includes unctrl.h from  curses.h
+           (as SVr4 does).
+
+       o   X/Open  Curses's  comments  about term.h and termios.h may refer to
+           HP-UX and AIX.
+
+           HP-UX curses includes term.h from curses.h to declare setupterm  in
+           curses.h, but ncurses and Solaris curses do not.
+
+           AIX  curses  includes  term.h  and  termios.h.   Again, ncurses and
+           Solaris curses do not.
+
+       o   X/Open Curses says that curses.h may include term.h, but  does  not
+           require it to do so.
+
+           Some  programs  use functions declared in both curses.h and term.h,
+           and must include both header files in the same  module.   Very  old
+           versions  of  AIX  curses  required  inclusion  of  curses.h before
+           term.h.
+
+           The header files supplied by ncurses include the  standard  library
+           headers  required  for  its  declarations,  so ncurses's own header
+           files can be included in  any  order.   But  for  portability,  you
+           should include curses.h before term.h.
+
+       o   X/Open  Curses  says  "may make visible" because including a header
+           file does not necessarily make visible all of  the  symbols  in  it
+           (consider #ifdef and similar).
+
+           For  instance, ncurses's curses.h may include wchar.h if the proper
+           symbol is defined, and if ncurses is configured for  wide-character
+           support.   If  wchar.h is included, its symbols may be made visible
+           depending on the value of the _XOPEN_SOURCE feature test macro.
+
+       o   X/Open Curses mandates an application's inclusion of one standard C
+           library  header  in  a  special  case:  stdarg.h before curses.h to
+           prototype the functions vw_printw and  vw_scanw  (as  well  as  the
+           obsolete  vwprintw  and  vwscanw).   Each of these takes a variadic
+           argument list, a va_list parameter, like that of printf(3).
+
+           SVr3 curses introduced  the  two  obsolete  functions,  and  X/Open
+           Curses  the  others.   In  between,  SVr4  curses  provided for the
+           possibility that an application might include either  varargs.h  or
+           stdarg.h.   These  represented  contrasting  approaches to handling
+           variadic argument lists.  The older interface,  varargs.h,  used  a
+           pointer  to char for variadic functions' va_list parameter.  Later,
+           the list acquired its own standard data type, va_list,  defined  in
+           stdarg.h,  empowering the compiler to check the types of a function
+           call's actual parameters against the formal ones  declared  in  its
+           prototype.
+
+           No   conforming   implementations   of  X/Open  Curses  require  an
+           application to include stdarg.h before curses.h because they either
+           have  allowed  for  a  special type, or, like ncurses, they include
+           stdarg.h themselves to provide a portable interface.
+
+
+

AUTHORS

+       Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.  Based on pcurses
+       by Pavel Curtis.
+
+
+

SEE ALSO

+       curs_variables(3x), terminfo(5), user_caps(5)
 
 
 
-                                                            ncurses(3x)
+ncurses 6.5                       2024-04-27                       ncurses(3x)
 
-
-Man(1) output converted with man2html +