<!--
* t
****************************************************************************
- * Copyright (c) 1998-2005,2006 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 *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: ncurses.3x,v 1.81 2006/12/02 19:23:11 tom Exp @
+ * @Id: ncurses.3x,v 1.106 2011/12/17 23:19:59 tom Exp @
-->
<HTML>
<HEAD>
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.5 (patch 20061209).
-
- The <STRONG>ncurses</STRONG> routines emulate the <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> library of
- System V Release 4 UNIX, and the XPG4 curses standard (XSI
- curses) but the <STRONG>ncurses</STRONG> library is freely redistributable
- in source form. Differences from the SVr4 curses are sum-
- marized under the <STRONG>EXTENSIONS</STRONG> and <STRONG>PORTABILITY</STRONG> sections
- below and described in detail in the respective <STRONG>EXTEN-</STRONG>
- <STRONG>SIONS</STRONG>, <STRONG>PORTABILITY</STRONG> and <STRONG>BUGS</STRONG> sections of individual man
- pages.
+ 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)
+ curses (also known as XSI curses). XSI stands for X/Open
+ System Interfaces Extension. The <STRONG>ncurses</STRONG> library is
+ freely redistributable in source form. Differences from
+ the SVr4 curses are summarized under the <STRONG>EXTENSIONS</STRONG> and
+ <STRONG>PORTABILITY</STRONG> sections below and described in detail in the
+ respective <STRONG>EXTENSIONS</STRONG>, <STRONG>PORTABILITY</STRONG> and <STRONG>BUGS</STRONG> sections of
+ individual man pages.
+
+ The <STRONG>ncurses</STRONG> 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
<STRONG>-lncurses</STRONG> option, or (if it has been generated) with the
lation; use of soft label keys; terminfo capabilities; and
access to low-level terminal-manipulation routines.
- To initialize the routines, the routine <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>
- must be called before any of the other routines that deal
- with windows and screens are used. The routine <STRONG>endwin</STRONG>
- must be called before exiting. To get character-at-a-time
- input without echoing (most interactive, screen oriented
- programs want this), the following sequence should be
- used:
+ The library uses the locale which the calling program has
+ initialized. That is normally done with <STRONG>setlocale</STRONG>:
+
+ <STRONG>setlocale(LC_ALL,</STRONG> <STRONG>"");</STRONG>
+
+ 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 <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> must be called to initial-
+ ize the library before any of the other routines that deal
+ with windows and screens are used. The routine <STRONG>endwin</STRONG>
+ 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:
<STRONG>initscr();</STRONG> <STRONG>cbreak();</STRONG> <STRONG>noecho();</STRONG>
be created with <STRONG>newwin</STRONG>.
Note that <STRONG>curses</STRONG> does not handle overlapping windows,
- that's done by the <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG> library. This means that you
+ that's done by the <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG> library. This means that you
can either use <STRONG>stdscr</STRONG> or divide the screen into tiled win-
- dows and not using <STRONG>stdscr</STRONG> at all. Mixing the two will
+ dows and not using <STRONG>stdscr</STRONG> at all. Mixing the two will
result in unpredictable, and undesired, effects.
Windows are referred to by variables declared as <STRONG>WINDOW</STRONG> <STRONG>*</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
- information read by <EM>terminfo</EM>. This would effect a program
+ information read by <EM>terminfo</EM>. This would affect a program
running in an AT&T 630 layer, for example, where the size
of a screen is changeable (see <STRONG>ENVIRONMENT</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>. The vari-
- ables <EM>ch</EM> and <EM>attrs</EM> below are always of type <STRONG>chtype</STRONG>. The
- types <STRONG>WINDOW</STRONG>, <STRONG>SCREEN</STRONG>, <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are defined in
- <STRONG><curses.h></STRONG>. The type <STRONG>TERMINAL</STRONG> is defined in <STRONG><term.h></STRONG>.
- All other arguments are integers.
+ 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><curses.h></STRONG>.
+ Types used for the terminfo routines such as <STRONG>TERMINAL</STRONG> are
+ defined in <STRONG><term.h></STRONG>.
+
+ 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>
+ 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
+ stored in something like an integer.
+
+ 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
+ <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
+ 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-
+ 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 <STRONG>WINDOW</STRONG> is
+ stored as a <STRONG>cchar_t</STRONG>.
+
+ <STRONG>wchar_t</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,
+ 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, <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
--------------------------------------------
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>*
_tracedump <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
_tracef <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
_tracemouse <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
-
add_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
add_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
add_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(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>
flushinp <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
get_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
get_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+ getattrs <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+ getbegx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
+ getbegy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
getbegyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
-
getbkgd <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
getbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
getcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
getch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+ getcurx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
+ getcury <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
+ getmaxx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
+ getmaxy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
getmaxyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
getmouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
getn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
getnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
+ getparx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
+ getpary <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
getparyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
getstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
getsyx <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
instr <STRONG><A HREF="curs_instr.3x.html">curs_instr(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>*
is_linetouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
+ is_nodelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_notimeout <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_scrollok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_syncok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+ is_term_resized <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
is_wintouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
isendwin <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
key_defined <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>*
mousemask <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
move <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
mvadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
-
mvadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
mvadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
mvaddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(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>
mvwin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
mvwin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
mvwin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
-
mvwinch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
mvwinchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
mvwinchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
nocbreak <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
nodelay <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
noecho <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
+ nofilter <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>*
nonl <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
noqiflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
noraw <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(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>
setterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
setupterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
slk_attr <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>*
-
slk_attr_off <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
slk_attr_on <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
slk_attr_set <STRONG><A HREF="curs_slk.3x.html">curs_slk(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>
use_default_colors <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>*
use_env <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
use_extended_names <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>*
+ use_legacy_coding <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>*
vid_attr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
vid_puts <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
vidattr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
waddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
waddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
waddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
-
waddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
waddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
waddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(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>
wscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
wscrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
wsetscrreg <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
-
wstandend <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
wstandout <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
wsyncdown <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
pletion, unless otherwise noted in the routine descrip-
tions.
- All macros return the value of the <STRONG>w</STRONG> version, except
+ 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>,
+ return values of <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>,
and <STRONG>getmaxyx</STRONG> are undefined (i.e., these should not be used
as the right-hand side of assignment statements).
important ones have been already discussed in detail.
BAUDRATE
- The debugging library checks this environment symbol
+ The debugging library checks this environment symbol
when the application has redirected output to a file.
- The symbol's numeric value is used for the baudrate.
+ The symbol's numeric value is used for the baudrate.
If no value is found, <STRONG>ncurses</STRONG> uses 9600. This allows
- testers to construct repeatable test-cases that take
+ testers to construct repeatable test-cases that take
into account costs that depend on baudrate.
CC When set, change occurrences of the command_character
- (i.e., the <STRONG>cmdch</STRONG> capability) of the loaded terminfo
- entries to the value of this symbol. Very few ter-
+ (i.e., the <STRONG>cmdch</STRONG> capability) of the loaded terminfo
+ entries to the value of this symbol. 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, <STRONG>ncurses</STRONG>
+ ignores it if it does not happen to be a single char-
+ acter.
+
COLUMNS
Specify the width of the screen in characters.
Applications running in a windowing environment usu-
NCURSES_ASSUMED_COLORS
Override the compiled-in assumption that the termi-
nal's default colors are white-on-black (see
- <STRONG><A HREF="assume_default_colors.3x.html">assume_default_colors(3x)</A></STRONG>). You may set the fore-
- ground and background color values with this environ-
- ment variable by proving a 2-element list:
- foreground,background. 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 positive value from zero to the terminfo <STRONG>max_col-</STRONG>
- <STRONG>ors</STRONG> value is allowed.
+ <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
+ 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
<STRONG>Ncurses</STRONG> may use tabs as part of the cursor movement
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.
+ suppress the highlighting entirely for these
+ terminals by setting this environment variable.
NCURSES_NO_PADDING
Most of the terminal descriptions in the terminfo
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.
+ 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,
+ During initialization, the <STRONG>ncurses</STRONG> debugging library
+ checks the NCURSES_TRACE symbol. If it is defined,
to a numeric value, <STRONG>ncurses</STRONG> calls the <STRONG>trace</STRONG> function,
using that value as the argument.
- The argument values, which are defined in <STRONG>curses.h</STRONG>,
- provide several types of information. When running
- with traces enabled, your application will write the
+ The argument values, which are defined in <STRONG>curses.h</STRONG>,
+ provide several types of information. When running
+ with traces enabled, your application will write the
file <STRONG>trace</STRONG> to the current directory.
- TERM Denotes your terminal type. Each terminal type is
+ TERM Denotes your terminal type. Each terminal type is
distinct, though many are similar.
TERMCAP
If the <STRONG>ncurses</STRONG> library has been configured with <EM>term-</EM>
- <EM>cap</EM> support, <STRONG>ncurses</STRONG> will check for a terminal's
+ <EM>cap</EM> support, <STRONG>ncurses</STRONG> will check for a terminal's
description in termcap form if it is not available in
the terminfo database.
- The TERMCAP symbol contains either a terminal
- description (with newlines stripped out), or a file
- name telling where the information denoted by the
- TERM symbol exists. In either case, setting it
- directs <STRONG>ncurses</STRONG> to ignore the usual place for this
+ The TERMCAP symbol contains either a terminal
+ description (with newlines stripped out), or a file
+ name telling where the information denoted by the
+ TERM symbol exists. In either case, setting it
+ directs <STRONG>ncurses</STRONG> to ignore the usual place for this
information, e.g., /etc/termcap.
TERMINFO
Overrides the directory in which <STRONG>ncurses</STRONG> searches for
your terminal description. This is the simplest, but
- not the only way to change the list of directories.
+ not the only way to change the list of directories.
The complete list of directories in order follows:
- - the last directory to which <STRONG>ncurses</STRONG> wrote, if any,
- is searched first
+ <STRONG>o</STRONG> the last directory to which <STRONG>ncurses</STRONG> wrote, if
+ any, is searched first
- - the directory specified by the TERMINFO symbol
+ <STRONG>o</STRONG> the directory specified by the TERMINFO symbol
- - $HOME/.terminfo
+ <STRONG>o</STRONG> $HOME/.terminfo
- - directories listed in the TERMINFO_DIRS symbol
+ <STRONG>o</STRONG> directories listed in the TERMINFO_DIRS symbol
- - one or more directories whose names are configured
- and compiled into the ncurses library, e.g.,
- /usr/share/terminfo
+ <STRONG>o</STRONG> one or more directories whose names are config-
+ ured and compiled into the ncurses library, e.g.,
+ /usr/share/terminfo
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
+ 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, which
- makes a subdirectory named for the first letter of
+ 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
- filenames separated by spaces or colons (i.e., ":")
- on Unix, semicolons on OS/2 EMX. If the TERMPATH
- symbol is not set, <STRONG>ncurses</STRONG> 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:
+ If TERMCAP does not hold a file name then <STRONG>ncurses</STRONG>
+ checks the TERMPATH symbol. This is a list of file-
+ names separated by spaces or colons (i.e., ":") on
+ Unix, semicolons on OS/2 EMX. If the TERMPATH symbol
+ is not set, <STRONG>ncurses</STRONG> 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.
</PRE>
<H2>ALTERNATE CONFIGURATIONS</H2><PRE>
- Several different configurations are possible, depending
- on the configure script options used when building
- <STRONG>ncurses</STRONG>. There are a few main options whose effects are
+ Several different configurations are possible, depending
+ on the configure script options used when building
+ <STRONG>ncurses</STRONG>. There are a few main options whose effects are
visible to the applications developer using <STRONG>ncurses</STRONG>:
--disable-overwrite
- The standard include for <STRONG>ncurses</STRONG> is as noted in <STRONG>SYN-</STRONG>
+ The standard include for <STRONG>ncurses</STRONG> is as noted in <STRONG>SYN-</STRONG>
<STRONG>OPSIS</STRONG>:
<STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
- This option is used to avoid filename conflicts when
- <STRONG>ncurses</STRONG> is not the main implementation of curses of
- the computer. If <STRONG>ncurses</STRONG> is installed disabling
- overwrite, it puts its headers in a subdirectory,
+ This option is used to avoid filename conflicts when
+ <STRONG>ncurses</STRONG> is not the main implementation of curses of
+ the computer. If <STRONG>ncurses</STRONG> is installed disabling
+ overwrite, it puts its headers in a subdirectory,
e.g.,
<STRONG>#include</STRONG> <STRONG><ncurses/curses.h></STRONG>
- It also omits a symbolic link which would allow you
+ It also omits a symbolic link which would allow you
to use <STRONG>-lcurses</STRONG> to build executables.
--enable-widec
- The configure script renames the library and (if the
- <STRONG>--disable-overwrite</STRONG> option is used) puts the header
+ The configure script renames the library and (if the
+ <STRONG>--disable-overwrite</STRONG> option is used) puts the header
files in a different subdirectory. All of the
- library names have a "w" appended to them, i.e.,
+ library names have a "w" appended to them, i.e.,
instead of
<STRONG>-lncurses</STRONG>
<STRONG>-lncursesw</STRONG>
You must also define <STRONG>_XOPEN_SOURCE_EXTENDED</STRONG> when com-
- piling for the wide-character library to use the
- extended (wide-character) functions. The <STRONG>curses.h</STRONG>
- file which is installed for the wide-character
- library is designed to be compatible with the normal
+ piling for the wide-character library to use the
+ extended (wide-character) functions. The <STRONG>curses.h</STRONG>
+ 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 <STRONG>WINDOW</STRONG> struc-
- ture differs, and very few applications require more
- than a pointer to <STRONG>WINDOW</STRONG>s. 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
+ ture differs, and very few applications require more
+ than a pointer to <STRONG>WINDOW</STRONG>s. 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-shared
--with-debug
--with-profile
- The shared and normal (static) library names differ
- 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,
+ The shared and normal (static) library names differ
+ 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
+ The <STRONG>trace</STRONG> function normally resides in the debug
library, but it is sometimes useful to configure this
- in the shared library. Configure scripts should
+ in the shared library. Configure scripts should
check for the function's existence rather than assum-
ing it is always in the debug library.
</PRE>
<H2>FILES</H2><PRE>
/usr/share/tabset
- directory containing initialization files for the
+ directory containing initialization files for the
terminal capability database /usr/share/terminfo ter-
minal capability database
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> and related pages whose names begin "curs_"
+ <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> and related pages whose names begin "curs_"
for detailed routine descriptions.
+ <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
</PRE>
The <STRONG>ncurses</STRONG> library can be compiled with an option
(<STRONG>-DUSE_GETCAP</STRONG>) that falls back to the old-style /etc/term-
cap file if the terminal setup code cannot find a terminfo
- entry corresponding to <STRONG>TERM</STRONG>. Use of this feature is not
- recommended, as it essentially includes an entire termcap
- compiler in the <STRONG>ncurses</STRONG> startup code, at significant cost
+ entry corresponding to <STRONG>TERM</STRONG>. Use of this feature is not
+ recommended, as it essentially includes an entire termcap
+ compiler in the <STRONG>ncurses</STRONG> startup code, at significant cost
in core and startup cycles.
- The <STRONG>ncurses</STRONG> library includes facilities for capturing
- mouse events on certain terminals (including xterm). See
+ The <STRONG>ncurses</STRONG> library includes facilities for capturing
+ mouse events on certain terminals (including xterm). See
the <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> manual page for details.
- The <STRONG>ncurses</STRONG> library includes facilities for responding to
- window resizing events, e.g., when running in an xterm.
- See the <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> and <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> manual pages for
- details. In addition, the library may be configured with
+ The <STRONG>ncurses</STRONG> library includes facilities for responding to
+ window resizing events, e.g., when running in an xterm.
+ See the <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> and <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> manual pages for
+ details. In addition, the library may be configured with
a SIGWINCH handler.
- The <STRONG>ncurses</STRONG> library extends the fixed set of function key
- capabilities of terminals by allowing the application
- designer to define additional key sequences at runtime.
+ The <STRONG>ncurses</STRONG> 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 <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG> <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>, and <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG> man-
ual pages for details.
The <STRONG>ncurses</STRONG> library can exploit the capabilities of termi-
- nals which implement the ISO-6429 SGR 39 and SGR 49 con-
+ 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.
+ 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 <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG> manual page for details.
- The <STRONG>ncurses</STRONG> library includes a function for directing
- application output to a printer attached to the terminal
+ The <STRONG>ncurses</STRONG> library includes a function for directing
+ application output to a printer attached to the terminal
device. See the <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> manual page for details.
</PRE>
<H2>PORTABILITY</H2><PRE>
- The <STRONG>ncurses</STRONG> library is intended to be BASE-level confor-
- mant with the XSI Curses standard. The EXTENDED XSI
- Curses functionality (including color support) is sup-
- ported.
+ The <STRONG>ncurses</STRONG> 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 <STRONG>ncurses</STRONG> calls) are
described in <STRONG>PORTABILITY</STRONG> sections of the library man
pages.
- 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.
+ 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
+ for details.
+
+ <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
+ 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
+ page for details.
- 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 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.
- The routines <STRONG>getmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mouseinter-</STRONG>
- <STRONG>val</STRONG>, and <STRONG>wenclose</STRONG> relating to mouse interfacing are 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 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.
- 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> This implementation can be configured to provide rudi-
+ mentary support for multi-threaded applications. See
+ <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> for details.
- 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> 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.
- In historic curses versions, delays embedded in the capa-
+ 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
- delay bits in the UNIX tty driver. In this implementa-
- tion, all padding is done by NUL sends. This method is
- slightly more expensive, but narrows the interface to the
- UNIX kernel significantly and increases the package's
- portability correspondingly.
+ 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.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><curses.h></STRONG> automatically includes the
+ The header file <STRONG><curses.h></STRONG> automatically includes the
header files <STRONG><stdio.h></STRONG> and <STRONG><unctrl.h></STRONG>.
- If standard output from a <STRONG>ncurses</STRONG> program is re-directed
- to something which is not a tty, screen updates will be
+ If standard output from a <STRONG>ncurses</STRONG> 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.
</PRE>
<H2>AUTHORS</H2><PRE>
- Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
+ Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
Based on pcurses by Pavel Curtis.