]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/ncurses.3x.html
ncurses 5.9 - patch 20120114
[ncurses.git] / doc / html / man / ncurses.3x.html
index 28f435853b1d8e07ccfbfd1fb80ef59c6bf8e4c7..530b293ac1c87f23be19f7ced997adcf50ff9ced 100644 (file)
@@ -2,7 +2,7 @@
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: ncurses.3x,v 1.100 2010/10/02 23:30:31 tom Exp @
+  * @Id: ncurses.3x,v 1.106 2011/12/17 23:19:59 tom Exp @
 -->
 <HTML>
 <HEAD>
@@ -63,7 +63,7 @@
        sonable   optimization.    This  implementation  is  ``new
        curses'' (ncurses) and is  the  approved  replacement  for
        4.4BSD  classic curses, which has been discontinued.  This
-       describes <STRONG>ncurses</STRONG> version 5.7 (patch 20101002).
+       describes <STRONG>ncurses</STRONG> version 5.9 (patch 20120107).
 
        The <STRONG>ncurses</STRONG> library emulates the curses library of  System
        V  Release  4  UNIX,  and  XPG4 (X/Open Portability Guide)
        Among those, the most basic routines are <STRONG>move</STRONG>  and  <STRONG>addch</STRONG>.
        More  general versions of these routines are included with
        names beginning with <STRONG>w</STRONG>, allowing the  user  to  specify  a
-       window.  The routines not beginning with <STRONG>w</STRONG> affect <STRONG>stdscr</STRONG>.
+       window.   The routines not beginning with <STRONG>w</STRONG> affect <STRONG>stdscr</STRONG>.
 
-       After  using  routines  to manipulate a window, <STRONG>refresh</STRONG> is
-       called, telling <STRONG>curses</STRONG> to make the user's CRT screen  look
-       like  <STRONG>stdscr</STRONG>.   The characters in a window are actually of
-       type <STRONG>chtype</STRONG>, (character and attribute data) so that  other
-       information  about  the  character may also be stored with
+       After using routines to manipulate a  window,  <STRONG>refresh</STRONG>  is
+       called,  telling <STRONG>curses</STRONG> to make the user's CRT screen look
+       like <STRONG>stdscr</STRONG>.  The characters in a window are  actually  of
+       type  <STRONG>chtype</STRONG>, (character and attribute data) so that other
+       information about the character may also  be  stored  with
        each character.
 
-       Special windows  called  <EM>pads</EM>  may  also  be  manipulated.
+       Special  windows  called  <EM>pads</EM>  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-
+       the  screen and whose contents need not be completely dis-
        played.  See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> 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
+       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, <STRONG>curses</STRONG> 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
+       be  output.   On  input,  <STRONG>curses</STRONG> 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
        <STRONG>&lt;curses.h&gt;</STRONG>, such as <STRONG>A_REVERSE</STRONG>, <STRONG>ACS_HLINE</STRONG>, and <STRONG>KEY_LEFT</STRONG>.
 
        If the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> are set, or
-       if  the program is executing in a window environment, line
-       and column information in the  environment  will  override
+       if the program is executing in a window environment,  line
+       and  column  information  in the environment will override
        information read by <EM>terminfo</EM>.  This would affect a program
-       running in an AT&amp;T 630 layer, for example, where the  size
+       running  in an AT&amp;T 630 layer, for example, where the size
        of a screen is changeable (see <STRONG>ENVIRONMENT</STRONG>).
 
-       If  the environment variable <STRONG>TERMINFO</STRONG> is defined, any pro-
-       gram using <STRONG>curses</STRONG> checks for a local  terminal  definition
-       before  checking  in  the standard place.  For example, if
+       If the environment variable <STRONG>TERMINFO</STRONG> is defined, any  pro-
+       gram  using  <STRONG>curses</STRONG> checks for a local terminal definition
+       before checking in the standard place.   For  example,  if
        <STRONG>TERM</STRONG> is set to <STRONG>att4424</STRONG>, then the compiled terminal defini-
        tion is found in
 
              <STRONG>/usr/share/terminfo/a/att4424</STRONG>.
 
        (The <STRONG>a</STRONG> is copied from the first letter of <STRONG>att4424</STRONG> to avoid
-       creation of huge directories.)  However,  if  <STRONG>TERMINFO</STRONG>  is
+       creation  of  huge  directories.)  However, if <STRONG>TERMINFO</STRONG> is
        set to <STRONG>$HOME/myterms</STRONG>, <STRONG>curses</STRONG> first checks
 
              <STRONG>$HOME/myterms/a/att4424</STRONG>,
 
              <STRONG>/usr/share/terminfo/a/att4424</STRONG>.
 
-       This  is useful for developing experimental definitions or
+       This is useful for developing experimental definitions  or
        when write permission in <STRONG>/usr/share/terminfo</STRONG> is not avail-
        able.
 
-       The  integer  variables  <STRONG>LINES</STRONG>  and  <STRONG>COLS</STRONG>  are  defined in
-       <STRONG>&lt;curses.h&gt;</STRONG> and will be filled in by <STRONG>initscr</STRONG> with the  size
+       The integer  variables  <STRONG>LINES</STRONG>  and  <STRONG>COLS</STRONG>  are  defined  in
+       <STRONG>&lt;curses.h&gt;</STRONG>  and will be filled in by <STRONG>initscr</STRONG> with the size
        of the screen.  The constants <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG> have the val-
        ues <STRONG>1</STRONG> and <STRONG>0</STRONG>, respectively.
 
-       The <STRONG>curses</STRONG> routines also  define  the  <STRONG>WINDOW</STRONG>  <STRONG>*</STRONG>  variable
+       The  <STRONG>curses</STRONG>  routines  also  define  the <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> variable
        <STRONG>curscr</STRONG> which is used for certain low-level operations like
-       clearing and redrawing a screen containing  garbage.   The
+       clearing  and  redrawing a screen containing garbage.  The
        <STRONG>curscr</STRONG> can be used in only a few routines.
 
    <STRONG>Routine</STRONG> <STRONG>and</STRONG> <STRONG>Argument</STRONG> <STRONG>Names</STRONG>
-       Many  <STRONG>curses</STRONG> routines have two or more versions.  The rou-
+       Many <STRONG>curses</STRONG> routines have two or more versions.  The  rou-
        tines prefixed with <STRONG>w</STRONG> require a window argument.  The rou-
        tines prefixed with <STRONG>p</STRONG> require a pad argument.  Those with-
        out a prefix generally use <STRONG>stdscr</STRONG>.
 
        The routines prefixed with <STRONG>mv</STRONG> require a <EM>y</EM> and <EM>x</EM> coordinate
-       to  move to before performing the appropriate action.  The
-       <STRONG>mv</STRONG> routines imply a call to <STRONG>move</STRONG> before the  call  to  the
-       other  routine.  The coordinate <EM>y</EM> always refers to the row
-       (of the window), and <EM>x</EM> always refers to the  column.   The
+       to move to before performing the appropriate action.   The
+       <STRONG>mv</STRONG>  routines  imply  a call to <STRONG>move</STRONG> before the call to the
+       other routine.  The coordinate <EM>y</EM> always refers to the  row
+       (of  the  window), and <EM>x</EM> always refers to the column.  The
        upper left-hand corner is always (0,0), not (1,1).
 
        The routines prefixed with <STRONG>mvw</STRONG> take both a window argument
-       and <EM>x</EM> and <EM>y</EM> coordinates.  The window  argument  is  always
+       and  <EM>x</EM>  and  <EM>y</EM> coordinates.  The window argument is always
        specified before the coordinates.
 
-       In  each  case, <EM>win</EM> is the window affected, and <EM>pad</EM> is the
+       In each case, <EM>win</EM> is the window affected, and <EM>pad</EM>  is  the
        pad affected; <EM>win</EM> and <EM>pad</EM> are always pointers to type <STRONG>WIN-</STRONG>
        <STRONG>DOW</STRONG>.
 
        Option setting routines require a Boolean flag <EM>bf</EM> with the
-       value <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>; <EM>bf</EM> is always of type <STRONG>bool</STRONG>.   Most  of
-       the  data types used in the library routines, such as <STRONG>WIN-</STRONG>
-       <STRONG>DOW</STRONG>, <STRONG>SCREEN</STRONG>, <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are defined  in  <STRONG>&lt;curses.h&gt;</STRONG>.
-       Types  used for the terminfo routines such as <STRONG>TERMINAL</STRONG> are
+       value  <STRONG>TRUE</STRONG>  or <STRONG>FALSE</STRONG>; <EM>bf</EM> is always of type <STRONG>bool</STRONG>.  Most of
+       the data types used in the library routines, such as  <STRONG>WIN-</STRONG>
+       <STRONG>DOW</STRONG>,  <STRONG>SCREEN</STRONG>,  <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are defined in <STRONG>&lt;curses.h&gt;</STRONG>.
+       Types used for the terminfo routines such as <STRONG>TERMINAL</STRONG>  are
        defined in <STRONG>&lt;term.h&gt;</STRONG>.
 
-       This manual page describes functions which may  appear  in
-       any  configuration  of  the library.  There are two common
+       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  <STRONG>chtype</STRONG>
+                   characters  combined with attributes in <STRONG>chtype</STRONG>
                    data.
 
-                   Attributes  alone (no corresponding character)
-                   may be stored  in  <STRONG>chtype</STRONG>  or  the  equivalent
-                   <STRONG>attr_t</STRONG>  data.   In  either  case,  the data is
+                   Attributes alone (no corresponding  character)
+                   may  be  stored  in  <STRONG>chtype</STRONG>  or the equivalent
+                   <STRONG>attr_t</STRONG> data.  In  either  case,  the  data  is
                    stored in something like an integer.
 
-                   Each cell (row and  column)  in  a  <STRONG>WINDOW</STRONG>  is
+                   Each  cell  (row  and  column)  in a <STRONG>WINDOW</STRONG> is
                    stored as a <STRONG>chtype</STRONG>.
 
               ncursesw
-                   the  so-called  "wide"  library, which handles
-                   multibyte  characters  (see  the  section   on
+                   the so-called "wide"  library,  which  handles
+                   multibyte   characters  (see  the  section  on
                    <STRONG>ALTERNATE</STRONG> <STRONG>CONFIGURATIONS</STRONG>).  The "wide" library
-                   includes all of the calls  from  the  "normal"
-                   library.   It  adds about one third more calls
+                   includes  all  of  the calls from the "normal"
+                   library.  It adds about one third  more  calls
                    using data types which store multibyte charac-
                    ters:
 
                    <STRONG>cchar_t</STRONG>
-                        corresponds  to  <STRONG>chtype</STRONG>.  However it is a
-                        structure, because more  data  is  stored
-                        than  can fit into an integer.  The char-
+                        corresponds to <STRONG>chtype</STRONG>.  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-
+                        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 <STRONG>WINDOW</STRONG> is
                         stored as a <STRONG>cchar_t</STRONG>.
 
                    <STRONG>wchar_t</STRONG>
-                        stores  a "wide" character.  Like <STRONG>chtype</STRONG>,
+                        stores a "wide" character.  Like  <STRONG>chtype</STRONG>,
                         this may be an integer.
 
                    <STRONG>wint_t</STRONG>
-                        stores a <STRONG>wchar_t</STRONG> or <STRONG>WEOF</STRONG> - not the  same,
+                        stores  a <STRONG>wchar_t</STRONG> or <STRONG>WEOF</STRONG> - 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
+                   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, <STRONG>waddch</STRONG> becomes <STRONG>wadd_wch</STRONG>.
 
+
    <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
        The following table lists each <STRONG>curses</STRONG> routine and the name
-       of  the  manual  page  on which it is described.  Routines
-       flagged with `*' are ncurses-specific,  not  described  by
+       of the manual page on which  it  is  described.   Routines
+       flagged  with  `*'  are ncurses-specific, not described by
        XPG4 or present in SVr4.
 
+
               <STRONG>curses</STRONG> Routine Name     Manual Page Name
               --------------------------------------------
               COLOR_PAIR              <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
               PAIR_NUMBER             <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
               _nc_free_and_exit       <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>*
+
               _nc_freeall             <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>*
               _nc_tracebits           <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
-
               _traceattr              <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
               _traceattr2             <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
               _tracechar              <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
               echo                    <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
               echo_wchar              <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
               echochar                <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
+
               endwin                  <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
               erase                   <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
-
               erasechar               <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
               erasewchar              <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
               filter                  <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
               intrflush               <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
               inwstr                  <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
               is_cleared              <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+
               is_idcok                <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_idlok                <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
-
               is_immedok              <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_keypad               <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_leaveok              <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               mvinsch                 <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
               mvinsnstr               <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
               mvinsstr                <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
+
               mvinstr                 <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
               mvinwstr                <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
-
               mvprintw                <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
               mvscanw                 <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
               mvvline                 <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
               pair_content            <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
               pechochar               <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
               pnoutrefresh            <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
+
               prefresh                <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
               printw                  <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
-
               putp                    <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
               putwin                  <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
               qiflush                 <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
               tigetstr                <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
               timeout                 <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
               touchline               <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
+
               touchwin                <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
               tparm                   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
-
               tputs                   <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
               tputs                   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
               trace                   <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
               wgetbkgrnd              <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
               wgetch                  <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
               wgetn_wstr              <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+
               wgetnstr                <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
               wgetstr                 <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
-
               whline                  <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
               whline_set              <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
               win_wch                 <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       Routines  that  return  an integer return <STRONG>ERR</STRONG> upon failure
-       and an integer value other than <STRONG>ERR</STRONG> upon  successful  com-
-       pletion,  unless  otherwise  noted in the routine descrip-
+       Routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure
+       and  an  integer value other than <STRONG>ERR</STRONG> upon successful com-
+       pletion, unless otherwise noted in  the  routine  descrip-
        tions.
 
+       As a general rule, routines check for null pointers passed
+       as parameters, and handle this as an error.
+
        All macros return the  value  of  the  <STRONG>w</STRONG>  version,  except
        <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>, and <STRONG>getmaxyx</STRONG>.  The
        return values of <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>,  <STRONG>getyx</STRONG>,  <STRONG>getbegyx</STRONG>,
 
        LINES
             Like COLUMNS, specify the height  of  the  screen  in
-            characters.  See COLUMNS for a detailed description.
+            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
+            the  order  of  buttons on the mouse.  OS/2 numbers a
             3-button mouse inconsistently from other platforms:
 
             1 = left
             3 = middle.
 
             This symbol lets you customize the mouse.  The symbol
-            must be three numeric digits 1-3 in any order,  e.g.,
-            123  or  321.   If  it is not specified, <STRONG>ncurses</STRONG> uses
+            must  be three numeric digits 1-3 in any order, e.g.,
+            123 or 321.  If it is  not  specified,  <STRONG>ncurses</STRONG>  uses
             132.
 
        NCURSES_ASSUMED_COLORS
-            Override the compiled-in assumption that  the  termi-
-            nal's   default   colors   are   white-on-black  (see
-            <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>).  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-
+            Override  the  compiled-in assumption that the termi-
+            nal's  default   colors   are   white-on-black   (see
+            <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>).   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 <STRONG>max_colors</STRONG> value
             is allowed.
 
        NCURSES_GPM_TERMS
-            This  applies  only  to ncurses configured to use the
+            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
+            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
+            If  the  environment variable is absent, ncurses will
             attempt to open GPM if TERM contains "linux".
 
        NCURSES_NO_HARD_TABS
-            <STRONG>Ncurses</STRONG>  may  use tabs as part of the cursor movement
-            optimization.  In some cases,  your  terminal  driver
-            may  not handle these properly.  Set this environment
+            <STRONG>Ncurses</STRONG> 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 <STRONG>stty</STRONG> settings to avoid the problem.
 
        NCURSES_NO_MAGIC_COOKIES
             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.
+            requires  special  handling  to make highlighting and
+            other video attributes  display  properly.   You  can
+            suppress   the   highlighting   entirely   for  these
+            terminals 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
+            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
+            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
+            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
+            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
+            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 symbol to disable all but
-            mandatory padding.  Mandatory padding is  used  as  a
+            Set the NCURSES_NO_PADDING symbol to disable all  but
+            mandatory  padding.   Mandatory  padding is used as a
             part of special control sequences such as <EM>flash</EM>.
 
        NCURSES_NO_SETBUF
-            Normally  <STRONG>ncurses</STRONG> enables buffered output during ter-
-            minal initialization.   This  is  done  (as  in  SVr4
-            curses)  for  performance  reasons.  For testing pur-
+            Normally <STRONG>ncurses</STRONG> enables buffered output during  ter-
+            minal  initialization.   This  is  done  (as  in SVr4
+            curses) for performance reasons.   For  testing  pur-
             poses, both of <STRONG>ncurses</STRONG> and certain applications, this
             feature    is    made    optional.     Setting    the
             NCURSES_NO_SETBUF variable disables output buffering,
-            leaving  the  output  in  the  original (usually line
+            leaving the output  in  the  original  (usually  line
             buffered) mode.
 
        NCURSES_NO_UTF8_ACS
             During initialization, the <STRONG>ncurses</STRONG> 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
+            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
+            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
+            <STRONG>U8</STRONG>.  This is a numeric capability which can  be  com-
+            piled using <STRONG>tic</STRONG> <STRONG>-x</STRONG>.  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 <STRONG>ncurses</STRONG> debugging library
             checks the NCURSES_TRACE symbol.  If it  is  defined,
             makes a subdirectory named for the  first  letter  of
             the terminal names therein.
 
+            If <STRONG>ncurses</STRONG> is built with a hashed database, then each
+            entry in this list can also be the path of the corre-
+            sponding database file.
+
+            If  <STRONG>ncurses</STRONG> 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 <STRONG>ncurses</STRONG>
             checks the TERMPATH symbol.  This is a list of  file-
 
        --with-profile
             The shared and normal (static) library  names  differ
-            by  their  suffixes,  e.g.,  <STRONG>libncurses.so</STRONG>  and <STRONG>libn-</STRONG>
-            <STRONG>curses.a</STRONG>.  The debug and profiling  libraries  add  a
-            "_g" and a "_p" to the root names respectively, e.g.,
-            <STRONG>libncurses_g.a</STRONG> and <STRONG>libncurses_p.a</STRONG>.
+            by    their   suffixes,   e.g.,   <STRONG>libncurses.so</STRONG>   and
+            <STRONG>libncurses.a</STRONG>.  The debug and profiling libraries  add
+            a  "_g"  and  a  "_p" to the root names respectively,
+            e.g., <STRONG>libncurses_g.a</STRONG> and <STRONG>libncurses_p.a</STRONG>.
 
        --with-trace
             The <STRONG>trace</STRONG> function  normally  resides  in  the  debug
        described in  <STRONG>PORTABILITY</STRONG>  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:
 
-       <STRONG>o</STRONG>   The  routine  <STRONG>has_key</STRONG>  is  not part of XPG4, nor is it
-           present in SVr4.  See the <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>  manual  page
+       <STRONG>o</STRONG>   The routine <STRONG>has_key</STRONG> is not part of  XPG4,  nor  is  it
+           present  in  SVr4.  See the <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> manual page
            for details.
 
-       <STRONG>o</STRONG>   The  routine  <STRONG>slk_attr</STRONG>  is not part of XPG4, nor is it
+       <STRONG>o</STRONG>   The routine <STRONG>slk_attr</STRONG> is not part of XPG4,  nor  is  it
            present in SVr4.  See the <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> manual page for
            details.
 
        <STRONG>o</STRONG>   The routines <STRONG>getmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mousein-</STRONG>
            <STRONG>terval</STRONG>, and <STRONG>wenclose</STRONG> relating to mouse interfacing are
-           not  part  of XPG4, nor are they present in SVr4.  See
+           not part of XPG4, nor are they present in  SVr4.   See
            the <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> manual page for details.
 
-       <STRONG>o</STRONG>   The routine <STRONG>mcprint</STRONG> was not present  in  any  previous
-           curses  implementation.  See the <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> manual
+       <STRONG>o</STRONG>   The  routine  <STRONG>mcprint</STRONG>  was not present in any previous
+           curses implementation.  See the <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>  manual
            page for details.
 
-       <STRONG>o</STRONG>   The routine <STRONG>wresize</STRONG> is not part of  XPG4,  nor  is  it
-           present  in SVr4.  See the <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> manual page for
+       <STRONG>o</STRONG>   The  routine  <STRONG>wresize</STRONG>  is  not part of XPG4, nor is it
+           present in SVr4.  See the <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> manual page  for
            details.
 
-       <STRONG>o</STRONG>   The WINDOW structure's internal details can be  hidden
-           from  application  programs.   See <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> for
+       <STRONG>o</STRONG>   The  WINDOW structure's internal details can be hidden
+           from application programs.   See  <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>  for
            the discussion of <STRONG>is_scrollok</STRONG>, etc.
 
        <STRONG>o</STRONG>   This implementation can be configured to provide rudi-
-           mentary  support for multi-threaded applications.  See
+           mentary support for multi-threaded applications.   See
            <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> for details.
 
-       <STRONG>o</STRONG>   This implementation can also be configured to  provide
+       <STRONG>o</STRONG>   This  implementation can also be configured to provide
            a set of functions which improve the ability to manage
-           multiple screens.  See <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> for details.
+           multiple  screens.  See <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> for details.
 
        In historic curses versions, delays embedded in the  capa-
        bilities <STRONG>cr</STRONG>, <STRONG>ind</STRONG>, <STRONG>cub1</STRONG>, <STRONG>ff</STRONG> and <STRONG>tab</STRONG> activated corresponding