4 <!-- Manpage converted by man2html 3.0.1 -->
8 <B>ncurses</B> - CRT screen handling and optimization package
12 <H2>SYNOPSIS</H2><PRE>
13 <B>#include</B> <B><curses.h></B>
17 <H2>DESCRIPTION</H2><PRE>
18 The <B>ncurses</B> library routines give the user a terminal-
19 independent method of updating character screens with
20 reasonable optimization. This implementation is ``new
21 curses'' (ncurses) and is the approved replacement for
22 4.4BSD classic curses, which has been discontinued.
24 The <B>ncurses</B> routines emulate the <B><A HREF="ncurses.3x.html">curses(3x)</A></B> library of
25 System V Release 4 UNIX, and the XPG4 curses standard (XSI
26 curses) but the <B>ncurses</B> library is freely redistributable
27 in source form. Differences from the SVr4 curses are
28 summarized under the EXTENSIONS and BUGS sections below
29 and described in detail in the EXTENSIONS and BUGS
30 sections of individual man pages.
32 A program using these routines must be linked with the
33 <B>-lncurses</B> option, or (if it has been generated) with the
34 debugging library <B>-lncurses_g</B>. (Your system integrator
35 may also have installed these libraries under the names
36 <B>-lcurses</B> and <B>-lcurses_g</B>.) The ncurses_g library generates
37 trace logs (in a file called 'trace' in the current
38 directory) that describe curses actions.
40 The <B>ncurses</B> package supports: overall screen, window and
41 pad manipulation; output to windows and pads; reading
42 terminal input; control over terminal and <B>curses</B> input and
43 output options; environment query routines; color
44 manipulation; use of soft label keys; terminfo
45 capabilities; and access to low-level terminal-
46 manipulation routines.
48 To initialize the routines, the routine <B>initscr</B> or <B>newterm</B>
49 must be called before any of the other routines that deal
50 with windows and screens are used. The routine <B>endwin</B>
51 must be called before exiting. To get character-at-a-time
52 input without echoing (most interactive, screen oriented
53 programs want this), the following sequence should be
56 <B>initscr();</B> <B>cbreak();</B> <B>noecho();</B>
58 Most programs would additionally use the sequence:
61 <B>intrflush(stdscr,</B> <B>FALSE);</B>
62 <B>keypad(stdscr,</B> <B>TRUE);</B>
64 Before a <B>curses</B> program is run, the tab stops of the
65 terminal should be set and its initialization strings, if
66 defined, must be output. This can be done by executing
67 the <B>tput</B> <B>init</B> command after the shell environment variable
68 <B>TERM</B> has been exported. <B>tset(1)</B> is usually responsible
69 for doing this. [See <B><A HREF="terminfo.5.html">terminfo(5)</A></B> for further details.]
71 The <B>ncurses</B> library permits manipulation of data
72 structures, called <I>windows</I>, which can be thought of as
73 two-dimensional arrays of characters representing all or
74 part of a CRT screen. A default window called <B>stdscr</B>,
75 which is the size of the terminal screen, is supplied.
76 Others may be created with <B>newwin</B>.
78 Note that <B>curses</B> does not handle overlapping windows,
79 that's done by the <B><A HREF="panel.3x.html">panel(3x)</A></B> library. This means that you
80 can either use <B>stdscr</B> or divide the screen into tiled
81 windows and not using <B>stdscr</B> at all. Mixing the two will
82 result in unpredictable, and undesired, effects.
84 Windows are referred to by variables declared as <B>WINDOW</B> <B>*</B>.
85 These data structures are manipulated with routines
86 described here and elsewhere in the <B>ncurses</B> manual pages.
87 Among which the most basic routines are <B>move</B> and <B>addch</B>.
88 More general versions of these routines are included with
89 names beginning with <B>w</B>, allowing the user to specify a
90 window. The routines not beginning with <B>w</B> affect <B>stdscr</B>.)
92 After using routines to manipulate a window, <B>refresh</B> is
93 called, telling <B>curses</B> to make the user's CRT screen look
94 like <B>stdscr</B>. The characters in a window are actually of
95 type <B>chtype</B>, (character and attribute data) so that other
96 information about the character may also be stored with
99 Special windows called <I>pads</I> may also be manipulated.
100 These are windows which are not constrained to the size of
101 the screen and whose contents need not be completely
102 displayed. See <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B> for more information.
104 In addition to drawing characters on the screen, video
105 attributes and colors may be supported, causing the
106 characters to show up in such modes as underlined, in
107 reverse video, or in color on terminals that support such
108 display enhancements. Line drawing characters may be
109 specified to be output. On input, <B>curses</B> is also able to
110 translate arrow and function keys that transmit escape
111 sequences into single values. The video attributes, line
112 drawing characters, and input values use names, defined in
113 <B><curses.h></B>, such as <B>A_REVERSE</B>, <B>ACS_HLINE</B>, and <B>KEY_LEFT</B>.
115 If the environment variables <B>LINES</B> and <B>COLUMNS</B> are set, or
116 if the program is executing in a window environment, line
117 and column information in the environment will override
118 information read by <I>terminfo</I>. This would effect a program
119 running in an AT&T 630 layer, for example, where the size
120 of a screen is changeable (see <B>ENVIRONMENT</B>).
122 If the environment variable <B>TERMINFO</B> is defined, any
123 program using <B>curses</B> checks for a local terminal
124 definition before checking in the standard place. For
125 example, if <B>TERM</B> is set to <B>att4424</B>, then the compiled
126 terminal definition is found in
128 <B>/usr/share/terminfo/a/att4424</B>.
130 (The <B>a</B> is copied from the first letter of <B>att4424</B> to avoid
131 creation of huge directories.) However, if <B>TERMINFO</B> is
132 set to <B>$HOME/myterms</B>, <B>curses</B> first checks
134 <B>$HOME/myterms/a/att4424</B>,
136 and if that fails, it then checks
138 <B>/usr/share/terminfo/a/att4424</B>.
140 This is useful for developing experimental definitions or
141 when write permission in <B>/usr/share/terminfo</B> is not
144 The integer variables <B>LINES</B> and <B>COLS</B> are defined in
145 <B><curses.h></B> and will be filled in by <B>initscr</B> with the size
146 of the screen. The constants <B>TRUE</B> and <B>FALSE</B> have the
147 values <B>1</B> and <B>0</B>, respectively.
149 The <B>curses</B> routines also define the <B>WINDOW</B> <B>*</B> variable
150 <B>curscr</B> which is used for certain low-level operations like
151 clearing and redrawing a screen containing garbage. The
152 <B>curscr</B> can be used in only a few routines.
155 <B>Routine</B> <B>and</B> <B>Argument</B> <B>Names</B>
156 Many <B>curses</B> routines have two or more versions. The
157 routines prefixed with <B>w</B> require a window argument. The
158 routines prefixed with <B>p</B> require a pad argument. Those
159 without a prefix generally use <B>stdscr</B>.
161 The routines prefixed with <B>mv</B> require a <I>y</I> and <I>x</I> coordinate
162 to move to before performing the appropriate action. The
163 <B>mv</B> routines imply a call to <B>move</B> before the call to the
164 other routine. The coordinate <I>y</I> always refers to the row
165 (of the window), and <I>x</I> always refers to the column. The
166 upper left-hand corner is always (0,0), not (1,1).
168 The routines prefixed with <B>mvw</B> take both a window argument
169 and <I>x</I> and <I>y</I> coordinates. The window argument is always
170 specified before the coordinates.
172 In each case, <I>win</I> is the window affected, and <I>pad</I> is the
173 pad affected; <I>win</I> and <I>pad</I> are always pointers to type
176 Option setting routines require a Boolean flag <I>bf</I> with the
177 value <B>TRUE</B> or <B>FALSE</B>; <I>bf</I> is always of type <B>bool</B>. The
178 variables <I>ch</I> and <I>attrs</I> below are always of type <B>chtype</B>.
179 The types <B>WINDOW</B>, <B>SCREEN</B>, <B>bool</B>, and <B>chtype</B> are defined in
180 <B><curses.h></B>. The type <B>TERMINAL</B> is defined in <B><term.h></B>.
181 All other arguments are integers.
184 <B>Routine</B> <B>Name</B> <B>Index</B>
185 The following table lists each <B>curses</B> routine and the name
186 of the manual page on which it is described. Routines
187 flagged with `*' are ncurses-specific, not described by
188 XPG4 or present in SVr4.
190 <B>curses</B> Routine Name Manual Page Name
191 --------------------------------------------
192 COLOR_PAIR <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
193 PAIR_NUMBER <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
194 _nc_tracebits <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
195 _traceattr <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
196 _traceattr2 <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
197 _tracechar <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
198 _tracechtype <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
199 _tracechtype2 <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
200 _tracedump <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
201 _tracef <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
202 _tracemouse <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
203 addch <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
204 addchnstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
205 addchstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
206 addnstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
207 addstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
208 assume_default_colors <B><A HREF="default_colors.3x.html">default_colors(3x)</A></B>*
209 attr_get <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
210 attr_off <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
211 attr_on <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
212 attr_set <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
213 attroff <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
214 attron <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
215 attrset <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
216 baudrate <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
217 beep <B><A HREF="curs_beep.3x.html">curs_beep(3x)</A></B>
218 bkgd <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
219 bkgdset <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
220 border <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
221 box <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
222 can_change_color <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
223 cbreak <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
224 chgat <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
225 clear <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
227 clearok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
228 clrtobot <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
229 clrtoeol <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
230 color_content <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
231 color_set <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
232 copywin <B><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></B>
233 curs_set <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
234 curses_version <B><A HREF="curs_extend.3x.html">curs_extend(3x)</A></B>*
235 def_prog_mode <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
236 def_shell_mode <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
237 define_key <B><A HREF="define_key.3x.html">define_key(3x)</A></B>*
238 del_curterm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
239 delay_output <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
240 delch <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
241 deleteln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
242 delscreen <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
243 delwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
244 derwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
245 doupdate <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
246 dupwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
247 echo <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
248 echochar <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
249 endwin <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
250 erase <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
251 erasechar <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
252 filter <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
253 flash <B><A HREF="curs_beep.3x.html">curs_beep(3x)</A></B>
254 flushinp <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
255 getbegyx <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
256 getbkgd <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
257 getch <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
258 getmaxyx <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
259 getmouse <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
260 getnstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
261 getparyx <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
262 getstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
263 getsyx <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
264 getwin <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
265 getyx <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
266 halfdelay <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
267 has_colors <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
268 has_ic <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
269 has_il <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
270 has_key <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>*
271 hline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
272 idcok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
273 idlok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
274 immedok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
275 inch <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
276 inchnstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
277 inchstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
278 init_color <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
279 init_pair <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
281 initscr <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
282 innstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
283 insch <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
284 insdelln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
285 insertln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
286 insnstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
287 insstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
288 instr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
289 intrflush <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
290 is_linetouched <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
291 is_wintouched <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
292 isendwin <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
293 keybound <B><A HREF="keybound.3x.html">keybound(3x)</A></B>*
294 keyname <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
295 keyok <B><A HREF="keyok.3x.html">keyok(3x)</A></B>*
296 keypad <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
297 killchar <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
298 leaveok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
299 longname <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
300 mcprint <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B>*
301 meta <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
302 mouse_trafo <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
303 mouseinterval <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
304 mousemask <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
305 move <B><A HREF="curs_move.3x.html">curs_move(3x)</A></B>
306 mvaddch <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
307 mvaddchnstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
308 mvaddchstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
309 mvaddnstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
310 mvaddstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
311 mvchgat <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
312 mvcur <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
313 mvdelch <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
314 mvderwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
315 mvgetch <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
316 mvgetnstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
317 mvgetstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
318 mvhline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
319 mvinch <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
320 mvinchnstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
321 mvinchstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
322 mvinnstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
323 mvinsch <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
324 mvinsnstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
325 mvinsstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
326 mvinstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
327 mvprintw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
328 mvscanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
329 mvvline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
330 mvwaddch <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
331 mvwaddchnstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
332 mvwaddchstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
333 mvwaddnstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
335 mvwaddstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
336 mvwchgat <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
337 mvwdelch <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
338 mvwgetch <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
339 mvwgetnstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
340 mvwgetstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
341 mvwhline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
342 mvwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
343 mvwinch <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
344 mvwinchnstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
345 mvwinchstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
346 mvwinnstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
347 mvwinsch <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
348 mvwinsnstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
349 mvwinsstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
350 mvwinstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
351 mvwprintw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
352 mvwscanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
353 mvwvline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
354 napms <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
355 newpad <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
356 newterm <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
357 newwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
358 nl <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
359 nocbreak <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
360 nodelay <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
361 noecho <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
362 nonl <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
363 noqiflush <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
364 noraw <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
365 notimeout <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
366 overlay <B><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></B>
367 overwrite <B><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></B>
368 pair_content <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
369 pechochar <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
370 pnoutrefresh <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
371 prefresh <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
372 printw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
373 putp <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
374 putwin <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
375 qiflush <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
376 raw <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
377 redrawwin <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
378 refresh <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
379 reset_prog_mode <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
380 reset_shell_mode <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
381 resetty <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
382 resizeterm <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B>*
383 restartterm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
384 ripoffline <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
385 savetty <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
386 scanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
387 scr_dump <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
389 scr_init <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
390 scr_restore <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
391 scr_set <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
392 scrl <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>
393 scroll <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>
394 scrollok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
395 set_curterm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
396 set_term <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
397 setscrreg <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
398 setsyx <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
399 setterm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
400 setupterm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
401 slk_attr <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>*
402 slk_attr_off <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
403 slk_attr_on <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
404 slk_attr_set <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
405 slk_attroff <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
406 slk_attron <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
407 slk_attrset <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
408 slk_clear <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
409 slk_color <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
410 slk_init <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
411 slk_label <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
412 slk_noutrefresh <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
413 slk_refresh <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
414 slk_restore <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
415 slk_set <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
416 slk_touch <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
417 standend <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
418 standout <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
419 start_color <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
420 subpad <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
421 subwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
422 syncok <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
423 termattrs <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
424 termname <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
425 tgetent <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
426 tgetflag <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
427 tgetnum <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
428 tgetstr <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
429 tgoto <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
430 tigetflag <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
431 tigetnum <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
432 tigetstr <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
433 timeout <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
434 touchline <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
435 touchwin <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
436 tparm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
437 tputs <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
438 tputs <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
439 trace <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
440 typeahead <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
441 unctrl <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
443 ungetch <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
444 ungetmouse <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
445 untouchwin <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
446 use_default_colors <B><A HREF="default_colors.3x.html">default_colors(3x)</A></B>*
447 use_env <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
448 use_extended_names <B><A HREF="curs_extend.3x.html">curs_extend(3x)</A></B>*
449 vidattr <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
450 vidputs <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
451 vline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
452 vw_printw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
453 vw_scanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
454 vwprintw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
455 vwscanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
456 waddch <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
457 waddchnstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
458 waddchstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
459 waddnstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
460 waddstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
461 wattr_get <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
462 wattr_off <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
463 wattr_on <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
464 wattr_set <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
465 wattroff <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
466 wattron <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
467 wattrset <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
468 wbkgd <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
469 wbkgdset <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
470 wborder <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
471 wchgat <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
472 wclear <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
473 wclrtobot <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
474 wclrtoeol <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
475 wcolor_set <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
476 wcursyncup <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
477 wdelch <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
478 wdeleteln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
479 wechochar <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
480 wenclose <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
481 werase <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
482 wgetch <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
483 wgetnstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
484 wgetstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
485 whline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
486 winch <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
487 winchnstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
488 winchstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
489 winnstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
490 winsch <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
491 winsdelln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
492 winsertln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
493 winsnstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
494 winsstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
495 winstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
497 wmouse_trafo <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
498 wmove <B><A HREF="curs_move.3x.html">curs_move(3x)</A></B>
499 wnoutrefresh <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
500 wprintw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
501 wredrawln <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
502 wrefresh <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
503 wresize <B><A HREF="wresize.3x.html">wresize(3x)</A></B>*
504 wscanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
505 wscrl <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>
506 wsetscrreg <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
507 wstandend <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
508 wstandout <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
509 wsyncdown <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
510 wsyncup <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
511 wtimeout <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
512 wtouchln <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
513 wvline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
517 <H2>RETURN VALUE</H2><PRE>
518 Routines that return an integer return <B>ERR</B> upon failure
519 and an integer value other than <B>ERR</B> upon successful
520 completion, unless otherwise noted in the routine
523 All macros return the value of the <B>w</B> version, except
524 <B>setscrreg</B>, <B>wsetscrreg</B>, <B>getyx</B>, <B>getbegyx</B>, <B>getmaxyx</B>. The
525 return values of <B>setscrreg</B>, <B>wsetscrreg</B>, <B>getyx</B>, <B>getbegyx</B>,
526 and <B>getmaxyx</B> are undefined (<I>i</I>.<I>e</I>., these should not be used
527 as the right-hand side of assignment statements).
529 Routines that return pointers return <B>NULL</B> on error.
533 <H2>ENVIRONMENT</H2><PRE>
534 The following environment symbols are useful for
535 customizing the runtime behavior of the <B>ncurses</B> library.
536 The most important ones have been already discussed in
540 The debugging library checks this environment symbol
541 when the application has redirected output to a file.
542 The symbol's numeric value is used for the baudrate.
543 If no value is found <B>ncurses</B> uses 9600. This allows
544 testers to construct repeatable test-cases that take
545 into account costs that depend on baudrate.
547 CC When set, change occurrences of the command_character
548 (i.e., the <B>cmdch</B> capability) of the loaded terminfo
549 entries to the value of this symbol. Very few
550 terminfo entries provide this feature.
553 Specify the width of the screen in characters.
554 Applications running in a windowing environment
555 usually are able to obtain the width of the window in
556 which they are executing. If neither the $COLUMNS
557 value nor the terminal's screen size is available,
558 <B>ncurses</B> uses the size which may be specified in the
559 terminfo database (i.e., the <B>cols</B> capability).
561 It is important that your application use a correct
562 size for the screen. However, this is not always
563 possible because your application may be running on a
564 host which does not honor NAWS (Negotiations About
565 Window Size), or because you are temporarily running
568 Either COLUMNS or LINES symbols may be specified
569 independently. This is mainly useful to circumvent
570 legacy misfeatures of terminal descriptions, e.g.,
571 xterm which commonly specifies a 65 line screen. For
572 best results, <B>lines</B> and <B>cols</B> should not be specified
573 in a terminal description for terminals which are run
576 Use the <B>use_env</B> function to disable this feature.
579 Specifies the total time, in milliseconds, for which
580 ncurses will await a character sequence, e.g., a
581 function key. The default value, 1000 milliseconds,
582 is enough for most uses. However, it is made a
583 variable to accommodate unusual applications.
585 The most common instance where you may wish to change
586 this value is to work with slow hosts, e.g., running
587 on a network. If the host cannot read characters
588 rapidly enough, it will have the same effect as if
589 the terminal did not send characters rapidly enough.
590 The library will still see a timeout.
592 Note that xterm mouse events are built up from
593 character sequences received from the xterm. If your
594 application makes heavy use of multiple-clicking, you
595 may wish to lengthen this default value because the
596 timeout applies to the composed multi-click event as
597 well as the individual clicks.
599 HOME Tells <B>ncurses</B> where your home directory is. That is
600 where it may read and write auxiliary terminal
607 Like COLUMNS, specify the height of the screen in
608 characters. See COLUMNS for a detailed description.
611 This applies only to the OS/2 EMX port. It specifies
612 the order of buttons on the mouse. OS/2 numbers a
613 3-button mouse inconsistently from other platforms:
619 This symbol lets you customize the mouse. The symbol
620 must be three numeric digits 1-3 in any order, e.g.,
621 123 or 321. If it is not specified, <B>ncurses</B> uses
625 Most of the terminal descriptions in the terminfo
626 database are written for real "hardware" terminals.
627 Many people use terminal emulators which run in a
628 windowing environment and use curses-based
629 applications. Terminal emulators can duplicate all
630 of the important aspects of a hardware terminal, but
631 they do not have the same limitations. The chief
632 limitation of a hardware terminal from the standpoint
633 of your application is the management of dataflow,
634 i.e., timing. Unless a hardware terminal is
635 interfaced into a terminal concentrator (which does
636 flow control), it (or your application) must manage
637 dataflow, preventing overruns. The cheapest solution
638 (no hardware cost) is for your program to do this by
639 pausing after operations that the terminal does
640 slowly, such as clearing the display.
642 As a result, many terminal descriptions (including
643 the vt100) have delay times embedded. You may wish
644 to use these descriptions, but not want to pay the
647 Set the NCURSES_NO_PADDING symbol to disable all but
648 mandatory padding. Mandatory padding is used as a
649 part of special control sequences such as <I>flash</I>.
652 Normally <B>ncurses</B> enables buffered output during
653 terminal initialization. This is done (as in SVr4
654 curses) for performance reasons. For testing
655 purposes, both of <B>ncurses</B> and certain applications,
656 this feature is made optional. Setting the
657 NCURSES_NO_SETBUF variable disables output buffering,
658 leaving the output in the original (usually line
662 During initialization, the <B>ncurses</B> debugging library
663 checks the NCURSES_TRACE symbol. If it is defined,
664 to a numeric value, <B>ncurses</B> calls the <B>trace</B> function,
665 using that value as the argument.
667 The argument values, which are defined in <B>curses.h</B>,
668 provide several types of information. When running
669 with traces enabled, your application will write the
670 file <B>trace</B> to the current directory.
672 TERM Denotes your terminal type. Each terminal type is
673 distinct, though many are similar.
676 If the <B>ncurses</B> library has been configured with
677 <I>termcap</I> support, <B>ncurses</B> will check for a terminal's
678 description in termcap form if it is not available in
679 the terminfo database.
681 The TERMCAP symbol contains either a terminal
682 description (with newlines stripped out), or a file
683 name telling where the information denoted by the
684 TERM symbol exists. In either case, setting it
685 directs <B>ncurses</B> to ignore the usual place for this
686 information, e.g., /etc/termcap.
689 Overrides the directory in which <B>ncurses</B> searches for
690 your terminal description. This is the simplest, but
691 not the only way to change the list of directories.
692 The complete list of directories in order follows:
694 - the last directory to which <B>ncurses</B> wrote, if any,
697 - the directory specified by the TERMINFO symbol
701 - directories listed in the TERMINFO_DIRS symbol
703 - one or more directories whose names are configured
704 and compiled into the ncurses library, e.g.,
708 Specifies a list of directories to search for
709 terminal descriptions. The list is separated by
710 colons (i.e., ":"). All of the terminal descriptions
711 are in terminfo form, which makes a subdirectory
712 named for the first letter of the terminal names
716 If TERMCAP does not hold a file name then <B>ncurses</B>
717 checks the TERMPATH symbol. This is a list of
718 filenames separated by colons (i.e., ":"). If the
719 TERMPATH symbol is not set, <B>ncurses</B> looks in the
720 files /etc/termcap, /usr/share/misc/termcap and
721 $HOME/.termcap, in that order.
723 The library may be configured to disregard the following
724 variables when the current user is the superuser (root),
725 or if the application uses setuid or setgid permissions:
726 $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
732 directory containing initialization files for the
733 terminal capability database /usr/share/terminfo
734 terminal capability database
738 <H2>SEE ALSO</H2><PRE>
739 <B><A HREF="terminfo.5.html">terminfo(5)</A></B> and 3x pages whose names begin "curs_" for
740 detailed routine descriptions.
744 <H2>EXTENSIONS</H2><PRE>
745 The <B>ncurses</B> library can be compiled with an option
746 (<B>-DUSE_GETCAP</B>) that falls back to the old-style
747 /etc/termcap file if the terminal setup code cannot find a
748 terminfo entry corresponding to <B>TERM</B>. Use of this feature
749 is not recommended, as it essentially includes an entire
750 termcap compiler in the <B>ncurses</B> startup code, at
751 significant cost in core and startup cycles.
753 The <B>ncurses</B> library includes facilities for capturing
754 mouse events on certain terminals (including xterm). See
755 the <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B> manual page for details.
757 The <B>ncurses</B> library includes facilities for responding to
758 window resizing events, e.g., when running in an xterm.
759 See the <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B> and <B><A HREF="wresize.3x.html">wresize(3x)</A></B> manual pages for
760 details. In addition, the library may be configured with
763 The <B>ncurses</B> library extends the fixed set of function key
764 capabilities of terminals by allowing the application
765 designer to define additional key sequences at runtime.
766 See the <B><A HREF="define_key.3x.html">define_key(3x)</A></B> and <B><A HREF="keyok.3x.html">keyok(3x)</A></B> manual pages for
769 The <B>ncurses</B> library can exploit the capabilities of
770 terminals which implement the ISO-6429 SGR 39 and SGR 49
771 controls, which allow an application to reset the terminal
772 to its original foreground and background colors. From
773 the users' perspective, the application is able to draw
774 colored text on a background whose color is set
775 independently, providing better control over color
776 contrasts. See the <B><A HREF="use_default_colors.3x.html">use_default_colors(3x)</A></B> manual page for
778 The <B>ncurses</B> library includes a function for directing
779 application output to a printer attached to the terminal
780 device. See the <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B> manual page for details.
784 <H2>PORTABILITY</H2><PRE>
785 The <B>ncurses</B> library is intended to be BASE-level
786 conformant with the XSI Curses standard. Certain portions
787 of the EXTENDED XSI Curses functionality (including color
788 support) are supported. The following EXTENDED XSI Curses
789 calls in support of wide (multibyte) characters are not
790 yet implemented: <B>add_wch</B>, <B>add_wchnstr</B>, <B>add_wchstr</B>,
791 <B>addnwstr</B>, <B>addwstr</B>, <B>bkgrnd</B>, <B>bkgrndset</B>, <B>border_set</B>, <B>box_set</B>,
792 <B>echo_wchar</B>, <B>erasewchar</B>, <B>get_wch</B>, <B>get_wstr</B>, <B>getbkgrnd</B>,
793 <B>getcchar</B>, <B>getn_wstr</B>, <B>getwchtype</B>, <B>hline_set</B>, <B>in_wch</B>,
794 <B>in_wchnstr</B>, <B>in_wchstr</B>, <B>innwstr</B>, <B>ins_nwstr</B>, <B>ins_wch</B>,
795 <B>ins_wstr</B>, <B>inwchnstr</B>, <B>inwchstr</B>, <B>inwstr</B>, <B>key_name</B>,
796 <B>killwchar</B>, <B>mvadd_wch</B>, <B>mvadd_wchnstr</B>, <B>mvadd_wchstr</B>,
797 <B>mvaddnwstr</B>, <B>mvaddwstr</B>, <B>mvget_wch</B>, <B>mvget_wstr</B>, <B>mvgetn_wstr</B>,
798 <B>mvhline_set</B>, <B>mvin_wch</B>, <B>mvinnwstr</B>, <B>mvins_nwstr</B>, <B>mvins_wch</B>,
799 <B>mvins_wstr</B>, <B>mvinwchnstr</B>, <B>mvinwchstr</B>, <B>mvinwchstr</B>, <B>mvinwstr</B>,
800 <B>mvvline_set</B>, <B>mvwadd_wch</B>, <B>mvwadd_wchnstr</B>, <B>mvwadd_wchstr</B>,
801 <B>mvwaddnwstr</B>, <B>mvwaddwstr</B>, <B>mvwget_ch</B>, <B>mvwget_wch</B>,
802 <B>mvwget_wstr</B>, <B>mvwgetn_wstr</B>, <B>mvwhline_set</B>, <B>mvwin_wch</B>,
803 <B>mvwin_wchnstr</B>, <B>mvwin_wchstr</B>, <B>mvwinnwstr</B>, <B>mvwins_nwstr</B>,
804 <B>mvwins_wch</B>, <B>mvwins_wstr</B>, <B>mvwinwchnstr</B>. <B>mvwinwstr</B>,
805 <B>mvwvline_set</B>, <B>pecho_wchar</B>, <B>setcchar</B>, <B>slk_wset</B>, <B>term_attrs</B>,
806 <B>unget_wch</B>, <B>vhline_set</B>, <B>vid_attr</B>, <B>vid_puts</B>, <B>vline_set</B>,
807 <B>wadd_wch</B>, <B>wadd_wchnstr</B>, <B>wadd_wchstr</B>, <B>waddnwstr</B>, <B>waddwstr</B>,
808 <B>waddwstr</B>, <B>wbkgrnd</B>, <B>wbkgrndset</B>, <B>wbkgrndset</B>, <B>wborder_set</B>,
809 <B>wecho_wchar</B>, <B>wecho_wchar</B>, <B>wget_wch</B>, <B>wget_wstr</B>, <B>wgetbkgrnd</B>,
810 <B>wgetn_wstr</B>, <B>whline_set</B>, <B>win_wch</B>, <B>win_wchnstr</B>, <B>win_wchstr</B>,
811 <B>winnwstr</B>, <B>wins_nwstr</B>, <B>wins_wch</B>, <B>wins_wstr</B>, <B>winwchnstr</B>,
812 <B>winwchstr</B>, <B>winwstr</B>, <B>wunctrl</B>, <B>wvline_set</B>,
814 A small number of local differences (that is, individual
815 differences between the XSI Curses and <B>ncurses</B> calls) are
816 described in <B>PORTABILITY</B> sections of the library man
819 The routine <B>has_key</B> is not part of XPG4, nor is it present
820 in SVr4. See the <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B> manual page for details.
822 The routine <B>slk_attr</B> is not part of XPG4, nor is it
823 present in SVr4. See the <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B> manual page for
826 The routines <B>getmouse</B>, <B>mousemask</B>, <B>ungetmouse</B>,
827 <B>mouseinterval</B>, and <B>wenclose</B> relating to mouse interfacing
828 are not part of XPG4, nor are they present in SVr4. See
829 the <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B> manual page for details.
831 The routine <B>mcprint</B> was not present in any previous curses
832 implementation. See the <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B> manual page for
834 The routine <B>wresize</B> is not part of XPG4, nor is it present
835 in SVr4. See the <B><A HREF="wresize.3x.html">wresize(3x)</A></B> manual page for details.
837 In historic curses versions, delays embedded in the
838 capabilities <B>cr</B>, <B>ind</B>, <B>cub1</B>, <B>ff</B> and <B>tab</B> activated
839 corresponding delay bits in the UNIX tty driver. In this
840 implementation, all padding is done by NUL sends. This
841 method is slightly more expensive, but narrows the
842 interface to the UNIX kernel significantly and increases
843 the package's portability correspondingly.
845 In the XSI standard and SVr4 manual pages, many entry
846 points have prototype arguments of the for <B>char</B> <B>*const</B> (or
847 <B>cchar_t</B> <B>*const</B>, or <B>wchar_t</B> <B>*const</B>, or <B>void</B> <B>*const</B>).
848 Depending on one's interpretation of the ANSI C standard
849 (see section 3.5.4.1), these declarations are either (a)
850 meaningless, or (b) meaningless and illegal. The
851 declaration <B>const</B> <B>char</B> <B>*x</B> is a modifiable pointer to
852 unmodifiable data, but <B>char</B> <B>*const</B> <B>x</B>' is an unmodifiable
853 pointer to modifiable data. Given that C passes arguments
854 by value, <B><type></B> <B>*const</B> as a formal type is at best
855 dubious. Some compilers choke on the prototypes.
856 Therefore, in this implementation, they have been changed
857 to <B>const</B> <B><type></B> <B>*</B> globally.
862 The header file <B><curses.h></B> automatically includes the
863 header files <B><stdio.h></B> and <B><unctrl.h></B>.
865 If standard output from a <B>ncurses</B> program is re-directed
866 to something which is not a tty, screen updates will be
867 directed to standard error. This was an undocumented
868 feature of AT&T System V Release 3 curses.
872 <H2>AUTHORS</H2><PRE>
873 Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
874 Based on pcurses by Pavel Curtis.
895 Man(1) output converted with
896 <a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>