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