blob: 9b061acba0e03839b970fcddd8a32571e3a1a096 [file] [log] [blame]
micky3879b9f5e72025-07-08 18:04:53 -04001<!--
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05302 * t
3 ****************************************************************************
micky3879b9f5e72025-07-08 18:04:53 -04004 * Copyright 2018-2023,2024 Thomas E. Dickey *
5 * Copyright 1998-2015,2017 Free Software Foundation, Inc. *
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05306 * *
7 * Permission is hereby granted, free of charge, to any person obtaining a *
8 * copy of this software and associated documentation files (the *
9 * "Software"), to deal in the Software without restriction, including *
10 * without limitation the rights to use, copy, modify, merge, publish, *
11 * distribute, distribute with modifications, sublicense, and/or sell *
12 * copies of the Software, and to permit persons to whom the Software is *
13 * furnished to do so, subject to the following conditions: *
14 * *
15 * The above copyright notice and this permission notice shall be included *
16 * in all copies or substantial portions of the Software. *
17 * *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
21 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
22 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
23 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
24 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
25 * *
26 * Except as contained in this notice, the name(s) of the above copyright *
27 * holders shall not be used in advertising or otherwise to promote the *
28 * sale, use or other dealings in this Software without prior written *
29 * authorization. *
30 ****************************************************************************
micky3879b9f5e72025-07-08 18:04:53 -040031 * @Id: ncurses.3x,v 1.214 2024/04/27 17:55:43 tom Exp @
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053032-->
Steve Kondikae271bc2015-11-15 02:50:53 +010033<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053034<HTML>
35<HEAD>
Steve Kondikae271bc2015-11-15 02:50:53 +010036<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
micky3879b9f5e72025-07-08 18:04:53 -040037<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
38<TITLE>ncurses 3x 2024-04-27 ncurses 6.5 Library calls</TITLE>
39<link rel="author" href="mailto:bug-ncurses@gnu.org">
40
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053041</HEAD>
42<BODY>
micky3879b9f5e72025-07-08 18:04:53 -040043<H1 class="no-header">ncurses 3x 2024-04-27 ncurses 6.5 Library calls</H1>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053044<PRE>
micky3879b9f5e72025-07-08 18:04:53 -040045<STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> Library calls <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053046
47
48
49
micky3879b9f5e72025-07-08 18:04:53 -040050</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
51 <STRONG>ncurses</STRONG> - character-cell terminal interface with optimized output
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053052
53
micky3879b9f5e72025-07-08 18:04:53 -040054</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053055 <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
56
57
micky3879b9f5e72025-07-08 18:04:53 -040058</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
59 The "new curses" library offers the programmer a terminal-independent
60 means of reading keyboard and mouse input and updating character-cell
61 terminals with output optimized to minimize screen updates. <EM>ncurses</EM>
62 replaces the <EM>curses</EM> libraries from System V Release 4 Unix ("SVr4") and
63 4.4BSD Unix, the development of which ceased in the 1990s. This
64 document describes <EM>ncurses</EM> version 6.5 (patch 20240427).
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053065
micky3879b9f5e72025-07-08 18:04:53 -040066 <EM>ncurses</EM> permits control of the terminal screen's contents; abstraction
67 and subdivision thereof with <EM>windows</EM> and <EM>pads</EM>; the reading of terminal
68 input; control of terminal input and output options; environment query
69 routines; color manipulation; the definition and use of <EM>soft</EM> <EM>label</EM>
70 keys; <EM>terminfo</EM> capability access; a <EM>termcap</EM> compatibility interface;
71 and an abstraction of the system's API for manipulating the terminal
72 (such as <STRONG>termios(3)</STRONG>).
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053073
micky3879b9f5e72025-07-08 18:04:53 -040074 <EM>ncurses</EM> implements the standard interface described by X/Open Curses
75 Issue 7. In many behavioral details not standardized by X/Open,
76 <EM>ncurses</EM> emulates the <EM>curses</EM> library of SVr4 and provides numerous
77 useful extensions.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053078
micky3879b9f5e72025-07-08 18:04:53 -040079 <EM>ncurses</EM> man pages employ several sections to clarify matters of usage
80 and interoperability with other <EM>curses</EM> implementations.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053081
micky3879b9f5e72025-07-08 18:04:53 -040082 <STRONG>o</STRONG> "NOTES" describes issues and caveats of which any user of the
83 <EM>ncurses</EM> API should be aware, such as limitations on the size of an
84 underlying integral type or the availability of a preprocessor
85 macro exclusive of a function definition (which prevents its
86 address from being taken). This section also describes
87 implementation details that will be significant to the programmer
88 but which are not standardized.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053089
micky3879b9f5e72025-07-08 18:04:53 -040090 <STRONG>o</STRONG> "EXTENSIONS" presents <EM>ncurses</EM> innovations beyond the X/Open Curses
91 standard and/or the SVr4 <EM>curses</EM> implementation. They are termed
92 <EM>extensions</EM> to indicate that they cannot be implemented solely by
93 using the library API, but require access to the library's internal
94 state.
Steve Kondikae271bc2015-11-15 02:50:53 +010095
micky3879b9f5e72025-07-08 18:04:53 -040096 <STRONG>o</STRONG> "PORTABILITY" discusses matters (beyond the exercise of extensions)
97 that should be considered when writing to a <EM>curses</EM> standard, or for
98 multiple implementations.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053099
micky3879b9f5e72025-07-08 18:04:53 -0400100 <STRONG>o</STRONG> "HISTORY" examines points of detail in <EM>ncurses</EM> and other <EM>curses</EM>
101 implementations over the decades of their development, particularly
102 where precedent or inertia have frustrated better design (and, in a
103 few cases, where such inertia has been overcome).
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530104
micky3879b9f5e72025-07-08 18:04:53 -0400105 A <EM>curses</EM> application must be linked with the library; use the <STRONG>-lncurses</STRONG>
106 option to your compiler or linker. A debugging version of the library
107 may be available; if so, link with it using <STRONG>-lncurses_g</STRONG>. (Your system
108 integrator may have installed these libraries such that you can use the
109 options <STRONG>-lcurses</STRONG> and <STRONG>-lcurses_g</STRONG>, respectively.) The <EM>ncurses</EM><STRONG>_</STRONG><EM>g</EM> library
110 generates trace logs (in a file called <EM>trace</EM> in the current directory)
111 that describe <EM>ncurses</EM> actions. See section "ALTERNATE CONFIGURATIONS"
112 below.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530113
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530114
micky3879b9f5e72025-07-08 18:04:53 -0400115</PRE><H3><a name="h3-Application-Structure">Application Structure</a></H3><PRE>
116 A <EM>curses</EM> application uses information from the system locale;
117 <STRONG>setlocale(3)</STRONG> prepares it for <EM>curses</EM> library calls.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530118
micky3879b9f5e72025-07-08 18:04:53 -0400119 setlocale(LC_ALL, "");
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530120
micky3879b9f5e72025-07-08 18:04:53 -0400121 If the locale is not thus initialized, the library assumes that
122 characters are printable as in ISO 8859-1, to work with certain legacy
123 programs. You should initialize the locale; do not expect consistent
124 behavior from the library when the locale has not been set up.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530125
micky3879b9f5e72025-07-08 18:04:53 -0400126 <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG> or <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG> must be called to initialize <EM>curses</EM> before
127 use of any functions that deal with windows and screens.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530128
micky3879b9f5e72025-07-08 18:04:53 -0400129 To get character-at-a-time input without echoing--most interactive,
130 screen-oriented programs want this--use the following sequence.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530131
micky3879b9f5e72025-07-08 18:04:53 -0400132 initscr(); cbreak(); noecho();
Steve Kondikae271bc2015-11-15 02:50:53 +0100133
micky3879b9f5e72025-07-08 18:04:53 -0400134 Most applications perform further setup as follows.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530135
micky3879b9f5e72025-07-08 18:04:53 -0400136 intrflush(stdscr, FALSE);
137 keypad(stdscr, TRUE);
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530138
micky3879b9f5e72025-07-08 18:04:53 -0400139 A <EM>curses</EM> program then often enters an event loop of some sort. Call
140 <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> before exiting.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530141
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530142
micky3879b9f5e72025-07-08 18:04:53 -0400143</PRE><H3><a name="h3-Overview">Overview</a></H3><PRE>
144 A <EM>curses</EM> library abstracts the terminal screen by representing all or
145 part of it as a <EM>WINDOW</EM> data structure. A <EM>window</EM> is a rectangular grid
146 of character cells, addressed by row and column coordinates (<EM>y</EM>, <EM>x</EM>),
147 with the upper left corner as (0, 0). A window called <STRONG>stdscr</STRONG>, the same
148 size as the terminal screen, is always available. Create others with
149 <STRONG><A HREF="curs_window.3x.html">newwin(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530150
micky3879b9f5e72025-07-08 18:04:53 -0400151 A <EM>curses</EM> library does not manage overlapping windows (but see below).
152 You can either use <STRONG>stdscr</STRONG> to manage one screen-filling window, or tile
153 the screen into non-overlapping windows and not use <STRONG>stdscr</STRONG> at all.
154 Mixing the two approaches will result in unpredictable and undesired
155 effects.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530156
micky3879b9f5e72025-07-08 18:04:53 -0400157 Functions permit manipulation of a window and the <EM>cursor</EM> identifying
158 the cell within it at which the next output operation will occur.
159 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
160 cursor and write a character to <STRONG>stdscr</STRONG>, respectively.
Steve Kondikae271bc2015-11-15 02:50:53 +0100161
micky3879b9f5e72025-07-08 18:04:53 -0400162 Frequent changes to the terminal screen can cause unpleasant flicker or
163 inefficient use of the communication channel to the device, so the
164 library does not generally update it automatically. Therefore, after
165 using <EM>curses</EM> functions to accumulate a set of desired updates that make
166 sense to present together, call <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> to tell the library to make
167 the user's screen look like <STRONG>stdscr</STRONG>. The library <EM>optimizes</EM> its output
168 by computing a minimal number of operations to mutate the screen from
169 its state at the previous refresh to the new one. Effective
170 optimization demands accurate information about the terminal device:
171 the management of such information is the province of the <STRONG><A HREF="curs_terminfo.3x.html">terminfo(3x)</A></STRONG>
172 API, a feature of every standard <EM>curses</EM> implementation.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530173
micky3879b9f5e72025-07-08 18:04:53 -0400174 Special windows called <EM>pads</EM> may also be manipulated. These are windows
175 that are not constrained to the size of the terminal screen and whose
176 contents need not be completely displayed. See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530177
micky3879b9f5e72025-07-08 18:04:53 -0400178 In addition to drawing characters on the screen, rendering attributes
179 and colors may be supported, causing the characters to show up in such
180 modes as underlined, in reverse video, or in color on terminals that
181 support such display enhancements. See <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530182
micky3879b9f5e72025-07-08 18:04:53 -0400183 <EM>curses</EM> predefines constants for a small set of forms-drawing graphics
184 corresponding to the DEC Alternate Character Set (ACS), a feature of
185 VT100 and other terminals. See <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530186
micky3879b9f5e72025-07-08 18:04:53 -0400187 <EM>curses</EM> is implemented using the operating system's terminal driver;
188 keystroke events are received not as scan codes but as byte sequences.
189 Graphical keycaps (alphanumeric and punctuation keys, and the space)
190 appear as-is. Everything else, including the tab, enter/return,
191 keypad, arrow, and function keys, appears as a control character or a
192 multibyte <EM>escape</EM> <EM>sequence.</EM> <EM>curses</EM> translates these into unique <EM>key</EM>
193 <EM>codes.</EM> See <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530194
micky3879b9f5e72025-07-08 18:04:53 -0400195 <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
196 <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG> libraries to ease construction of user interfaces with <EM>curses</EM>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530197
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530198
micky3879b9f5e72025-07-08 18:04:53 -0400199</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
200 The selection of an appropriate value of <EM>TERM</EM> in the process
201 environment is essential to correct <EM>curses</EM> and <EM>terminfo</EM> library
202 operation. A well-configured system selects a correct <EM>TERM</EM> value
203 automatically; <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> may assist with troubleshooting exotic
204 situations.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530205
micky3879b9f5e72025-07-08 18:04:53 -0400206 If you change the terminal type, export the <EM>TERM</EM> environment variable
207 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
208 subsection "Tabs and Initialization" of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530209
micky3879b9f5e72025-07-08 18:04:53 -0400210 If the environment variables <EM>LINES</EM> and <EM>COLUMNS</EM> are set, or if the
211 <EM>curses</EM> program is executing in a graphical windowing environment, the
212 information obtained thence overrides that obtained by <EM>terminfo</EM>. An
213 <EM>ncurses</EM> extension supports resizable terminals; see <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530214
micky3879b9f5e72025-07-08 18:04:53 -0400215 If the environment variable <EM>TERMINFO</EM> is defined, a <EM>curses</EM> program
216 checks first for a terminal type description in the location it
217 identifies. <EM>TERMINFO</EM> is useful for developing experimental type
218 descriptions or when write permission to <EM>/usr/share/terminfo</EM> is not
219 available.
Steve Kondikae271bc2015-11-15 02:50:53 +0100220
micky3879b9f5e72025-07-08 18:04:53 -0400221 See section "ENVIRONMENT" below.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530222
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530223
micky3879b9f5e72025-07-08 18:04:53 -0400224</PRE><H3><a name="h3-Naming-Conventions">Naming Conventions</a></H3><PRE>
225 <EM>curses</EM> offers many functions in variant forms using a regular set of
226 alternatives to the name of an elemental one. Those prefixed with "w"
227 require a <EM>WINDOW</EM> pointer argument; those with a "mv" prefix first
228 perform cursor movement using <STRONG><A HREF="curs_move.3x.html">wmove(3x)</A></STRONG>; a "mvw" prefix indicates both.
229 The "w" function is typically the elemental one; the removal of this
230 prefix usually indicates operation on <STRONG>stdscr</STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530231
micky3879b9f5e72025-07-08 18:04:53 -0400232 Four functions prefixed with "p" require a pad argument.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530233
micky3879b9f5e72025-07-08 18:04:53 -0400234 In function synopses, <EM>ncurses</EM> man pages apply the following names to
235 parameters.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530236
micky3879b9f5e72025-07-08 18:04:53 -0400237 <EM>bf</EM> <EM>bool</EM> (<STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>)
238 <EM>c</EM> a <EM>char</EM> or <EM>int</EM>
239 <EM>ch</EM> a <EM>chtype</EM>
240 <EM>wc</EM> a <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> or <EM>wint</EM><STRONG>_</STRONG><EM>t</EM>
241 <EM>wch</EM> a <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>
242 <EM>win</EM> pointer to a <EM>WINDOW</EM>
243 <EM>pad</EM> pointer to a <EM>WINDOW</EM> that is a pad
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530244
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530245
micky3879b9f5e72025-07-08 18:04:53 -0400246</PRE><H3><a name="h3-Wide-and-Non-wide-Character-Configurations">Wide and Non-wide Character Configurations</a></H3><PRE>
247 This manual page describes functions that appear in any configuration
248 of the library. There are two common configurations; see section
249 "ALTERNATE CONFIGURATIONS" below.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530250
micky3879b9f5e72025-07-08 18:04:53 -0400251 <EM>ncurses</EM> is the library in its "non-wide" configuration, handling only
252 eight-bit characters. It stores a character combined with
253 attributes in a <EM>chtype</EM> datum, which is often an alias of <EM>int</EM>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530254
micky3879b9f5e72025-07-08 18:04:53 -0400255 Attributes alone (with no corresponding character) can be
256 stored in variables of <EM>chtype</EM> or <EM>attr</EM><STRONG>_</STRONG><EM>t</EM> type. In either
257 case, they are represented as an integral bit mask.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530258
micky3879b9f5e72025-07-08 18:04:53 -0400259 Each cell of a <EM>WINDOW</EM> is stored as a <EM>chtype</EM>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530260
micky3879b9f5e72025-07-08 18:04:53 -0400261 <EM>ncursesw</EM> is the library in its "wide" configuration, which handles
262 character encodings requiring a larger data type than <EM>char</EM> (a
263 byte-sized type) can represent. It adds about one third more
264 calls using additional data types that can store such
265 <EM>multibyte</EM> characters.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530266
micky3879b9f5e72025-07-08 18:04:53 -0400267 <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> corresponds to the non-wide configuration's <EM>chtype</EM>.
268 It always a structure type, because it stores more
269 data than fit into a standard scalar type. A
270 character code may not be representable as a <EM>char</EM>,
271 and moreover more than one character may occupy a
272 cell (as with accent marks and other diacritics).
273 Each character is of type <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM>; a complex
274 character contains one spacing character and zero or
275 more non-spacing characters (see below). Attributes
276 and color data are stored in separate fields of the
277 structure, not combined as in <EM>chtype</EM>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530278
micky3879b9f5e72025-07-08 18:04:53 -0400279 Each cell of a <EM>WINDOW</EM> is stored as a <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530280
micky3879b9f5e72025-07-08 18:04:53 -0400281 <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>
282 data. The wide library API of <EM>ncurses</EM> depends on two data
283 types standardized by ISO C95.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530284
micky3879b9f5e72025-07-08 18:04:53 -0400285 <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> stores a wide character. Like <EM>chtype</EM>, it may be an
286 alias of <EM>int</EM>. Depending on the character encoding,
287 a wide character may be <EM>spacing</EM>, meaning that it
288 occupies a character cell by itself and typically
289 accompanies cursor advancement, or <EM>non-spacing</EM>,
290 meaning that it occupies the same cell as a spacing
291 character, is often regarded as a "modifier" of the
292 base glyph with which it combines, and typically
293 does not advance the cursor.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530294
micky3879b9f5e72025-07-08 18:04:53 -0400295 <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>,
296 analogously to the <EM>int</EM>-sized character manipulation
297 functions of ISO C and its constant <STRONG>EOF</STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530298
micky3879b9f5e72025-07-08 18:04:53 -0400299 The wide library provides additional functions that
300 complement those in the non-wide library where the size of
301 the underlying character type is significant. A somewhat
302 regular naming convention relates many of the wide variants
303 to their non-wide counterparts; where a non-wide function
304 name contains "ch" or "str", prefix it with "_w" to obtain
305 the wide counterpart. For example, <STRONG>waddch</STRONG> becomes <STRONG>wadd_wch</STRONG>.
306 (Exceptions that add only "w" comprise <STRONG>addwstr</STRONG>, <STRONG>inwstr</STRONG>, and
307 their variants.)
Steve Kondikae271bc2015-11-15 02:50:53 +0100308
micky3879b9f5e72025-07-08 18:04:53 -0400309 This convention is inapplicable to some non-wide function
310 names, so other transformations are used for the wide
311 configuration: the window background management function
312 "bkgd" becomes "bkgrnd"; the window border-drawing and
313 -clearing functions are suffixed with "_set"; and character
314 attribute manipulation functions like "attron" become
315 "attr_on".
Steve Kondikae271bc2015-11-15 02:50:53 +0100316
Steve Kondikae271bc2015-11-15 02:50:53 +0100317
micky3879b9f5e72025-07-08 18:04:53 -0400318</PRE><H3><a name="h3-Function-Name-Index">Function Name Index</a></H3><PRE>
319 The following table lists the <EM>curses</EM> functions provided in the non-wide
320 and wide APIs and the corresponding man pages that describe them.
321 Those flagged with "*" are <EM>ncurses</EM>-specific, neither described by
322 X/Open Curses nor present in SVr4.
Steve Kondikae271bc2015-11-15 02:50:53 +0100323
micky3879b9f5e72025-07-08 18:04:53 -0400324 <STRONG><EM>curses</EM></STRONG> Function Name Man Page
325 ---------------------------------------------
326 COLOR_PAIR <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
327 PAIR_NUMBER <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
328 add_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
329 add_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
330 add_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
331 addch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
332 addchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
333 addchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
334 addnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
335 addnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
336 addstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
337 addwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
338 alloc_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>*
339 assume_default_colors <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>*
340 attr_get <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
341 attr_off <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
342 attr_on <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
343 attr_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
344 attroff <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
345 attron <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
346 attrset <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
347 baudrate <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
348 beep <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
349 bkgd <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
350 bkgdset <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
351 bkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
352 bkgrndset <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
353 border <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
354 border_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
355 box <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
356 box_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
357 can_change_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
358 cbreak <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
359 chgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
360 clear <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
361 clearok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
362 clrtobot <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
363 clrtoeol <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
364 color_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
365 color_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
366 copywin <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
367 curs_set <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
368 curses_trace <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
369 curses_version <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>*
370 def_prog_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
371 def_shell_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
372 define_key <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>*
373 del_curterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
374 delay_output <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
375 delch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
376 deleteln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
377 delscreen <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
378 delwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
379 derwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
380 doupdate <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
381 dupwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
382 echo <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
Steve Kondikae271bc2015-11-15 02:50:53 +0100383
micky3879b9f5e72025-07-08 18:04:53 -0400384 echo_wchar <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
385 echochar <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
386 endwin <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
387 erase <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
388 erasechar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
389 erasewchar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
390 exit_curses <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>*
391 exit_terminfo <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>*
392 extended_color_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>*
393 extended_pair_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>*
394 extended_slk_color <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>*
395 filter <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
396 find_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>*
397 flash <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
398 flushinp <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
399 free_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>*
400 get_escdelay <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>*
401 get_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
402 get_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
403 getattrs <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
404 getbegx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
405 getbegy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
406 getbegyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
407 getbkgd <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
408 getbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
409 getcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
410 getch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
411 getcurx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
412 getcury <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
413 getmaxx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
414 getmaxy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
415 getmaxyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
416 getmouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
417 getn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
418 getnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
419 getparx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
420 getpary <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
421 getparyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
422 getstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
423 getsyx <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
424 getwin <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
425 getyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
426 halfdelay <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
427 has_colors <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
428 has_ic <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
429 has_il <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
430 has_key <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>*
431 has_mouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
432 hline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
433 hline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
434 idcok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
435 idlok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
436 immedok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
437 in_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
438 in_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
439 in_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
440 inch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
441 inchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
442 inchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
443 init_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
444 init_extended_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>*
445 init_extended_pair <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>*
446 init_pair <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
447 initscr <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
448 innstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530449
micky3879b9f5e72025-07-08 18:04:53 -0400450 innwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
451 ins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
452 ins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
453 ins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
454 insch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
455 insdelln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
456 insertln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
457 insnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
458 insstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
459 instr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
460 intrflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
461 inwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
462 is_cbreak <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>*
463 is_cleared <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
464 is_echo <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>*
465 is_idcok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
466 is_idlok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
467 is_immedok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
468 is_keypad <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
469 is_leaveok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
470 is_linetouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
471 is_nl <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>*
472 is_nodelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
473 is_notimeout <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
474 is_pad <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
475 is_raw <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>*
476 is_scrollok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
477 is_subwin <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
478 is_syncok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
479 is_term_resized <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
480 is_wintouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
481 isendwin <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
482 key_defined <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>*
483 key_name <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
484 keybound <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>*
485 keyname <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
486 keyok <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>*
487 keypad <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
488 killchar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
489 killwchar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
490 leaveok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
491 longname <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
492 mcprint <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>*
493 meta <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
494 mouse_trafo <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
495 mouseinterval <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
496 mousemask <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
497 move <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
498 mvadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
499 mvadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
500 mvadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
501 mvaddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
502 mvaddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
503 mvaddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
504 mvaddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
505 mvaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
506 mvaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
507 mvaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
508 mvchgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
509 mvcur <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
510 mvdelch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
511 mvderwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
512 mvget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
513 mvget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
514 mvgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530515
micky3879b9f5e72025-07-08 18:04:53 -0400516 mvgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
517 mvgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
518 mvgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
519 mvhline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
520 mvhline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
521 mvin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
522 mvin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
523 mvin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
524 mvinch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
525 mvinchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
526 mvinchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
527 mvinnstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
528 mvinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
529 mvins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
530 mvins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
531 mvins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
532 mvinsch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
533 mvinsnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
534 mvinsstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
535 mvinstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
536 mvinwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
537 mvprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
538 mvscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
539 mvvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
540 mvvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
541 mvwadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
542 mvwadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
543 mvwadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
544 mvwaddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
545 mvwaddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
546 mvwaddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
547 mvwaddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
548 mvwaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
549 mvwaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
550 mvwaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
551 mvwchgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
552 mvwdelch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
553 mvwget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
554 mvwget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
555 mvwgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
556 mvwgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
557 mvwgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
558 mvwgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
559 mvwhline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
560 mvwhline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
561 mvwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
562 mvwin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
563 mvwin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
564 mvwin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
565 mvwinch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
566 mvwinchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
567 mvwinchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
568 mvwinnstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
569 mvwinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
570 mvwins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
571 mvwins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
572 mvwins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
573 mvwinsch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
574 mvwinsnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
575 mvwinsstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
576 mvwinstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
577 mvwinwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
578 mvwprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
579 mvwscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
580 mvwvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
Steve Kondikae271bc2015-11-15 02:50:53 +0100581
micky3879b9f5e72025-07-08 18:04:53 -0400582 mvwvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
583 napms <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
584 newpad <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
585 newterm <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
586 newwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
587 nl <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
588 nocbreak <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
589 nodelay <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
590 noecho <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
591 nofilter <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>*
592 nonl <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
593 noqiflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
594 noraw <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
595 notimeout <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
596 overlay <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
597 overwrite <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
598 pair_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
599 pecho_wchar <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
600 pechochar <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
601 pnoutrefresh <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
602 prefresh <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
603 printw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
604 putp <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
605 putwin <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
606 qiflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
607 raw <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
608 redrawwin <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
609 refresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
610 reset_color_pairs <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>*
611 reset_prog_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
612 reset_shell_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
613 resetty <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
614 resize_term <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
615 resizeterm <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
616 restartterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
617 ripoffline <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
618 savetty <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
619 scanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
620 scr_dump <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
621 scr_init <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
622 scr_restore <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
623 scr_set <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
624 scrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
625 scroll <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
626 scrollok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
627 set_curterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
628 set_escdelay <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>*
629 set_tabsize <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>*
630 set_term <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
631 setcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
632 setscrreg <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
633 setsyx <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
634 setupterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
635 slk_attr <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>*
636 slk_attr_off <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
637 slk_attr_on <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
638 slk_attr_set <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
639 slk_attroff <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
640 slk_attron <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
641 slk_attrset <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
642 slk_clear <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
643 slk_color <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
644 slk_init <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
645 slk_label <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
646 slk_noutrefresh <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530647
micky3879b9f5e72025-07-08 18:04:53 -0400648 slk_refresh <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
649 slk_restore <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
650 slk_set <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
651 slk_touch <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
652 slk_wset <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
653 standend <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
654 standout <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
655 start_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
656 subpad <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
657 subwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
658 syncok <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
659 term_attrs <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
660 termattrs <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
661 termname <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
662 tgetent <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
663 tgetflag <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
664 tgetnum <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
665 tgetstr <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
666 tgoto <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
667 tigetflag <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
668 tigetnum <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
669 tigetstr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
670 timeout <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
671 tiparm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
672 tiparm_s <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>*
673 tiscan_s <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>*
674 touchline <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
675 touchwin <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
676 tparm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
677 tputs <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
678 tputs <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
679 trace <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
680 typeahead <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
681 unctrl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
682 unget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
683 ungetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
684 ungetmouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
685 untouchwin <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
686 use_default_colors <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>*
687 use_env <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
688 use_extended_names <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>*
689 use_legacy_coding <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>*
690 use_screen <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>*
691 use_tioctl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>*
692 use_window <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>*
693 vid_attr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
694 vid_puts <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
695 vidattr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
696 vidputs <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
697 vline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
698 vline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
699 vw_printw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
700 vw_scanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
701 vwprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
702 vwscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
703 wadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
704 wadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
705 wadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
706 waddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
707 waddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
708 waddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
709 waddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
710 waddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
711 waddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
712 waddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530713
micky3879b9f5e72025-07-08 18:04:53 -0400714 wattr_get <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
715 wattr_off <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
716 wattr_on <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
717 wattr_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
718 wattroff <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
719 wattron <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
720 wattrset <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
721 wbkgd <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
722 wbkgdset <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
723 wbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
724 wbkgrndset <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
725 wborder <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
726 wborder_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
727 wchgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
728 wclear <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
729 wclrtobot <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
730 wclrtoeol <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
731 wcolor_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
732 wcursyncup <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
733 wdelch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
734 wdeleteln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
735 wecho_wchar <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
736 wechochar <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
737 wenclose <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
738 werase <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
739 wget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
740 wget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
741 wgetbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
742 wgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
743 wgetdelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
744 wgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
745 wgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
746 wgetparent <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
747 wgetscrreg <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
748 wgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
749 whline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
750 whline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
751 win_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
752 win_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
753 win_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
754 winch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
755 winchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
756 winchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
757 winnstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
758 winnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
759 wins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
760 wins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
761 wins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
762 winsch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
763 winsdelln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
764 winsertln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
765 winsnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
766 winsstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
767 winstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
768 winwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
769 wmouse_trafo <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>*
770 wmove <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
771 wnoutrefresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
772 wprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
773 wredrawln <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
774 wrefresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
775 wresize <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>*
776 wscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
777 wscrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
778 wsetscrreg <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530779
micky3879b9f5e72025-07-08 18:04:53 -0400780 wstandend <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
781 wstandout <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
782 wsyncdown <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
783 wsyncup <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
784 wtimeout <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
785 wtouchln <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
786 wunctrl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
787 wvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
788 wvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530789
micky3879b9f5e72025-07-08 18:04:53 -0400790 <EM>ncurses</EM>'s <EM>screen-pointer</EM> <EM>extension</EM> adds additional functions
791 corresponding to many of the above, each with an "_sp" suffix; see
792 <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530793
micky3879b9f5e72025-07-08 18:04:53 -0400794 The availability of some extensions is configurable when <EM>ncurses</EM> is
795 compiled; see sections "ALTERNATE CONFIGURATIONS" and "EXTENSIONS"
796 below.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530797
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530798
micky3879b9f5e72025-07-08 18:04:53 -0400799</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
800 Unless otherwise noted, functions that return an integer return <STRONG>OK</STRONG> on
801 success and <STRONG>ERR</STRONG> on failure. Functions that return pointers return <STRONG>NULL</STRONG>
802 on failure. Typically, <EM>ncurses</EM> treats a null pointer passed as a
803 function parameter as a failure. Functions prefixed with "mv" first
804 perform cursor movement and fail if the position (<EM>y</EM>, <EM>x</EM>) is outside the
805 window boundaries.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530806
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530807
micky3879b9f5e72025-07-08 18:04:53 -0400808</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
809 The following symbols from the process environment customize the
810 runtime behavior of <EM>ncurses</EM> applications. The library may be
811 configured to disregard the variables <EM>TERMINFO</EM>, <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM>,
812 <EM>TERMPATH</EM>, and <EM>HOME</EM>, if the user is the superuser (root), or the
813 application uses <STRONG>setuid(2)</STRONG> or <STRONG>setgid(2)</STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530814
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530815
micky3879b9f5e72025-07-08 18:04:53 -0400816</PRE><H3><a name="h3-BAUDRATE"><EM>BAUDRATE</EM></a></H3><PRE>
817 The debugging library checks this variable when the application has
818 redirected output to a file. Its integral value is used for the baud
819 rate. If that value is absent or invalid, <EM>ncurses</EM> uses 9600. This
820 feature allows testers to construct repeatable test cases that take
821 into account optimization decisions that depend on baud rate.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530822
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530823
micky3879b9f5e72025-07-08 18:04:53 -0400824</PRE><H3><a name="h3-CC-_command-character_"><EM>CC</EM> (command character)</a></H3><PRE>
825 When set, the <STRONG>command_character</STRONG> (<STRONG>cmdch</STRONG>) capability value of loaded
826 <EM>terminfo</EM> entries changes to the value of this variable. Very few <EM>term-</EM>
827 <EM>info</EM> entries provide this feature.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530828
micky3879b9f5e72025-07-08 18:04:53 -0400829 Because this name is also used in development environments to represent
830 the C compiler's name, <EM>ncurses</EM> ignores its value if it is not one
831 character in length.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530832
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530833
micky3879b9f5e72025-07-08 18:04:53 -0400834</PRE><H3><a name="h3-COLUMNS"><EM>COLUMNS</EM></a></H3><PRE>
835 This variable specifies the width of the screen in characters.
836 Applications running in a windowing environment usually are able to
837 obtain the width of the window in which they are executing. If <EM>COLUMNS</EM>
838 is not defined and the terminal's screen size is not available from the
839 terminal driver, <EM>ncurses</EM> uses the size specified by the <STRONG>columns</STRONG> (<STRONG>cols</STRONG>)
840 capability of the terminal type's entry in the <EM>terminfo</EM> database, if
841 any.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530842
micky3879b9f5e72025-07-08 18:04:53 -0400843 It is important that your application use the correct screen size.
844 Automatic detection thereof is not always possible because an
845 application may be running on a host that does not honor NAWS
846 (Negotiations About Window Size) or as a different user ID than the
847 owner of the terminal device file. Setting <EM>COLUMNS</EM> and/or <EM>LINES</EM>
848 overrides the library's use of the screen size obtained from the
849 operating system.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530850
micky3879b9f5e72025-07-08 18:04:53 -0400851 The <EM>COLUMNS</EM> and <EM>LINES</EM> variables may be specified independently. This
852 property is useful to circumvent misfeatures of legacy terminal type
853 descriptions; <STRONG>xterm(1)</STRONG> descriptions specifying 65 lines were once
854 notorious. For best results, avoid specifying <STRONG>cols</STRONG> and <STRONG>lines</STRONG>
855 capability codes in <EM>terminfo</EM> descriptions of terminal emulators.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530856
micky3879b9f5e72025-07-08 18:04:53 -0400857 <STRONG><A HREF="curs_util.3x.html">use_env(3x)</A></STRONG> can disable use of the process environment in determining
858 the screen size. <STRONG><A HREF="curs_util.3x.html">use_tioctl(3x)</A></STRONG> can update <EM>COLUMNS</EM> and <EM>LINES</EM> to match
859 the screen size obtained from system calls or the terminal database.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530860
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530861
micky3879b9f5e72025-07-08 18:04:53 -0400862</PRE><H3><a name="h3-ESCDELAY"><EM>ESCDELAY</EM></a></H3><PRE>
863 For <EM>curses</EM> to distinguish the ESC character resulting from a user's
864 press of the "Escape" key on the input device from one beginning an
865 <EM>escape</EM> <EM>sequence</EM> (as commonly produced by function keys), it waits after
866 receiving the escape character to see if further characters are
867 available on the input stream within a short interval. A global
868 variable <STRONG>ESCDELAY</STRONG> stores this interval in milliseconds. The default
869 value of 1000 (one second) is adequate for most uses. This environment
870 variable overrides it.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530871
micky3879b9f5e72025-07-08 18:04:53 -0400872 The most common instance where you may wish to change this value is to
873 work with a remote host over a slow communication channel. If the host
874 running a <EM>curses</EM> application does not receive the characters of an
875 escape sequence in a timely manner, the library can interpret them as
876 multiple key stroke events.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530877
micky3879b9f5e72025-07-08 18:04:53 -0400878 <STRONG>xterm(1)</STRONG> mouse events are a form of escape sequence; therefore, if your
879 application makes heavy use of multiple-clicking, you may wish to
880 lengthen the default value because the delay applies to the composite
881 multi-click event as well as the individual clicks.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530882
micky3879b9f5e72025-07-08 18:04:53 -0400883 Portable applications should not rely upon the presence of <STRONG>ESCDELAY</STRONG> in
884 either form, but setting the environment variable rather than the
885 global variable does not create problems when compiling an application.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530886
micky3879b9f5e72025-07-08 18:04:53 -0400887 If <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG> is disabled for the <EM>curses</EM> window receiving input, a
888 program must disambiguate escape sequences itself.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530889
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530890
micky3879b9f5e72025-07-08 18:04:53 -0400891</PRE><H3><a name="h3-HOME"><EM>HOME</EM></a></H3><PRE>
892 <EM>ncurses</EM> may read and write auxiliary terminal descriptions in <EM>.termcap</EM>
893 and <EM>.terminfo</EM> files in the user's home directory.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530894
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530895
micky3879b9f5e72025-07-08 18:04:53 -0400896</PRE><H3><a name="h3-LINES"><EM>LINES</EM></a></H3><PRE>
897 This counterpart to <EM>COLUMNS</EM> specifies the height of the screen in
898 characters. The corresponding <EM>terminfo</EM> capability and code is <STRONG>lines</STRONG>.
899 See the description of the <EM>COLUMNS</EM> variable above.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530900
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530901
micky3879b9f5e72025-07-08 18:04:53 -0400902</PRE><H3><a name="h3-MOUSE_BUTTONS_123"><EM>MOUSE_BUTTONS_123</EM></a></H3><PRE>
903 (OS/2 EMX port only) OS/2 numbers a three-button mouse inconsistently
904 with other platforms, such that 1 is the left button, 2 the right, and
905 3 the middle. This variable customizes the mouse button numbering.
906 Its value must be three digits 1-3 in any order. By default, <EM>ncurses</EM>
907 assumes a numbering of "132".
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530908
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530909
micky3879b9f5e72025-07-08 18:04:53 -0400910</PRE><H3><a name="h3-NCURSES_ASSUMED_COLORS"><EM>NCURSES_ASSUMED_COLORS</EM></a></H3><PRE>
911 If set, this variable overrides the <EM>ncurses</EM> library's compiled-in
912 assumption that the terminal's default colors are white on black; see
913 <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>. Set the foreground and background color values
914 with this environment variable by assigning it two integer values
915 separated by a comma, indicating foregound and background color
916 numbers, respectively.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530917
micky3879b9f5e72025-07-08 18:04:53 -0400918 For example, to tell <EM>ncurses</EM> not to assume anything about the colors,
919 use a value of "-1,-1". To make the default color scheme green on
920 black, use "2,0". <EM>ncurses</EM> accepts integral values from -1 up to the
921 value of the <EM>terminfo</EM> <STRONG>max_colors</STRONG> (<STRONG>colors</STRONG>) capability.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530922
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530923
micky3879b9f5e72025-07-08 18:04:53 -0400924</PRE><H3><a name="h3-NCURSES_CONSOLE2"><EM>NCURSES_CONSOLE2</EM></a></H3><PRE>
925 (MinGW port only) The <EM>Console2</EM> program defectively handles the
926 Microsoft Console API call <EM>CreateConsoleScreenBuffer</EM>. Applications
927 that use it will hang. However, it is possible to simulate the action
928 of this call by mapping coordinates, explicitly saving and restoring
929 the original screen contents. Setting the environment variable <EM>NCGDB</EM>
930 has the same effect.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530931
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530932
micky3879b9f5e72025-07-08 18:04:53 -0400933</PRE><H3><a name="h3-NCURSES_GPM_TERMS"><EM>NCURSES_GPM_TERMS</EM></a></H3><PRE>
934 (Linux only) When <EM>ncurses</EM> is configured to use the GPM interface, this
935 variable may list one or more terminal names against which the <EM>TERM</EM>
936 variable (see below) is matched. An empty value disables the GPM
937 interface, using <EM>ncurses</EM>'s built-in support for <STRONG>xterm(1)</STRONG> mouse
938 protocols instead. If the variable is absent, <EM>ncurses</EM> attempts to open
939 GPM if <EM>TERM</EM> contains "linux".
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530940
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530941
micky3879b9f5e72025-07-08 18:04:53 -0400942</PRE><H3><a name="h3-NCURSES_NO_HARD_TABS"><EM>NCURSES_NO_HARD_TABS</EM></a></H3><PRE>
943 <EM>ncurses</EM> may use tab characters in cursor movement optimization. In
944 some cases, your terminal driver may not handle them properly. Set
945 this environment variable to any value to disable the feature. You can
946 also adjust your <STRONG>stty(1)</STRONG> settings to avoid the problem.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530947
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530948
micky3879b9f5e72025-07-08 18:04:53 -0400949</PRE><H3><a name="h3-NCURSES_NO_MAGIC_COOKIE"><EM>NCURSES_NO_MAGIC_COOKIE</EM></a></H3><PRE>
950 Many terminals store video attributes as a property of a character
951 cell, as <EM>curses</EM> does. Historically, some recorded changes in video
952 attributes as data that logically <EM>occupies</EM> character cells on the
953 display, switching attributes on or off, similarly to tags in a markup
954 language; these are termed "magic cookies", and must be subsequently
955 overprinted. If the <EM>terminfo</EM> entry for your terminal type does not
956 adequately describe its handling of magic cookies, set this variable to
957 any value to instruct <EM>ncurses</EM> to disable attributes entirely.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530958
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530959
micky3879b9f5e72025-07-08 18:04:53 -0400960</PRE><H3><a name="h3-NCURSES_NO_PADDING"><EM>NCURSES_NO_PADDING</EM></a></H3><PRE>
961 Most terminal type descriptions in the <EM>terminfo</EM> database detail
962 hardware devices. Many people use <EM>curses</EM>-based applications in
963 terminal emulator programs that run in a windowing environment. These
964 programs can duplicate all of the important features of a hardware
965 terminal, but often lack their limitations. Chief among these absent
966 drawbacks is the problem of data flow management; that is, limiting the
967 speed of communication to what the hardware could handle. Unless a
968 hardware terminal is interfaced into a terminal concentrator (which
969 does flow control), an application must manage flow control itself to
970 prevent overruns and data loss.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530971
micky3879b9f5e72025-07-08 18:04:53 -0400972 A solution that comes at no hardware cost is for an application to
973 pause after directing a terminal to execute an operation that it
974 performs slowly, such as clearing the display. Many terminal type
975 descriptions, including that for the VT100, embed delay specifications
976 in capabilities. You may wish to use these terminal descriptions
977 without paying the performance penalty. Set <EM>NCURSES</EM><STRONG>_</STRONG><EM>NO</EM><STRONG>_</STRONG><EM>PADDING</EM> to any
978 value to disable all but mandatory padding. Mandatory padding is used
979 by such terminal capabilities as <STRONG>flash_screen</STRONG> (<STRONG>flash</STRONG>).
Steve Kondikae271bc2015-11-15 02:50:53 +0100980
Steve Kondikae271bc2015-11-15 02:50:53 +0100981
micky3879b9f5e72025-07-08 18:04:53 -0400982</PRE><H3><a name="h3-NCURSES_NO_SETBUF"><EM>NCURSES_NO_SETBUF</EM></a></H3><PRE>
983 (Obsolete) Prior to internal changes developed in <EM>ncurses</EM> 5.9 (patches
984 20120825 through 20130126), the library used <STRONG>setbuf(3)</STRONG> to enable fully
985 buffered output when initializing the terminal. This was done, as in
986 SVr4 <EM>curses</EM>, to increase performance. For testing purposes, both of
987 <EM>ncurses</EM> and of certain applications, this feature was made optional.
988 Setting this variable disabled output buffering, leaving the output
989 stream in the original (usually line-buffered) mode.
Steve Kondikae271bc2015-11-15 02:50:53 +0100990
micky3879b9f5e72025-07-08 18:04:53 -0400991 Nowadays, <EM>ncurses</EM> performs its own buffering and does not require this
992 workaround; it does not modify the buffering of the standard output
993 stream. This approach makes signal handling, as for interrupts, more
994 robust. A drawback is that certain unconventional programs mixed
995 <STRONG>stdio(3)</STRONG> calls with <EM>ncurses</EM> calls and (usually) got the behavior they
996 expected. This is no longer the case; <EM>ncurses</EM> does not write to the
997 standard output file descriptor through a <EM>stdio</EM>-buffered stream.
Steve Kondikae271bc2015-11-15 02:50:53 +0100998
micky3879b9f5e72025-07-08 18:04:53 -0400999 As a special case, low-level API calls such as <STRONG><A HREF="curs_terminfo.3x.html">putp(3x)</A></STRONG> still use the
1000 standard output stream. High-level <EM>curses</EM> calls such as <STRONG><A HREF="curs_printw.3x.html">printw(3x)</A></STRONG> do
1001 not.
Steve Kondikae271bc2015-11-15 02:50:53 +01001002
Steve Kondikae271bc2015-11-15 02:50:53 +01001003
micky3879b9f5e72025-07-08 18:04:53 -04001004</PRE><H3><a name="h3-NCURSES_NO_UTF8_ACS"><EM>NCURSES_NO_UTF8_ACS</EM></a></H3><PRE>
1005 At initialization, <EM>ncurses</EM> inspects the <EM>TERM</EM> environment variable for
1006 special cases where VT100 forms-drawing characters (and the
1007 corresponding alternate character set <EM>terminfo</EM> capabilities) are known
1008 to be unsupported by terminal types that otherwise claim VT100
1009 compatibility. Specifically, when running in a UTF-8 locale, the Linux
1010 virtual console device and the GNU <STRONG>screen(1)</STRONG> program ignore them. Set
1011 this variable to a nonzero value to instruct <EM>ncurses</EM> that the
1012 terminal's ACS support is broken; the library then outputs Unicode code
1013 points that correspond to the forms-drawing characters. Set it to zero
1014 (or a non-integer) to disable the special check for terminal type names
1015 matching "linux" or "screen", directing <EM>ncurses</EM> to assume that the ACS
1016 feature works if the terminal type description advertises it.
Steve Kondikae271bc2015-11-15 02:50:53 +01001017
micky3879b9f5e72025-07-08 18:04:53 -04001018 As an alternative to use of this variable, <EM>ncurses</EM> checks for an
1019 extended <EM>terminfo</EM> numeric capability <STRONG>U8</STRONG> that can be compiled using "<STRONG>tic</STRONG>
1020 <STRONG>-x</STRONG>". Examples follow.
Steve Kondikae271bc2015-11-15 02:50:53 +01001021
1022 # linux console, if patched to provide working
1023 # VT100 shift-in/shift-out, with corresponding font.
1024 linux-vt100|linux console with VT100 line-graphics,
1025 U8#0, use=linux,
1026
1027 # uxterm with vt100Graphics resource set to false
1028 xterm-utf8|xterm relying on UTF-8 line-graphics,
1029 U8#1, use=xterm,
1030
micky3879b9f5e72025-07-08 18:04:53 -04001031 The two-character name "U8" was chosen to permit its use via <EM>ncurses</EM>'s
1032 <EM>termcap</EM> interface.
Steve Kondikae271bc2015-11-15 02:50:53 +01001033
1034
micky3879b9f5e72025-07-08 18:04:53 -04001035</PRE><H3><a name="h3-NCURSES_TRACE"><EM>NCURSES_TRACE</EM></a></H3><PRE>
1036 At initialization, <EM>ncurses</EM> (in its debugging configuration) checks for
1037 this variable's presence. If defined with an integral value, the
1038 library calls <STRONG><A HREF="curs_trace.3x.html">curses_trace(3x)</A></STRONG> with that value as the argument.
Steve Kondikae271bc2015-11-15 02:50:53 +01001039
1040
micky3879b9f5e72025-07-08 18:04:53 -04001041</PRE><H3><a name="h3-TERM"><EM>TERM</EM></a></H3><PRE>
1042 The <EM>TERM</EM> variable denotes the terminal type. Each is distinct, though
1043 many are similar. It is commonly set by terminal emulators to help
1044 applications find a workable terminal description. Some choose a
1045 popular approximation such as "ansi", "vt100", or "xterm" rather than
1046 an exact fit to their capabilities. Not infrequently, an application
1047 will have problems with that approach; for example, a key stroke may
1048 not operate correctly, or produce no effect but seeming garbage
1049 characters on the screen.
Steve Kondikae271bc2015-11-15 02:50:53 +01001050
micky3879b9f5e72025-07-08 18:04:53 -04001051 Setting <EM>TERM</EM> has no effect on hardware operation; it affects the way
1052 applications communicate with the terminal. Likewise, as a general
1053 rule (<STRONG>xterm(1)</STRONG> being a rare exception), terminal emulators that allow
1054 you to specify <EM>TERM</EM> as a parameter or configuration value do not change
1055 their behavior to match that setting.
Steve Kondikae271bc2015-11-15 02:50:53 +01001056
1057
micky3879b9f5e72025-07-08 18:04:53 -04001058</PRE><H3><a name="h3-TERMCAP"><EM>TERMCAP</EM></a></H3><PRE>
1059 If <EM>ncurses</EM> is configured with <EM>termcap</EM> support, it checks for a terminal
1060 type description in <EM>termcap</EM> format if one in <EM>terminfo</EM> format is not
1061 available. Setting this variable directs <EM>ncurses</EM> to ignore the usual
1062 <EM>termcap</EM> database location, <EM>/etc/termcap</EM>; see <EM>TERMPATH</EM> below. <EM>TERMCAP</EM>
1063 should contain either a terminal description (with newlines stripped
1064 out), or a file name indicating where the information required by the
1065 <EM>TERM</EM> environment variable is stored.
Steve Kondikae271bc2015-11-15 02:50:53 +01001066
1067
micky3879b9f5e72025-07-08 18:04:53 -04001068</PRE><H3><a name="h3-TERMINFO"><EM>TERMINFO</EM></a></H3><PRE>
1069 <EM>ncurses</EM> can be configured to read terminal type description databases
1070 in various locations using different formats. This variable overrides
1071 the default location.
Steve Kondikae271bc2015-11-15 02:50:53 +01001072
micky3879b9f5e72025-07-08 18:04:53 -04001073 <STRONG>o</STRONG> Descriptions in <EM>terminfo</EM> format are normally stored in a directory
1074 tree using subdirectories named by the common first letters of the
1075 terminal types named therein. This is the scheme used in System V.
Steve Kondikae271bc2015-11-15 02:50:53 +01001076
micky3879b9f5e72025-07-08 18:04:53 -04001077 <STRONG>o</STRONG> If <EM>ncurses</EM> is configured to use hashed databases, then <EM>TERMINFO</EM> may
1078 name its location, such as <EM>/usr/share/terminfo.db</EM>, rather than
1079 <EM>/usr/share/terminfo/</EM>.
Steve Kondikae271bc2015-11-15 02:50:53 +01001080
micky3879b9f5e72025-07-08 18:04:53 -04001081 The hashed database uses less disk space and is a little faster than
1082 the directory tree. However, some applications assume the existence of
1083 the directory tree, and read it directly rather than using the <EM>terminfo</EM>
1084 API.
Steve Kondikae271bc2015-11-15 02:50:53 +01001085
micky3879b9f5e72025-07-08 18:04:53 -04001086 <STRONG>o</STRONG> If <EM>ncurses</EM> is configured with <EM>termcap</EM> support, this variable may
1087 contain the location of a <EM>termcap</EM> file.
Steve Kondikae271bc2015-11-15 02:50:53 +01001088
micky3879b9f5e72025-07-08 18:04:53 -04001089 <STRONG>o</STRONG> If the value of <EM>TERMINFO</EM> begins with "hex:" or "b64:", <EM>ncurses</EM> uses
1090 the remainder of the value as a compiled <EM>terminfo</EM> description. You
1091 might produce the base64 format using <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>.
Steve Kondikae271bc2015-11-15 02:50:53 +01001092
micky3879b9f5e72025-07-08 18:04:53 -04001093 TERMINFO=$(infocmp -0 -Q2 -q)
1094 export TERMINFO
Steve Kondikae271bc2015-11-15 02:50:53 +01001095
micky3879b9f5e72025-07-08 18:04:53 -04001096 The compiled description is used only if it corresponds to the
1097 terminal type identified by <EM>TERM</EM>.
1098
1099 Setting <EM>TERMINFO</EM> is the simplest, but not the only, way to direct
1100 <EM>ncurses</EM> to a terminal database. The search path is as follows.
1101
1102 <STRONG>o</STRONG> the last terminal database to which the running <EM>ncurses</EM> application
1103 wrote, if any
1104
1105 <STRONG>o</STRONG> the location specified by the <EM>TERMINFO</EM> environment variable
1106
1107 <STRONG>o</STRONG> <EM>$HOME/.terminfo</EM>
1108
1109 <STRONG>o</STRONG> locations listed in the <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> environment variable
1110
1111 <STRONG>o</STRONG> location(s) configured and compiled into <EM>ncurses</EM>
1112
1113 <STRONG>o</STRONG> <EM>/usr/share/terminfo</EM>
Steve Kondikae271bc2015-11-15 02:50:53 +01001114
1115
micky3879b9f5e72025-07-08 18:04:53 -04001116</PRE><H3><a name="h3-TERMINFO_DIRS"><EM>TERMINFO_DIRS</EM></a></H3><PRE>
1117 This variable specifies a list of locations, akin to <EM>PATH</EM>, in which
1118 <EM>ncurses</EM> searches for the terminal type descriptions described by
1119 <EM>TERMINFO</EM> above. The list items are separated by colons on Unix and
1120 semicolons on OS/2 EMX. System V <EM>terminfo</EM> lacks a corresponding
1121 feature; <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> is an <EM>ncurses</EM> extension.
Steve Kondikae271bc2015-11-15 02:50:53 +01001122
1123
micky3879b9f5e72025-07-08 18:04:53 -04001124</PRE><H3><a name="h3-TERMPATH"><EM>TERMPATH</EM></a></H3><PRE>
1125 If <EM>TERMCAP</EM> does not hold a terminal type description or file name, then
1126 <EM>ncurses</EM> checks the contents of <EM>TERMPATH</EM>, a list of locations, akin to
1127 <EM>PATH</EM>, in which it searches for <EM>termcap</EM> terminal type descriptions. The
1128 list items are separated by colons on Unix and semicolons on OS/2 EMX.
Steve Kondikae271bc2015-11-15 02:50:53 +01001129
micky3879b9f5e72025-07-08 18:04:53 -04001130 If both <EM>TERMCAP</EM> and <EM>TERMPATH</EM> are unset or invalid, <EM>ncurses</EM> searches for
1131 the files <EM>/etc/termcap</EM>, <EM>/usr/share/misc/termcap</EM>, and <EM>$HOME/.termcap</EM>, in
1132 that order.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301133
1134
micky3879b9f5e72025-07-08 18:04:53 -04001135</PRE><H2><a name="h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></H2><PRE>
1136 Many different <EM>ncurses</EM> configurations are possible, determined by the
1137 options given to the <EM>configure</EM> script when building the library. Run
1138 the script with the <STRONG>--help</STRONG> option to peruse them all. A few are of
1139 particular significance to the application developer employing <EM>ncurses</EM>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301140
micky3879b9f5e72025-07-08 18:04:53 -04001141 <STRONG>--disable-overwrite</STRONG>
1142 The standard include for <EM>ncurses</EM> is as noted in <STRONG>SYNOPSIS</STRONG>:
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301143
micky3879b9f5e72025-07-08 18:04:53 -04001144 <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301145
micky3879b9f5e72025-07-08 18:04:53 -04001146 This option is used to avoid filename conflicts when <EM>ncurses</EM> is
1147 not the main implementation of curses of the computer. If <EM>ncurses</EM>
1148 is installed disabling overwrite, it puts its headers in a
1149 subdirectory, e.g.,
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301150
micky3879b9f5e72025-07-08 18:04:53 -04001151 <STRONG>#include</STRONG> <STRONG>&lt;ncurses/curses.h&gt;</STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301152
micky3879b9f5e72025-07-08 18:04:53 -04001153 It also omits a symbolic link which would allow you to use
1154 <STRONG>-lcurses</STRONG> to build executables.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301155
micky3879b9f5e72025-07-08 18:04:53 -04001156 <STRONG>--enable-widec</STRONG>
1157 The configure script renames the library and (if the
1158 <STRONG>--disable-overwrite</STRONG> option is used) puts the header files in a
1159 different subdirectory. All of the library names have a "w"
1160 appended to them, i.e., instead of
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301161
micky3879b9f5e72025-07-08 18:04:53 -04001162 <STRONG>-lncurses</STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301163
1164 you link with
1165
micky3879b9f5e72025-07-08 18:04:53 -04001166 <STRONG>-lncursesw</STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301167
micky3879b9f5e72025-07-08 18:04:53 -04001168 You must also enable the wide-character features in the header
1169 file when compiling for the wide-character library to use the
1170 extended (wide-character) functions. The symbol which enables
1171 these features has changed since X/Open Curses, Issue 4:
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301172
micky3879b9f5e72025-07-08 18:04:53 -04001173 <STRONG>o</STRONG> Originally, the wide-character feature required the symbol
1174 <STRONG>_XOPEN_SOURCE_EXTENDED</STRONG> but that was only valid for XPG4
1175 (1996).
Steve Kondikae271bc2015-11-15 02:50:53 +01001176
micky3879b9f5e72025-07-08 18:04:53 -04001177 <STRONG>o</STRONG> Later, that was deemed conflicting with <STRONG>_XOPEN_SOURCE</STRONG> defined
1178 to 500.
Steve Kondikae271bc2015-11-15 02:50:53 +01001179
micky3879b9f5e72025-07-08 18:04:53 -04001180 <STRONG>o</STRONG> As of mid-2018, none of the features in this implementation
1181 require a <STRONG>_XOPEN_SOURCE</STRONG> feature greater than 600. However,
1182 X/Open Curses, Issue 7 (2009) recommends defining it to 700.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301183
micky3879b9f5e72025-07-08 18:04:53 -04001184 <STRONG>o</STRONG> Alternatively, you can enable the feature by defining
1185 <STRONG>NCURSES_WIDECHAR</STRONG> with the caveat that some other header file
1186 than <STRONG>curses.h</STRONG> may require a specific value for <STRONG>_XOPEN_SOURCE</STRONG>
1187 (or a system-specific symbol).
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301188
micky3879b9f5e72025-07-08 18:04:53 -04001189 The <EM>curses.h</EM> header file installed for the wide-character library
1190 is designed to be compatible with the non-wide library's header.
1191 Only the size of the <EM>WINDOW</EM> structure differs; few applications
1192 require more than pointers to <EM>WINDOW</EM>s.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301193
micky3879b9f5e72025-07-08 18:04:53 -04001194 If the headers are installed allowing overwrite, the wide-
1195 character library's headers should be installed last, to allow
1196 applications to be built using either library from the same set of
1197 headers.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301198
micky3879b9f5e72025-07-08 18:04:53 -04001199 <STRONG>--with-pthread</STRONG>
1200 The configure script renames the library. All of the library
1201 names have a "t" appended to them (before any "w" added by
1202 <STRONG>--enable-widec</STRONG>).
1203
1204 The global variables such as <STRONG>LINES</STRONG> are replaced by macros to allow
1205 read-only access. At the same time, setter-functions are provided
1206 to set these values. Some applications (very few) may require
1207 changes to work with this convention.
1208
1209 <STRONG>--with-shared</STRONG>
1210 <STRONG>--with-normal</STRONG>
1211 <STRONG>--with-debug</STRONG>
1212 <STRONG>--with-profile</STRONG>
1213 The shared and normal (static) library names differ by their
1214 suffixes, e.g., <STRONG>libncurses.so</STRONG> and <STRONG>libncurses.a</STRONG>. The debug and
1215 profiling libraries add a "_g" and a "_p" to the root names
1216 respectively, e.g., <STRONG>libncurses_g.a</STRONG> and <STRONG>libncurses_p.a</STRONG>.
1217
1218 <STRONG>--with-termlib</STRONG>
1219 Low-level functions which do not depend upon whether the library
1220 supports wide-characters, are provided in the tinfo library.
1221
1222 By doing this, it is possible to share the tinfo library between
1223 wide/normal configurations as well as reduce the size of the
1224 library when only low-level functions are needed.
1225
1226 Those functions are described in these pages:
1227
1228 <STRONG>o</STRONG> <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG> - miscellaneous <EM>curses</EM> extensions
1229
1230 <STRONG>o</STRONG> <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> - <EM>curses</EM> input options
1231
1232 <STRONG>o</STRONG> <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> - low-level <EM>curses</EM> routines
1233
1234 <STRONG>o</STRONG> <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> - <EM>curses</EM> environment query routines
1235
1236 <STRONG>o</STRONG> <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> - <EM>curses</EM> emulation of <EM>termcap</EM>
1237
1238 <STRONG>o</STRONG> <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> - <EM>curses</EM> interface to <EM>terminfo</EM> database
1239
1240 <STRONG>o</STRONG> <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> - miscellaneous <EM>curses</EM> utility routines
1241
1242 <STRONG>--with-trace</STRONG>
1243 The <STRONG>trace</STRONG> function normally resides in the debug library, but it
1244 is sometimes useful to configure this in the shared library.
1245 Configure scripts should check for the function's existence rather
1246 than assuming it is always in the debug library.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301247
1248
micky3879b9f5e72025-07-08 18:04:53 -04001249</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
1250 <EM>/usr/share/tabset</EM>
1251 tab stop initialization database
1252
1253 <EM>/usr/share/terminfo</EM>
1254 compiled terminal capability database
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301255
1256
micky3879b9f5e72025-07-08 18:04:53 -04001257</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
1258 X/Open Curses permits most functions it specifies to be made available
1259 as macros as well. <EM>ncurses</EM> does so
1260
1261 <STRONG>o</STRONG> for functions that return values via their parameters,
1262
1263 <STRONG>o</STRONG> to support obsolete features,
1264
1265 <STRONG>o</STRONG> to reuse functions (for example, those that move the cursor before
1266 another operation), and
1267
1268 <STRONG>o</STRONG> a few special cases.
1269
1270 If the standard output file descriptor of an <EM>ncurses</EM> program is
1271 redirected to something that is not a terminal device, the library
1272 writes screen updates to the standard error file descriptor. This was
1273 an undocumented feature of SVr3 <EM>curses</EM>.
1274
1275 See subsection "Header Files" below regarding symbols exposed by
1276 inclusion of <EM>curses.h</EM>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301277
1278
micky3879b9f5e72025-07-08 18:04:53 -04001279</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
1280 <EM>ncurses</EM> enables an application to capture mouse events on certain
1281 terminals, including <STRONG>xterm(1)</STRONG>; see <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301282
micky3879b9f5e72025-07-08 18:04:53 -04001283 <EM>ncurses</EM> provides a means of responding to window resizing events, as
1284 when running in a GUI terminal emulator application such as <EM>xterm</EM>; see
1285 <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> and <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301286
micky3879b9f5e72025-07-08 18:04:53 -04001287 <EM>ncurses</EM> allows an application to query the terminal for the presence of
1288 a wide variety of special keys; see <STRONG><A HREF="curs_getch.3x.html">has_key(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301289
micky3879b9f5e72025-07-08 18:04:53 -04001290 <EM>ncurses</EM> extends the fixed set of function key capabilities specified by
1291 X/Open Curses by allowing the application programmer to define
1292 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>,
1293 <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>, and <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301294
micky3879b9f5e72025-07-08 18:04:53 -04001295 <EM>ncurses</EM> can exploit the capabilities of terminals implementing
1296 ISO 6429/ECMA-48 SGR 39 and SGR 49 sequences, which allow an
1297 application to reset the terminal to its original foreground and
1298 background colors. From a user's perspective, the application is able
1299 to draw colored text on a background whose color is set independently,
1300 providing better control over color contrasts. See <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301301
micky3879b9f5e72025-07-08 18:04:53 -04001302 An <EM>ncurses</EM> application can eschew knowledge of <EM>WINDOW</EM> structure
1303 internals, instead using accessor functions such as <STRONG><A HREF="curs_opaque.3x.html">is_scrollok(3x)</A></STRONG>.
1304
1305 <EM>ncurses</EM> enables an application to direct application output to a
1306 printer attached to the terminal device; see <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>.
1307
1308 <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-
1309 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>
1310 that can gather color information from them when many colors are
1311 supported.
1312
1313 Some extensions are available only if <EM>ncurses</EM> permits modification of
1314 <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
1315 to support them; section "ALTERNATE CONFIGURATIONS" describes how.
1316
1317 <STRONG>o</STRONG> Rudimentary support for multi-threaded applications may be
1318 available; see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>.
1319
1320 <STRONG>o</STRONG> Functions that ease the management of multiple screens can be
1321 exposed; see <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>.
1322
1323 <STRONG>o</STRONG> To aid applications to debug their memory usage, <EM>ncurses</EM> optionally
1324 offers functions to more aggressively free memory it dynamically
1325 allocates itself; see <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>.
1326
1327 <STRONG>o</STRONG> The library facilitates auditing and troubleshooting of its
1328 behavior; see <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>.
1329
1330 <STRONG>o</STRONG> The compiler option <STRONG>-DUSE_GETCAP</STRONG> causes the library to fall back to
1331 reading <EM>/etc/termcap</EM> if the terminal setup code cannot find a <EM>term-</EM>
1332 <EM>info</EM> entry corresponding to <EM>TERM</EM>. Use of this feature is not
1333 recommended, as it essentially includes an entire <EM>termcap</EM> compiler
1334 in the <EM>ncurses</EM> startup code, at a cost in memory usage and
1335 application launch latency.
1336
1337 <EM>PDCurses</EM> and NetBSD <EM>curses</EM> incorporate some <EM>ncurses</EM> extensions.
1338 Individual man pages indicate where this is the case.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301339
1340
micky3879b9f5e72025-07-08 18:04:53 -04001341</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
1342 X/Open Curses defines two levels of conformance, "base" and "enhanced".
1343 The latter includes several additional features, such as wide-character
1344 and color support. <EM>ncurses</EM> intends base-level conformance with X/Open
1345 Curses, and supports all features of its enhanced level except the
1346 <STRONG>untic</STRONG> utility.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301347
micky3879b9f5e72025-07-08 18:04:53 -04001348 Differences between X/Open Curses and <EM>ncurses</EM> are documented in the
1349 "PORTABILITY" sections of applicable man pages.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301350
1351
micky3879b9f5e72025-07-08 18:04:53 -04001352</PRE><H3><a name="h3-Error-Checking">Error Checking</a></H3><PRE>
1353 In many cases, X/Open Curses is vague about error conditions, omitting
1354 some of the SVr4 documentation.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301355
micky3879b9f5e72025-07-08 18:04:53 -04001356 Unlike other implementations, <EM>ncurses</EM> checks pointer parameters, such
1357 as those to <EM>WINDOW</EM> structures, to ensure that they are not null. This
1358 is done primarily to guard against programmer error. The standard
1359 interface does not provide a way for the library to tell an application
1360 which of several possible errors occurred. Relying on this (or some
1361 other) extension adversely affects the portability of <EM>curses</EM>
1362 applications.
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301363
1364
micky3879b9f5e72025-07-08 18:04:53 -04001365</PRE><H3><a name="h3-Padding-Differences">Padding Differences</a></H3><PRE>
1366 In historical <EM>curses</EM> implementations, delays embedded in the <EM>terminfo</EM>
1367 capabilities <STRONG>carriage_return</STRONG> (<STRONG>cr</STRONG>), <STRONG>scroll_forward</STRONG> (<STRONG>ind</STRONG>), <STRONG>cursor_left</STRONG>
1368 (<STRONG>cub1</STRONG>), <STRONG>form_feed</STRONG> (<STRONG>ff</STRONG>), and <STRONG>tab</STRONG> (<STRONG>ht</STRONG>) activated corresponding delay bits
1369 in the Unix terminal driver. <EM>ncurses</EM> performs all padding by sending
1370 NUL bytes to the device. This method is slightly more expensive, but
1371 narrows the interface to the Unix kernel significantly and
1372 correspondingly increases the package's portability.
1373
1374
1375</PRE><H3><a name="h3-Header-Files">Header Files</a></H3><PRE>
1376 The header file <EM>curses.h</EM> itself includes the header files <EM>stdio.h</EM> and
1377 <EM>unctrl.h</EM>.
1378
1379 X/Open Curses has more to say,
1380
1381 The inclusion of <EM>curses.h</EM> may make visible all symbols from the
1382 headers <EM>stdio.h</EM>, <EM>term.h</EM>, <EM>termios.h</EM>, and <EM>wchar.h</EM>.
1383
1384 but does not finish the story. A more complete account follows.
1385
1386 <STRONG>o</STRONG> Starting with 4BSD <EM>curses</EM> (1980) all implementations have provided
1387 a <EM>curses.h</EM> file.
1388
1389 BSD <EM>curses</EM> code included <EM>curses.h</EM> and <EM>unctrl.h</EM> from an internal
1390 header file <EM>curses.ext</EM>, where "ext" abbreviated "externs".
1391
1392 The implementations of <EM>printw</EM> and <EM>scanw</EM> used undocumented internal
1393 functions of the standard I/O library (<STRONG>_</STRONG><EM>doprnt</EM> and <STRONG>_</STRONG><EM>doscan</EM>), but
1394 nothing in <EM>curses.h</EM> itself relied upon <EM>stdio.h</EM>.
1395
1396 <STRONG>o</STRONG> SVr2 <EM>curses</EM> added <EM>newterm</EM>, which relies upon <EM>stdio.h</EM> because its
1397 function prototype employs the <EM>FILE</EM> type.
1398
1399 SVr4 <EM>curses</EM> added <EM>putwin</EM> and <EM>getwin</EM>, which also use <EM>stdio.h</EM>.
1400
1401 X/Open Curses specifies all three of these functions.
1402
1403 SVr4 <EM>curses</EM> and X/Open Curses do not require the developer to
1404 include <EM>stdio.h</EM> before <EM>curses.h</EM>. Both document use of <EM>curses</EM> as
1405 requiring only <EM>curses.h</EM>.
1406
1407 As a result, standard <EM>curses.h</EM> always includes <EM>stdio.h</EM>.
1408
1409 <STRONG>o</STRONG> X/Open Curses and SVr4 <EM>curses</EM> are inconsistent with respect to
1410 <EM>unctrl.h</EM>.
1411
1412 As noted in <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <EM>ncurses</EM> includes <EM>unctrl.h</EM> from <EM>curses.h</EM>
1413 (as SVr4 does).
1414
1415 <STRONG>o</STRONG> X/Open Curses's comments about <EM>term.h</EM> and <EM>termios.h</EM> may refer to
1416 HP-UX and AIX.
1417
1418 HP-UX <EM>curses</EM> includes <EM>term.h</EM> from <EM>curses.h</EM> to declare <EM>setupterm</EM> in
1419 <EM>curses.h</EM>, but <EM>ncurses</EM> and Solaris <EM>curses</EM> do not.
1420
1421 AIX <EM>curses</EM> includes <EM>term.h</EM> and termios.h<EM>.</EM> Again, <EM>ncurses</EM> and
1422 Solaris <EM>curses</EM> do not.
1423
1424 <STRONG>o</STRONG> X/Open Curses says that <EM>curses.h</EM> <STRONG>may</STRONG> include <EM>term.h</EM>, but does not
1425 require it to do so.
1426
1427 Some programs use functions declared in both <EM>curses.h</EM> and <EM>term.h</EM>,
1428 and must include both header files in the same module. Very old
1429 versions of AIX <EM>curses</EM> required inclusion of <EM>curses.h</EM> before
1430 <EM>term.h</EM>.
1431
1432 The header files supplied by <EM>ncurses</EM> include the standard library
1433 headers required for its declarations, so <EM>ncurses</EM>'s own header
1434 files can be included in any order. But for portability, you
1435 should include <EM>curses.h</EM> before <EM>term.h</EM>.
1436
1437 <STRONG>o</STRONG> X/Open Curses says "may make visible" because including a header
1438 file does not necessarily make visible all of the symbols in it
1439 (consider <STRONG>#ifdef</STRONG> and similar).
1440
1441 For instance, <EM>ncurses</EM>'s <EM>curses.h</EM> <STRONG>may</STRONG> include <EM>wchar.h</EM> if the proper
1442 symbol is defined, and if <EM>ncurses</EM> is configured for wide-character
1443 support. If <EM>wchar.h</EM> is included, its symbols <STRONG>may</STRONG> be made visible
1444 depending on the value of the <STRONG>_XOPEN_SOURCE</STRONG> feature test macro.
1445
1446 <STRONG>o</STRONG> X/Open Curses mandates an application's inclusion of one standard C
1447 library header in a special case: <EM>stdarg.h</EM> before <EM>curses.h</EM> to
1448 prototype the functions <EM>vw</EM><STRONG>_</STRONG><EM>printw</EM> and <EM>vw</EM><STRONG>_</STRONG><EM>scanw</EM> (as well as the
1449 obsolete <EM>vwprintw</EM> and <EM>vwscanw</EM>). Each of these takes a variadic
1450 argument list, a <EM>va</EM><STRONG>_</STRONG><EM>list</EM> parameter, like that of <STRONG>printf(3)</STRONG>.
1451
1452 SVr3 <EM>curses</EM> introduced the two obsolete functions, and X/Open
1453 Curses the others. In between, SVr4 <EM>curses</EM> provided for the
1454 possibility that an application might include either <EM>varargs.h</EM> or
1455 <EM>stdarg.h</EM>. These represented contrasting approaches to handling
1456 variadic argument lists. The older interface, <EM>varargs.h</EM>, used a
1457 pointer to <EM>char</EM> for variadic functions' <EM>va</EM><STRONG>_</STRONG><EM>list</EM> parameter. Later,
1458 the list acquired its own standard data type, <EM>va</EM><STRONG>_</STRONG><EM>list</EM>, defined in
1459 <EM>stdarg.h</EM>, empowering the compiler to check the types of a function
1460 call's actual parameters against the formal ones declared in its
1461 prototype.
1462
1463 No conforming implementations of X/Open Curses require an
1464 application to include <EM>stdarg.h</EM> before <EM>curses.h</EM> because they either
1465 have allowed for a special type, or, like <EM>ncurses</EM>, they include
1466 <EM>stdarg.h</EM> themselves to provide a portable interface.
1467
1468
1469</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
1470 Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Based on <EM>pcurses</EM>
1471 by Pavel Curtis.
1472
1473
1474</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
1475 <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301476
1477
1478
micky3879b9f5e72025-07-08 18:04:53 -04001479ncurses 6.5 2024-04-27 <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301480</PRE>
Steve Kondikae271bc2015-11-15 02:50:53 +01001481<div class="nav">
1482<ul>
1483<li><a href="#h2-NAME">NAME</a></li>
1484<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
1485<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
1486<ul>
micky3879b9f5e72025-07-08 18:04:53 -04001487<li><a href="#h3-Application-Structure">Application Structure</a></li>
1488<li><a href="#h3-Overview">Overview</a></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001489<li><a href="#h3-Initialization">Initialization</a></li>
micky3879b9f5e72025-07-08 18:04:53 -04001490<li><a href="#h3-Naming-Conventions">Naming Conventions</a></li>
1491<li><a href="#h3-Wide-and-Non-wide-Character-Configurations">Wide and Non-wide Character Configurations</a></li>
1492<li><a href="#h3-Function-Name-Index">Function Name Index</a></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001493</ul>
1494</li>
1495<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
1496<li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a>
1497<ul>
1498<li><a href="#h3-BAUDRATE">BAUDRATE</a></li>
micky3879b9f5e72025-07-08 18:04:53 -04001499<li><a href="#h3-CC-_command-character_">CC (command character)</a></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001500<li><a href="#h3-COLUMNS">COLUMNS</a></li>
1501<li><a href="#h3-ESCDELAY">ESCDELAY</a></li>
1502<li><a href="#h3-HOME">HOME</a></li>
1503<li><a href="#h3-LINES">LINES</a></li>
1504<li><a href="#h3-MOUSE_BUTTONS_123">MOUSE_BUTTONS_123</a></li>
1505<li><a href="#h3-NCURSES_ASSUMED_COLORS">NCURSES_ASSUMED_COLORS</a></li>
1506<li><a href="#h3-NCURSES_CONSOLE2">NCURSES_CONSOLE2</a></li>
1507<li><a href="#h3-NCURSES_GPM_TERMS">NCURSES_GPM_TERMS</a></li>
1508<li><a href="#h3-NCURSES_NO_HARD_TABS">NCURSES_NO_HARD_TABS</a></li>
micky3879b9f5e72025-07-08 18:04:53 -04001509<li><a href="#h3-NCURSES_NO_MAGIC_COOKIE">NCURSES_NO_MAGIC_COOKIE</a></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001510<li><a href="#h3-NCURSES_NO_PADDING">NCURSES_NO_PADDING</a></li>
1511<li><a href="#h3-NCURSES_NO_SETBUF">NCURSES_NO_SETBUF</a></li>
1512<li><a href="#h3-NCURSES_NO_UTF8_ACS">NCURSES_NO_UTF8_ACS</a></li>
1513<li><a href="#h3-NCURSES_TRACE">NCURSES_TRACE</a></li>
1514<li><a href="#h3-TERM">TERM</a></li>
1515<li><a href="#h3-TERMCAP">TERMCAP</a></li>
1516<li><a href="#h3-TERMINFO">TERMINFO</a></li>
1517<li><a href="#h3-TERMINFO_DIRS">TERMINFO_DIRS</a></li>
1518<li><a href="#h3-TERMPATH">TERMPATH</a></li>
1519</ul>
1520</li>
1521<li><a href="#h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></li>
1522<li><a href="#h2-FILES">FILES</a></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001523<li><a href="#h2-NOTES">NOTES</a></li>
micky3879b9f5e72025-07-08 18:04:53 -04001524<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
1525<li><a href="#h2-PORTABILITY">PORTABILITY</a>
1526<ul>
1527<li><a href="#h3-Error-Checking">Error Checking</a></li>
1528<li><a href="#h3-Padding-Differences">Padding Differences</a></li>
1529<li><a href="#h3-Header-Files">Header Files</a></li>
1530</ul>
1531</li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001532<li><a href="#h2-AUTHORS">AUTHORS</a></li>
micky3879b9f5e72025-07-08 18:04:53 -04001533<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
Steve Kondikae271bc2015-11-15 02:50:53 +01001534</ul>
1535</div>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301536</BODY>
1537</HTML>