* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: ncurses.3x,v 1.210 2024/04/20 21:24:19 tom Exp @
+ * @Id: ncurses.3x,v 1.223 2024/06/08 20:45:43 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>ncurses 3x 2024-04-20 ncurses 6.4 Library calls</TITLE>
+<TITLE>ncurses 3x 2024-06-08 ncurses 6.5 Library calls</TITLE>
<link rel="author" href="mailto:bug-ncurses@gnu.org">
</HEAD>
<BODY>
-<H1 class="no-header">ncurses 3x 2024-04-20 ncurses 6.4 Library calls</H1>
+<H1 class="no-header">ncurses 3x 2024-06-08 ncurses 6.5 Library calls</H1>
<PRE>
<STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> Library calls <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
terminals with output optimized to minimize screen updates. <EM>ncurses</EM>
replaces the <EM>curses</EM> libraries from System V Release 4 Unix ("SVr4") and
4.4BSD Unix, the development of which ceased in the 1990s. This
- document describes <EM>ncurses</EM> version 6.4 (patch 20240420).
+ document describes <EM>ncurses</EM> version 6.5 (patch 20240615).
<EM>ncurses</EM> permits control of the terminal screen's contents; abstraction
- and subdivision thereof with <EM>windows</EM> and <EM>pads</EM>; the reading of terminal
- input; control of terminal input and output options; environment query
- routines; color manipulation; the definition and use of <EM>soft</EM> <EM>label</EM>
- keys; <EM>terminfo</EM> capability access; a <EM>termcap</EM> compatibility interface;
- and an abstraction of the system's API for manipulating the terminal
- (such as <STRONG>termios(3)</STRONG>).
-
- <EM>ncurses</EM> implements the standard interface described by X/Open Curses
- Issue 7. In many behavioral details not standardized by X/Open,
- <EM>ncurses</EM> emulates the <EM>curses</EM> library of SVr4 and provides numerous
- useful extensions.
+ and subdivision thereof with <EM>windows</EM> and <EM>pads</EM>; acquisition of keyboard
+ and mouse events; control of terminal input and output options;
+ selection of color and rendering attributes (such as bold or
+ underline); the definition and use of <EM>soft</EM> <EM>label</EM> keys; access to the
+ <EM>terminfo</EM> terminal capability database; a <EM>termcap</EM> compatibility
+ interface; and an abstraction of the system's API for manipulating the
+ terminal (such as <STRONG>termios(3)</STRONG>).
+
+ <EM>ncurses</EM> implements the interface described by X/Open Curses Issue 7.
+ In many behavioral details not standardized by X/Open, <EM>ncurses</EM> emulates
+ the <EM>curses</EM> library of SVr4 and provides numerous useful extensions.
<EM>ncurses</EM> man pages employ several sections to clarify matters of usage
and interoperability with other <EM>curses</EM> implementations.
initscr(); cbreak(); noecho();
- Most applications perform further setup as follows.
+ Most applications would perform further setup as follows.
- intrflush(stdscr, FALSE);
+ noqiflush();
keypad(stdscr, TRUE);
A <EM>curses</EM> program then often enters an event loop of some sort. Call
</PRE><H3><a name="h3-Overview">Overview</a></H3><PRE>
A <EM>curses</EM> library abstracts the terminal screen by representing all or
part of it as a <EM>WINDOW</EM> data structure. A <EM>window</EM> is a rectangular grid
- of character cells, addressed by row and column coordinates (<EM>y</EM>, <EM>x</EM>),
+ of character cells, addressed by line and column coordinates (<EM>y</EM>, <EM>x</EM>),
with the upper left corner as (0, 0). A window called <STRONG>stdscr</STRONG>, the same
size as the terminal screen, is always available. Create others with
<STRONG><A HREF="curs_window.3x.html">newwin(3x)</A></STRONG>.
effects.
Functions permit manipulation of a window and the <EM>cursor</EM> identifying
- the cell within it at which the next output operation will occur.
- Among those, the most basic are <STRONG><A HREF="curs_move.3x.html">move(3x)</A></STRONG> and <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>: these place the
- cursor and write a character to <STRONG>stdscr</STRONG>, respectively.
+ the cell within it at which the next operation will occur. Among
+ those, the most basic are <STRONG><A HREF="curs_move.3x.html">move(3x)</A></STRONG> and <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>: these place the
+ cursor within and write a character to <STRONG>stdscr</STRONG>, 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
+ inefficient use of the communication channel to the device, so as a
+ rule the library does not update it automatically. Therefore, after
using <EM>curses</EM> functions to accumulate a set of desired updates that make
sense to present together, call <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> to tell the library to make
the user's screen look like <STRONG>stdscr</STRONG>. The library <EM>optimizes</EM> its output
- by computing a minimal number of operations to mutate the screen from
+ by computing a minimal volume 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 <STRONG><A HREF="curs_terminfo.3x.html">terminfo(3x)</A></STRONG>
API, a feature of every standard <EM>curses</EM> implementation.
- Special windows called <EM>pads</EM> 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 <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>.
+ Special windows called <EM>pads</EM> may also be manipulated. These are not
+ constrained to the size of the terminal screen and their contents need
+ not be completely displayed. See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>.
- 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 <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>.
+ Many terminals support configuration of character cell foreground and
+ background colors as well as <EM>attributes</EM>, which cause characters to
+ render in such modes as boldfaced, underlined, or in reverse video.
+ See <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>.
<EM>curses</EM> 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 <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG>.
+ VT100 and other terminals. See <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>.
- <EM>curses</EM> 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 <EM>escape</EM> <EM>sequence.</EM> <EM>curses</EM> translates these into unique <EM>key</EM>
- <EM>codes.</EM> See <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>.
+ <EM>curses</EM> is implemented using the operating system's terminal driver; key
+ 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 <EM>escape</EM>
+ <EM>sequence.</EM> <EM>curses</EM> can translate the latter into unique <EM>key</EM> <EM>codes.</EM> See
+ <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG> and <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>.
<EM>ncurses</EM> provides reimplementations of the SVr4 <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, and
- <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG> libraries to ease construction of user interfaces with <EM>curses</EM>.
+ <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG> libraries; they permit overlapping windows and ease
+ construction of user interfaces with <EM>curses</EM>.
</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
- The selection of an appropriate value of <EM>TERM</EM> in the process
+ The selection of an appropriate value of <EM>TERM</EM> in the process
environment is essential to correct <EM>curses</EM> and <EM>terminfo</EM> library
- operation. A well-configured system selects a correct <EM>TERM</EM> value
- automatically; <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> may assist with troubleshooting exotic
+ operation. A well-configured system selects a correct <EM>TERM</EM> value
+ automatically; <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> may assist with troubleshooting exotic
situations.
- If you change the terminal type, export the <EM>TERM</EM> environment variable
- in the shell, then run <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> or the "<STRONG>tput</STRONG> <STRONG>init</STRONG>" command. See
- subsection "Tabs and Initialization" of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+ If you change the terminal type, export the shell's <EM>TERM</EM> variable, then
+ run <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> or the "<STRONG>tput</STRONG> <STRONG>init</STRONG>" command. See subsection "Tabs and
+ Initialization" of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- If the environment variables <EM>LINES</EM> and <EM>COLUMNS</EM> are set, or if the
- <EM>curses</EM> program is executing in a graphical windowing environment, the
- information obtained thence overrides that obtained by <EM>terminfo</EM>. An
+ If the environment variables <EM>LINES</EM> and <EM>COLUMNS</EM> are set, or if the
+ <EM>curses</EM> program is executing in a graphical windowing environment, the
+ information obtained thence overrides that obtained by <EM>terminfo</EM>. An
<EM>ncurses</EM> extension supports resizable terminals; see <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
- If the environment variable <EM>TERMINFO</EM> is defined, a <EM>curses</EM> program
- checks first for a terminal type description in the location it
- identifies. <EM>TERMINFO</EM> is useful for developing experimental type
- descriptions or when write permission to <EM>/usr/share/terminfo</EM> is not
- available.
+ If the environment variable <EM>TERMINFO</EM> is defined, a <EM>curses</EM> program
+ checks first for a terminal type description in the location it
+ identifies. <EM>TERMINFO</EM> is useful for developing type descriptions or
+ when write permission to <EM>/usr/share/terminfo</EM> is not available.
See section "ENVIRONMENT" below.
Four functions prefixed with "p" require a pad argument.
In function synopses, <EM>ncurses</EM> man pages apply the following names to
- parameters.
+ parameters. We introduce the character types in the next subsection.
- <EM>bf</EM> <EM>bool</EM> (<STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>)
+ <EM>bf</EM> a <EM>bool</EM> (<STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>)
<EM>c</EM> a <EM>char</EM> or <EM>int</EM>
<EM>ch</EM> a <EM>chtype</EM>
<EM>wc</EM> a <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> or <EM>wint</EM><STRONG>_</STRONG><EM>t</EM>
</PRE><H3><a name="h3-Wide-and-Non-wide-Character-Configurations">Wide and Non-wide Character Configurations</a></H3><PRE>
- This manual page describes functions that appear in any configuration
- of the library. There are two common configurations; see section
- "ALTERNATE CONFIGURATIONS" below.
+ This man page primarily surveys functions that appear in any
+ configuration of the library. There are two common configurations; see
+ section "ALTERNATE CONFIGURATIONS" below.
<EM>ncurses</EM> is the library in its "non-wide" configuration, handling only
eight-bit characters. It stores a character combined with
- attributes in a <EM>chtype</EM> datum, which is often an alias of <EM>int</EM>.
-
- Attributes alone (with no corresponding character) can be
- stored in variables of <EM>chtype</EM> or <EM>attr</EM><STRONG>_</STRONG><EM>t</EM> type. In either
- case, they are represented as an integral bit mask.
-
- Each cell of a <EM>WINDOW</EM> is stored as a <EM>chtype</EM>.
+ attributes and a color pair in a <EM>chtype</EM> datum, which is often
+ an alias of <EM>int</EM>. A string of <EM>curses</EM> characters is similar to
+ a C <EM>char</EM> string; a <EM>chtype</EM> string ends with an integral <STRONG>0</STRONG>, the
+ null <EM>curses</EM> character.
+
+ Attributes and a color pair selection (with no corresponding
+ character) can be stored in variables of <EM>chtype</EM> or <EM>attr</EM><STRONG>_</STRONG><EM>t</EM>
+ type. In either case, they are accessed via an integral bit
+ mask.
+
+ Each cell of a <EM>WINDOW</EM> is stored as a <EM>chtype</EM>. X/Open Curses
+ does not specify the sizes of the character code or color
+ pair identifier, nor the quantity of attribute bits, in
+ <EM>chtype</EM>; these are implementation-dependent. <EM>ncurses</EM> uses
+ eight bits for the character code. An application requiring
+ a wider character type, for instance to represent Unicode,
+ should use the wide-character API.
<EM>ncursesw</EM> is the library in its "wide" configuration, which handles
character encodings requiring a larger data type than <EM>char</EM> (a
- byte-sized type) can represent. It adds about one third more
- calls using additional data types that can store such
- <EM>multibyte</EM> characters.
+ byte-sized type) can represent. It 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, <STRONG>waddch</STRONG> becomes
+ <STRONG>wadd_wch</STRONG>. (Exceptions that add only "w" comprise <STRONG>addwstr</STRONG>,
+ <STRONG>inwstr</STRONG>, 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".
<EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> corresponds to the non-wide configuration's <EM>chtype</EM>.
- It always a structure type, because it stores more
- data than fit into a standard scalar type. A
+ It is a structure type because it requires more
+ storage than a standard scalar type offers. A
character code may not be representable as a <EM>char</EM>,
and moreover more than one character may occupy a
cell (as with accent marks and other diacritics).
Each character is of type <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM>; 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 <EM>chtype</EM>.
+ more non-spacing characters (see below). A string
+ of complex characters ends with a <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> whose
+ <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> member is the null wide character.
+ Attributes and a color pair selection are stored in
+ separate fields of the structure, not combined into
+ an integer as in <EM>chtype</EM>.
Each cell of a <EM>WINDOW</EM> is stored as a <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>.
- <STRONG><A HREF="curs_getcchar.3x.html">setcchar(3x)</A></STRONG> and <STRONG><A HREF="curs_getcchar.3x.html">getcchar(3x)</A></STRONG> store and retrieve <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>
- data. The wide library API of <EM>ncurses</EM> depends on two data
+ <STRONG><A HREF="curs_getcchar.3x.html">setcchar(3x)</A></STRONG> and <STRONG><A HREF="curs_getcchar.3x.html">getcchar(3x)</A></STRONG> store and retrieve <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>
+ data. The wide library API of <EM>ncurses</EM> depends on two data
types standardized by ISO C95.
- <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> stores a wide character. Like <EM>chtype</EM>, it may be an
- alias of <EM>int</EM>. Depending on the character encoding,
- a wide character may be <EM>spacing</EM>, meaning that it
- occupies a character cell by itself and typically
- accompanies cursor advancement, or <EM>non-spacing</EM>,
- 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
+ <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> stores a wide character. Like <EM>chtype</EM>, it may be an
+ alias of <EM>int</EM>. Depending on the character encoding,
+ a wide character may be <EM>spacing</EM>, meaning that it
+ occupies a character cell by itself and typically
+ accompanies cursor advancement, or <EM>non-spacing</EM>,
+ 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.
- <EM>wint</EM><STRONG>_</STRONG><EM>t</EM> can store a <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> or the constant <STRONG>WEOF</STRONG>,
- analogously to the <EM>int</EM>-sized character manipulation
+ <EM>wint</EM><STRONG>_</STRONG><EM>t</EM> can store a <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> or the constant <STRONG>WEOF</STRONG>,
+ analogously to the <EM>int</EM>-sized character manipulation
functions of ISO C and its constant <STRONG>EOF</STRONG>.
- 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, <STRONG>waddch</STRONG> becomes <STRONG>wadd_wch</STRONG>.
- (Exceptions that add only "w" comprise <STRONG>addwstr</STRONG>, <STRONG>inwstr</STRONG>, 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".
-
</PRE><H3><a name="h3-Function-Name-Index">Function Name Index</a></H3><PRE>
The following table lists the <EM>curses</EM> functions provided in the non-wide
- and wide APIs and the corresponding man pages that describe them.
- Those flagged with "*" are <EM>ncurses</EM>-specific, neither described by
+ and wide APIs and the corresponding man pages that describe them.
+ Those flagged with "*" are <EM>ncurses</EM>-specific, neither described by
X/Open Curses nor present in SVr4.
<STRONG><EM>curses</EM></STRONG> Function Name Man Page
def_shell_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
define_key <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>*
del_curterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+
delay_output <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
delch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
deleteln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
doupdate <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
dupwin <STRONG><A HREF="curs_window.3x.html">curs_window(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>
in_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
in_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
in_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+
inch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
inchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
inchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
init_pair <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
initscr <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
innstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
-
innwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
ins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
ins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
mvaddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
mvaddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
mvaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+
mvaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
mvaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
mvchgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
- mvcur <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+ mvcur <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
mvdelch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
mvderwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
mvget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
mvget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
mvgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
-
mvgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
mvgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
mvgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
mvwinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
mvwins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
mvwins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
+
mvwins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
mvwinsch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
mvwinsnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
mvwprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
mvwscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
mvwvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
-
mvwvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
napms <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
newpad <STRONG><A HREF="curs_pad.3x.html">curs_pad(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>
slk_attroff <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
slk_attron <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
slk_init <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
slk_label <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
slk_noutrefresh <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
-
slk_refresh <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
slk_restore <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
slk_set <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
vwprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
vwscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
wadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
+
wadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
wadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
waddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(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>
-
wattr_get <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
wattr_off <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
wattr_on <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
winstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
winwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
wmouse_trafo <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
+
wmove <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
wnoutrefresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
wprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(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>
wvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
wvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
- <EM>ncurses</EM>'s <EM>screen-pointer</EM> <EM>extension</EM> adds additional functions
- corresponding to many of the above, each with an "_sp" suffix; see
+ <EM>ncurses</EM>'s <EM>screen-pointer</EM> <EM>extension</EM> adds additional functions
+ corresponding to many of the above, each with an "_sp" suffix; see
<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>.
- The availability of some extensions is configurable when <EM>ncurses</EM> is
- compiled; see sections "ALTERNATE CONFIGURATIONS" and "EXTENSIONS"
+ The availability of some extensions is configurable when <EM>ncurses</EM> is
+ compiled; see sections "ALTERNATE CONFIGURATIONS" and "EXTENSIONS"
below.
</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
- Unless otherwise noted, functions that return an integer return <STRONG>OK</STRONG> on
- success and <STRONG>ERR</STRONG> on failure. Functions that return pointers return <STRONG>NULL</STRONG>
- on failure. Typically, <EM>ncurses</EM> 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 (<EM>y</EM>, <EM>x</EM>) is outside the
- window boundaries.
+ Unless otherwise noted, functions that return integers return the
+ constants <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure; see <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+ Functions that return pointers return <STRONG>NULL</STRONG> on failure. Typically,
+ <EM>ncurses</EM> 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 (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
- The following symbols from the process environment customize the
- runtime behavior of <EM>ncurses</EM> applications. The library may be
- configured to disregard the variables <EM>TERMINFO</EM>, <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM>,
- <EM>TERMPATH</EM>, and <EM>HOME</EM>, if the user is the superuser (root), or the
+ The following symbols from the process environment customize the
+ runtime behavior of <EM>ncurses</EM> applications. The library may be
+ configured to disregard the variables <EM>TERMINFO</EM>, <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM>,
+ <EM>TERMPATH</EM>, and <EM>HOME</EM>, if the user is the superuser (root), or the
application uses <STRONG>setuid(2)</STRONG> or <STRONG>setgid(2)</STRONG>.
</PRE><H3><a name="h3-BAUDRATE"><EM>BAUDRATE</EM></a></H3><PRE>
- 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, <EM>ncurses</EM> uses 9600. This
- feature allows testers to construct repeatable test cases that take
+ 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, <EM>ncurses</EM> uses 9600. This
+ feature allows developers to construct repeatable test cases that take
into account optimization decisions that depend on baud rate.
</PRE><H3><a name="h3-CC-_command-character_"><EM>CC</EM> (command character)</a></H3><PRE>
- When set, the <STRONG>command_character</STRONG> (<STRONG>cmdch</STRONG>) capability value of loaded
+ When set, the <STRONG>command_character</STRONG> (<STRONG>cmdch</STRONG>) capability value of loaded
<EM>terminfo</EM> entries changes to the value of this variable. Very few <EM>term-</EM>
<EM>info</EM> entries provide this feature.
- Because this name is also used in development environments to represent
- the C compiler's name, <EM>ncurses</EM> ignores its value if it is not one
- character in length.
+ Because this name is also used in development environments to store the
+ C compiler's name, <EM>ncurses</EM> ignores its value if it is not one character
+ in length.
</PRE><H3><a name="h3-COLUMNS"><EM>COLUMNS</EM></a></H3><PRE>
This variable specifies the width of the screen in characters.
- Applications running in a windowing environment usually are able to
+ Applications running in a windowing environment usually are able to
obtain the width of the window in which they are executing. If <EM>COLUMNS</EM>
is not defined and the terminal's screen size is not available from the
- terminal driver, <EM>ncurses</EM> uses the size specified by the <STRONG>columns</STRONG> (<STRONG>cols</STRONG>)
- capability of the terminal type's entry in the <EM>terminfo</EM> database, if
+ terminal driver, <EM>ncurses</EM> uses the size specified by the <STRONG>columns</STRONG> (<STRONG>cols</STRONG>)
+ capability of the terminal type's entry in the <EM>terminfo</EM> 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 <EM>COLUMNS</EM> and/or <EM>LINES</EM>
- overrides the library's use of the screen size obtained from the
+ 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 <EM>COLUMNS</EM> and/or <EM>LINES</EM>
+ overrides the library's use of the screen size obtained from the
operating system.
- The <EM>COLUMNS</EM> and <EM>LINES</EM> variables may be specified independently. This
- property is useful to circumvent misfeatures of legacy terminal type
- descriptions; <STRONG>xterm(1)</STRONG> descriptions specifying 65 lines were once
+ The <EM>COLUMNS</EM> and <EM>LINES</EM> variables may be specified independently.
+ <EM>ncurses</EM> enforces an upper limit of 512 on each when reading the value.
+ This property is useful to circumvent misfeatures of legacy terminal
+ type descriptions; <STRONG>xterm(1)</STRONG> descriptions specifying 65 lines were once
notorious. For best results, avoid specifying <STRONG>cols</STRONG> and <STRONG>lines</STRONG>
capability codes in <EM>terminfo</EM> descriptions of terminal emulators.
available on the input stream within a short interval. A global
variable <STRONG>ESCDELAY</STRONG> stores this interval in milliseconds. The default
value of 1000 (one second) is adequate for most uses. This environment
- variable overrides it.
+ variable overrides it; <EM>ncurses</EM> enforces an upper limit of 30,000 (30
+ seconds) when reading the value.
- The most common instance where you may wish to change this value is to
+ 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 <EM>curses</EM> application does not receive the characters of an
- escape sequence in a timely manner, the library can interpret them as
+ running a <EM>curses</EM> application does not receive the characters of an
+ escape sequence in a timely manner, the library can interpret them as
multiple key stroke events.
<STRONG>xterm(1)</STRONG> 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
+ 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 <STRONG>ESCDELAY</STRONG> in
- either form, but setting the environment variable rather than the
+ Portable applications should not rely upon the presence of <STRONG>ESCDELAY</STRONG> in
+ either form, but setting the environment variable rather than the
global variable does not create problems when compiling an application.
- If <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG> is disabled for the <EM>curses</EM> window receiving input, a
+ If <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG> is disabled for the <EM>curses</EM> window receiving input, a
program must disambiguate escape sequences itself.
</PRE><H3><a name="h3-HOME"><EM>HOME</EM></a></H3><PRE>
- <EM>ncurses</EM> may read and write auxiliary terminal descriptions in <EM>.termcap</EM>
+ <EM>ncurses</EM> may read and write auxiliary terminal descriptions in <EM>.termcap</EM>
and <EM>.terminfo</EM> files in the user's home directory.
</PRE><H3><a name="h3-LINES"><EM>LINES</EM></a></H3><PRE>
- This counterpart to <EM>COLUMNS</EM> specifies the height of the screen in
- characters. The corresponding <EM>terminfo</EM> capability and code is <STRONG>lines</STRONG>.
+ This counterpart to <EM>COLUMNS</EM> specifies the height of the screen in
+ characters. The corresponding <EM>terminfo</EM> capability and code is <STRONG>lines</STRONG>.
See the description of the <EM>COLUMNS</EM> variable above.
</PRE><H3><a name="h3-MOUSE_BUTTONS_123"><EM>MOUSE_BUTTONS_123</EM></a></H3><PRE>
- (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, <EM>ncurses</EM>
+ (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, <EM>ncurses</EM>
assumes a numbering of "132".
</PRE><H3><a name="h3-NCURSES_ASSUMED_COLORS"><EM>NCURSES_ASSUMED_COLORS</EM></a></H3><PRE>
- If set, this variable overrides the <EM>ncurses</EM> library's compiled-in
- assumption that the terminal's default colors are white on black; see
- <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>. Set the foreground and background color values
- with this environment variable by assigning it two integer values
+ If set, this variable overrides the <EM>ncurses</EM> library's compiled-in
+ assumption that the terminal's default colors are white on black; see
+ <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>. 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 <EM>ncurses</EM> 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". <EM>ncurses</EM> accepts integral values from -1 up to the
+ For example, to tell <EM>ncurses</EM> 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". <EM>ncurses</EM> accepts integral values from -1 up to the
value of the <EM>terminfo</EM> <STRONG>max_colors</STRONG> (<STRONG>colors</STRONG>) capability.
</PRE><H3><a name="h3-NCURSES_CONSOLE2"><EM>NCURSES_CONSOLE2</EM></a></H3><PRE>
- (MinGW port only) The <EM>Console2</EM> program defectively handles the
- Microsoft Console API call <EM>CreateConsoleScreenBuffer</EM>. 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 <EM>NCGDB</EM>
+ (MinGW port only) The <EM>Console2</EM> program defectively handles the
+ Microsoft Console API call <EM>CreateConsoleScreenBuffer</EM>. 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 <EM>NCGDB</EM>
has the same effect.
</PRE><H3><a name="h3-NCURSES_GPM_TERMS"><EM>NCURSES_GPM_TERMS</EM></a></H3><PRE>
- (Linux only) When <EM>ncurses</EM> is configured to use the GPM interface, this
- variable may list one or more terminal names against which the <EM>TERM</EM>
- variable (see below) is matched. An empty value disables the GPM
- interface, using <EM>ncurses</EM>'s built-in support for <STRONG>xterm(1)</STRONG> mouse
- protocols instead. If the variable is absent, <EM>ncurses</EM> attempts to open
- GPM if <EM>TERM</EM> contains "linux".
+ (Linux only) When <EM>ncurses</EM> is configured to use the GPM interface, this
+ variable may list one or more terminal type names, delimited by
+ vertical bars (<STRONG>|</STRONG>) or colons (<STRONG>:</STRONG>), against which the <EM>TERM</EM> variable (see
+ below) is matched. An empty value disables the GPM interface, using
+ <EM>ncurses</EM>'s built-in support for <STRONG>xterm(1)</STRONG> mouse protocols instead. If
+ the variable is absent, <EM>ncurses</EM> attempts to open GPM if <EM>TERM</EM> contains
+ "linux".
</PRE><H3><a name="h3-NCURSES_NO_HARD_TABS"><EM>NCURSES_NO_HARD_TABS</EM></a></H3><PRE>
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.
+ does flow control), an application must manage flow 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 temrinal descriptions
+ in capabilities. You may wish to use these terminal descriptions
without paying the performance penalty. Set <EM>NCURSES</EM><STRONG>_</STRONG><EM>NO</EM><STRONG>_</STRONG><EM>PADDING</EM> to any
value to disable all but mandatory padding. Mandatory padding is used
by such terminal capabilities as <STRONG>flash_screen</STRONG> (<STRONG>flash</STRONG>).
<STRONG>o</STRONG> location(s) configured and compiled into <EM>ncurses</EM>
- <STRONG>o</STRONG> <EM>/usr/share/terminfo</EM>
+ <STRONG>o</STRONG> <EM>/usr/share/terminfo</EM>
</PRE><H3><a name="h3-TERMINFO_DIRS"><EM>TERMINFO_DIRS</EM></a></H3><PRE>
particular significance to the application developer employing <EM>ncurses</EM>.
<STRONG>--disable-overwrite</STRONG>
- The standard include for <EM>ncurses</EM> is as noted in <STRONG>SYNOPSIS</STRONG>:
+ The standard C preprocessor inclusion for the <EM>curses</EM> library is as
+ follows.
<STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
- This option is used to avoid filename conflicts when <EM>ncurses</EM> is
- not the main implementation of curses of the computer. If <EM>ncurses</EM>
- is installed disabling overwrite, it puts its headers in a
- subdirectory, e.g.,
+ This option is used to avoid file name conflicts between <EM>ncurses</EM>
+ and an existing <EM>curses</EM> installation on the system. If <EM>ncurses</EM> is
+ installed disabling overwrite, it puts its header files in a
+ subdirectory. Here is an example.
<STRONG>#include</STRONG> <STRONG><ncurses/curses.h></STRONG>
- It also omits a symbolic link which would allow you to use
- <STRONG>-lcurses</STRONG> to build executables.
+ Installation also omits a symbolic link that would cause the
+ compiler's <STRONG>-lcurses</STRONG> option to link object files with <EM>ncurses</EM>
+ instead of the system <EM>curses</EM> library.
+
+ The directory used by this configuration of <EM>ncurses</EM> is shown in
+ section "SYNOPSIS" above.
<STRONG>--enable-widec</STRONG>
- 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"
+ 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., instead of
<STRONG>-lncurses</STRONG>
<STRONG>-lncursesw</STRONG>
- 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
+ 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:
- <STRONG>o</STRONG> Originally, the wide-character feature required the symbol
+ <STRONG>o</STRONG> Originally, the wide-character feature required the symbol
<STRONG>_XOPEN_SOURCE_EXTENDED</STRONG> but that was only valid for XPG4
(1996).
- <STRONG>o</STRONG> Later, that was deemed conflicting with <STRONG>_XOPEN_SOURCE</STRONG> defined
+ <STRONG>o</STRONG> Later, that was deemed conflicting with <STRONG>_XOPEN_SOURCE</STRONG> defined
to 500.
- <STRONG>o</STRONG> As of mid-2018, none of the features in this implementation
- require a <STRONG>_XOPEN_SOURCE</STRONG> feature greater than 600. However,
+ <STRONG>o</STRONG> As of mid-2018, none of the features in this implementation
+ require a <STRONG>_XOPEN_SOURCE</STRONG> feature greater than 600. However,
X/Open Curses, Issue 7 (2009) recommends defining it to 700.
- <STRONG>o</STRONG> Alternatively, you can enable the feature by defining
- <STRONG>NCURSES_WIDECHAR</STRONG> with the caveat that some other header file
- than <STRONG>curses.h</STRONG> may require a specific value for <STRONG>_XOPEN_SOURCE</STRONG>
+ <STRONG>o</STRONG> Alternatively, you can enable the feature by defining
+ <STRONG>NCURSES_WIDECHAR</STRONG> with the caveat that some other header file
+ than <STRONG>curses.h</STRONG> may require a specific value for <STRONG>_XOPEN_SOURCE</STRONG>
(or a system-specific symbol).
- The <EM>curses.h</EM> 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 <EM>WINDOW</EM> structure differs; few applications
+ The <EM>curses.h</EM> 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 <EM>WINDOW</EM> structure differs; few applications
require more than pointers to <EM>WINDOW</EM>s.
If the headers are installed allowing overwrite, the wide-
- character library's headers should be installed last, to allow
+ character library's headers should be installed last, to allow
applications to be built using either library from the same set of
headers.
<STRONG>--with-pthread</STRONG>
- The configure script renames the library. All of the library
- names have a "t" appended to them (before any "w" added by
+ The configure script renames the library. All of the library
+ names have a "t" appended to them (before any "w" added by
<STRONG>--enable-widec</STRONG>).
The global variables such as <STRONG>LINES</STRONG> 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
+ to set these values. Some applications (very few) may require
changes to work with this convention.
<STRONG>--with-shared</STRONG>
<STRONG>--with-normal</STRONG>
<STRONG>--with-debug</STRONG>
<STRONG>--with-profile</STRONG>
- 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
+ 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>.
<STRONG>--with-termlib</STRONG>
- Low-level functions which do not depend upon whether the library
+ 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
+ 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.
Those functions are described in these pages:
<STRONG>o</STRONG> <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> - miscellaneous <EM>curses</EM> utility routines
<STRONG>--with-trace</STRONG>
- The <STRONG>trace</STRONG> function normally resides in the debug library, but it
- is sometimes useful to configure this in the shared library.
+ 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 check for the function's existence rather
than assuming it is always in the debug library.
</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
- X/Open Curses permits most functions it specifies to be made available
+ X/Open Curses permits most functions it specifies to be made available
as macros as well. <EM>ncurses</EM> does so
<STRONG>o</STRONG> for functions that return values via their parameters,
<STRONG>o</STRONG> to support obsolete features,
- <STRONG>o</STRONG> to reuse functions (for example, those that move the cursor before
+ <STRONG>o</STRONG> to reuse functions (for example, those that move the cursor before
another operation), and
- <STRONG>o</STRONG> a few special cases.
+ <STRONG>o</STRONG> in a few special cases.
- If the standard output file descriptor of an <EM>ncurses</EM> program is
- redirected to something that is not a terminal device, the library
- writes screen updates to the standard error file descriptor. This was
+ If the standard output file descriptor of an <EM>ncurses</EM> 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 <EM>curses</EM>.
- See subsection "Header Files" below regarding symbols exposed by
+ See subsection "Header Files" below regarding symbols exposed by
inclusion of <EM>curses.h</EM>.
</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
- <EM>ncurses</EM> enables an application to capture mouse events on certain
+ <EM>ncurses</EM> enables an application to capture mouse events on certain
terminals, including <STRONG>xterm(1)</STRONG>; see <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>.
- <EM>ncurses</EM> provides a means of responding to window resizing events, as
- when running in a GUI terminal emulator application such as <EM>xterm</EM>; see
+ <EM>ncurses</EM> provides a means of responding to window resizing events, as
+ when running in a GUI terminal emulator application such as <EM>xterm</EM>; see
<STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> and <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
<EM>ncurses</EM> allows an application to query the terminal for the presence of
a wide variety of special keys; see <STRONG><A HREF="curs_getch.3x.html">has_key(3x)</A></STRONG>.
<EM>ncurses</EM> 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 <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>,
+ X/Open Curses by allowing the application programmer to define
+ additional key events at runtime; see <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>,
<STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>, and <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>.
- <EM>ncurses</EM> 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,
+ <EM>ncurses</EM> 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 <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>.
An <EM>ncurses</EM> application can eschew knowledge of <EM>WINDOW</EM> structure
internals, instead using accessor functions such as <STRONG><A HREF="curs_opaque.3x.html">is_scrollok(3x)</A></STRONG>.
- <EM>ncurses</EM> enables an application to direct application output to a
- printer attached to the terminal device; see <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>.
+ <EM>ncurses</EM> enables an application to direct its output to a printer
+ attached to the terminal device; see <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>.
- <EM>ncurses</EM> offers <STRONG><A HREF="curs_slk.3x.html">slk_attr(3x)</A></STRONG> as a counterpart of <STRONG><A HREF="curs_attr.3x.html">attr_get(3x)</A></STRONG> for soft-
- label key lines, and <STRONG><A HREF="curs_slk.3x.html">extended_slk_color(3x)</A></STRONG> as a form of <STRONG><A HREF="curs_slk.3x.html">slk_color(3x)</A></STRONG>
- that can gather color information from them when many colors are
+ <EM>ncurses</EM> offers <STRONG><A HREF="curs_slk.3x.html">slk_attr(3x)</A></STRONG> as a counterpart of <STRONG><A HREF="curs_attr.3x.html">attr_get(3x)</A></STRONG> for soft-
+ label key lines, and <STRONG><A HREF="curs_slk.3x.html">extended_slk_color(3x)</A></STRONG> as a form of <STRONG><A HREF="curs_slk.3x.html">slk_color(3x)</A></STRONG>
+ that can gather color information from them when many colors are
supported.
- Some extensions are available only if <EM>ncurses</EM> permits modification of
- <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>'s behavior; see <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG>. <EM>ncurses</EM> is compiled
- to support them; section "ALTERNATE CONFIGURATIONS" describes how.
+ <EM>ncurses</EM> permits modification of <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>'s behavior; see
+ <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG>.
- <STRONG>o</STRONG> Rudimentary support for multi-threaded applications may be
- available; see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>.
+ Rudimentary support for multi-threaded applications may be available;
+ see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>.
- <STRONG>o</STRONG> Functions that ease the management of multiple screens can be
- exposed; see <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>.
+ Functions that ease the management of multiple screens can be exposed;
+ see <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>.
- <STRONG>o</STRONG> To aid applications to debug their memory usage, <EM>ncurses</EM> optionally
- offers functions to more aggressively free memory it dynamically
- allocates itself; see <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>.
+ To aid applications to debug their memory usage, <EM>ncurses</EM> optionally
+ offers functions to more aggressively free memory it dynamically
+ allocates itself; see <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>.
- <STRONG>o</STRONG> The library facilitates auditing and troubleshooting of its
- behavior; see <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>.
+ The library facilitates auditing and troubleshooting of its behavior;
+ see <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>.
- <STRONG>o</STRONG> The compiler option <STRONG>-DUSE_GETCAP</STRONG> causes the library to fall back to
- reading <EM>/etc/termcap</EM> if the terminal setup code cannot find a <EM>term-</EM>
- <EM>info</EM> entry corresponding to <EM>TERM</EM>. Use of this feature is not
- recommended, as it essentially includes an entire <EM>termcap</EM> compiler
- in the <EM>ncurses</EM> startup code, at a cost in memory usage and
- application launch latency.
+ Compiling <EM>ncurses</EM> with the option <STRONG>-DUSE_GETCAP</STRONG> causes it to fall back
+ to reading <EM>/etc/termcap</EM> if the terminal setup code cannot find a <EM>term-</EM>
+ <EM>info</EM> entry corresponding to <EM>TERM</EM>. Use of this feature is not
+ recommended, as it essentially includes an entire <EM>termcap</EM> compiler in
+ the <EM>ncurses</EM> startup code, at a cost in memory usage and application
+ launch latency.
<EM>PDCurses</EM> and NetBSD <EM>curses</EM> incorporate some <EM>ncurses</EM> extensions.
Individual man pages indicate where this is the case.
X/Open Curses defines two levels of conformance, "base" and "enhanced".
The latter includes several additional features, such as wide-character
and color support. <EM>ncurses</EM> intends base-level conformance with X/Open
- Curses, and supports nearly all features of its enhanced level.
+ Curses, and supports all features of its enhanced level except the
+ <STRONG>untic</STRONG> utility.
- Differences between X/Open Curses and <EM>ncurses</EM> are documented in the
+ Differences between X/Open Curses and <EM>ncurses</EM> are documented in the
"PORTABILITY" sections of applicable man pages.
</PRE><H3><a name="h3-Error-Checking">Error Checking</a></H3><PRE>
- In many cases, X/Open Curses is vague about error conditions, omitting
+ In many cases, X/Open Curses is vague about error conditions, omitting
some of the SVr4 documentation.
- Unlike other implementations, <EM>ncurses</EM> checks pointer parameters, such
- as those to <EM>WINDOW</EM> structures, to ensure that they are not null. This
- is done primarily to guard against programmer error. The standard
+ Unlike other implementations, <EM>ncurses</EM> checks pointer parameters, such
+ as those to <EM>WINDOW</EM> 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 <EM>curses</EM>
- applications.
+ which of several possible errors occurred. An application that relies
+ on <EM>ncurses</EM> to check its function parameters for validity limits its
+ portability and robustness.
</PRE><H3><a name="h3-Padding-Differences">Padding Differences</a></H3><PRE>
- In historical <EM>curses</EM> implementations, delays embedded in the <EM>terminfo</EM>
- capabilities <STRONG>carriage_return</STRONG> (<STRONG>cr</STRONG>), <STRONG>scroll_forward</STRONG> (<STRONG>ind</STRONG>), <STRONG>cursor_left</STRONG>
+ In historical <EM>curses</EM> implementations, delays embedded in the <EM>terminfo</EM>
+ capabilities <STRONG>carriage_return</STRONG> (<STRONG>cr</STRONG>), <STRONG>scroll_forward</STRONG> (<STRONG>ind</STRONG>), <STRONG>cursor_left</STRONG>
(<STRONG>cub1</STRONG>), <STRONG>form_feed</STRONG> (<STRONG>ff</STRONG>), and <STRONG>tab</STRONG> (<STRONG>ht</STRONG>) activated corresponding delay bits
- in the Unix terminal driver. <EM>ncurses</EM> 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
+ in the Unix terminal driver. <EM>ncurses</EM> 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.
</PRE><H3><a name="h3-Header-Files">Header Files</a></H3><PRE>
- The header file <EM>curses.h</EM> itself includes the header files <EM>stdio.h</EM> and
+ The header file <EM>curses.h</EM> itself includes the header files <EM>stdio.h</EM> and
<EM>unctrl.h</EM>.
X/Open Curses has more to say,
- The inclusion of <EM>curses.h</EM> may make visible all symbols from the
+ The inclusion of <EM>curses.h</EM> may make visible all symbols from the
headers <EM>stdio.h</EM>, <EM>term.h</EM>, <EM>termios.h</EM>, and <EM>wchar.h</EM>.
but does not finish the story. A more complete account follows.
- <STRONG>o</STRONG> Starting with 4BSD <EM>curses</EM> (1980) all implementations have provided
- a <EM>curses.h</EM> file.
+ <STRONG>o</STRONG> The first <EM>curses</EM>, in 4BSD, provided a <EM>curses.h</EM> file.
BSD <EM>curses</EM> code included <EM>curses.h</EM> and <EM>unctrl.h</EM> from an internal
header file <EM>curses.ext</EM>, where "ext" abbreviated "externs".
HP-UX <EM>curses</EM> includes <EM>term.h</EM> from <EM>curses.h</EM> to declare <EM>setupterm</EM> in
<EM>curses.h</EM>, but <EM>ncurses</EM> and Solaris <EM>curses</EM> do not.
- AIX <EM>curses</EM> includes <EM>term.h</EM> and termios.h<EM>.</EM> Again, <EM>ncurses</EM> and
+ AIX <EM>curses</EM> includes <EM>term.h</EM> and <EM>termios.h</EM>. Again, <EM>ncurses</EM> and
Solaris <EM>curses</EM> do not.
<STRONG>o</STRONG> X/Open Curses says that <EM>curses.h</EM> <STRONG>may</STRONG> include <EM>term.h</EM>, but does not
-ncurses 6.4 2024-04-20 <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
+ncurses 6.5 2024-06-08 <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
</PRE>
<div class="nav">
<ul>