2 <BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
4 <STRONG>ncurses</STRONG> - CRT screen handling and optimization package
9 <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
13 <H2>DESCRIPTION</H2><PRE>
14 The <STRONG>curses</STRONG> library routines give the user a terminal-inde-
15 pendent method of updating character screens with reason-
16 able optimization. This implementation is ``new curses''
17 (ncurses) and is the approved replacement for 4.4BSD clas-
18 sic curses, which has been discontinued.
20 The <STRONG>ncurses</STRONG> routines emulate the <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> library of
21 System V Release 4 UNIX, and the XPG4 curses standard (XSI
22 curses) but the <STRONG>ncurses</STRONG> library is freely redistributable
23 in source form. Differences from the SVr4 curses are sum-
24 marized under the EXTENSIONS and BUGS sections below and
25 described in detail in the EXTENSIONS and BUGS sections of
28 A program using these routines must be linked with the
29 <STRONG>-lncurses</STRONG> option, or (if it has been generated) with the
30 debugging library <STRONG>-lncurses_g</STRONG>. (Your system integrator
31 may also have installed these libraries under the names
32 <STRONG>-lcurses</STRONG> and <STRONG>-lcurses_g</STRONG>.) The ncurses_g library generates
33 trace logs (in a file called 'trace' in the current direc-
34 tory) that describe curses actions.
36 The <STRONG>ncurses</STRONG> package supports: overall screen, window and
37 pad manipulation; output to windows and pads; reading ter-
38 minal input; control over terminal and <STRONG>curses</STRONG> input and
39 output options; environment query routines; color manipu-
40 lation; use of soft label keys; terminfo capabilities; and
41 access to low-level terminal-manipulation routines.
43 To initialize the routines, the routine <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>
44 must be called before any of the other routines that deal
45 with windows and screens are used. The routine <STRONG>endwin</STRONG>
46 must be called before exiting. To get character-at-a-time
47 input without echoing (most interactive, screen oriented
48 programs want this), the following sequence should be
51 <STRONG>initscr();</STRONG> <STRONG>cbreak();</STRONG> <STRONG>noecho();</STRONG>
53 Most programs would additionally use the sequence:
55 <STRONG>nonl();</STRONG>
56 <STRONG>intrflush(stdscr,</STRONG> <STRONG>FALSE);</STRONG>
57 <STRONG>keypad(stdscr,</STRONG> <STRONG>TRUE);</STRONG>
59 Before a <STRONG>curses</STRONG> program is run, the tab stops of the ter-
60 the <STRONG>tput</STRONG> <STRONG>init</STRONG> command after the shell environment variable
61 <STRONG>TERM</STRONG> has been exported. <STRONG>tset(1)</STRONG> is usually responsible
62 for doing this. [See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for further details.]
64 The <STRONG>curses</STRONG> library permits manipulation of data struc-
65 tures, called <EM>windows</EM>, which can be thought of as two-
66 dimensional arrays of characters representing all or part
67 of a CRT screen. A default window called <STRONG>stdscr</STRONG>, which is
68 the size of the terminal screen, is supplied. Others may
69 be created with <STRONG>newwin</STRONG>.
71 Note that <STRONG>curses</STRONG> does not handle overlapping windows,
72 that's done by the <STRONG>panels(3x)</STRONG> library. This means that you
73 can either use <STRONG>stdscr</STRONG> or divide the screen into tiled win-
74 dows and not using <STRONG>stdscr</STRONG> at all. Mixing the two will
75 result in unpredictable, and undesired, effects.
77 Windows are referred to by variables declared as <STRONG>WINDOW</STRONG> <STRONG>*</STRONG>.
78 These data structures are manipulated with routines
79 described here and elsewhere in the <STRONG>ncurses</STRONG> manual pages.
80 Among which the most basic routines are <STRONG>move</STRONG> and <STRONG>addch</STRONG>.
81 More general versions of these routines are included with
82 names beginning with <STRONG>w</STRONG>, allowing the user to specify a
83 window. The routines not beginning with <STRONG>w</STRONG> affect <STRONG>stdscr</STRONG>.)
85 After using routines to manipulate a window, <STRONG>refresh</STRONG> is
86 called, telling <STRONG>curses</STRONG> to make the user's CRT screen look
87 like <STRONG>stdscr</STRONG>. The characters in a window are actually of
88 type <STRONG>chtype</STRONG>, (character and attribute data) so that other
89 information about the character may also be stored with
92 Special windows called <EM>pads</EM> may also be manipulated.
93 These are windows which are not constrained to the size of
94 the screen and whose contents need not be completely dis-
95 played. See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG> for more information.
97 In addition to drawing characters on the screen, video
98 attributes and colors may be supported, causing the char-
99 acters to show up in such modes as underlined, in reverse
100 video, or in color on terminals that support such display
101 enhancements. Line drawing characters may be specified to
102 be output. On input, <STRONG>curses</STRONG> is also able to translate
103 arrow and function keys that transmit escape sequences
104 into single values. The video attributes, line drawing
105 characters, and input values use names, defined in
106 <STRONG><curses.h></STRONG>, such as <STRONG>A_REVERSE</STRONG>, <STRONG>ACS_HLINE</STRONG>, and <STRONG>KEY_LEFT</STRONG>.
108 If the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> are set, or
109 if the program is executing in a window environment, line
110 and column information in the environment will override
111 information read by <EM>terminfo</EM>. This would effect a program
113 If the environment variable <STRONG>TERMINFO</STRONG> is defined, any pro-
114 gram using <STRONG>curses</STRONG> checks for a local terminal definition
115 before checking in the standard place. For example, if
116 <STRONG>TERM</STRONG> is set to <STRONG>att4424</STRONG>, then the compiled terminal defini-
119 <STRONG>@DATADIR@/terminfo/a/att4424</STRONG>.
121 (The <STRONG>a</STRONG> is copied from the first letter of <STRONG>att4424</STRONG> to avoid
122 creation of huge directories.) However, if <STRONG>TERMINFO</STRONG> is
123 set to <STRONG>$HOME/myterms</STRONG>, <STRONG>curses</STRONG> first checks
125 <STRONG>$HOME/myterms/a/att4424</STRONG>,
127 and if that fails, it then checks
129 <STRONG>@DATADIR@/terminfo/a/att4424</STRONG>.
131 This is useful for developing experimental definitions or
132 when write permission in <STRONG>@DATADIR@/terminfo</STRONG> is not avail-
135 The integer variables <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> are defined in
136 <STRONG><curses.h></STRONG> and will be filled in by <STRONG>initscr</STRONG> with the size
137 of the screen. The constants <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG> have the val-
138 ues <STRONG>1</STRONG> and <STRONG>0</STRONG>, respectively.
140 The <STRONG>curses</STRONG> routines also define the <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> variable
141 <STRONG>curscr</STRONG> which is used for certain low-level operations like
142 clearing and redrawing a screen containing garbage. The
143 <STRONG>curscr</STRONG> can be used in only a few routines.
146 <STRONG>Routine</STRONG> <STRONG>and</STRONG> <STRONG>Argument</STRONG> <STRONG>Names</STRONG>
147 Many <STRONG>curses</STRONG> routines have two or more versions. The rou-
148 tines prefixed with <STRONG>w</STRONG> require a window argument. The rou-
149 tines prefixed with <STRONG>p</STRONG> require a pad argument. Those with-
150 out a prefix generally use <STRONG>stdscr</STRONG>.
152 The routines prefixed with <STRONG>mv</STRONG> require a <EM>y</EM> and <EM>x</EM> coordinate
153 to move to before performing the appropriate action. The
154 <STRONG>mv</STRONG> routines imply a call to <STRONG>move</STRONG> before the call to the
155 other routine. The coordinate <EM>y</EM> always refers to the row
156 (of the window), and <EM>x</EM> always refers to the column. The
157 upper left-hand corner is always (0,0), not (1,1).
159 The routines prefixed with <STRONG>mvw</STRONG> take both a window argument
160 and <EM>x</EM> and <EM>y</EM> coordinates. The window argument is always
161 specified before the coordinates.
163 In each case, <EM>win</EM> is the window affected, and <EM>pad</EM> is the
165 Option setting routines require a Boolean flag <EM>bf</EM> with the
166 value <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>; <EM>bf</EM> is always of type <STRONG>bool</STRONG>. The vari-
167 ables <EM>ch</EM> and <EM>attrs</EM> below are always of type <STRONG>chtype</STRONG>. The
168 types <STRONG>WINDOW</STRONG>, <STRONG>SCREEN</STRONG>, <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are defined in
169 <STRONG><curses.h></STRONG>. The type <STRONG>TERMINAL</STRONG> is defined in <STRONG><term.h></STRONG>.
170 All other arguments are integers.
173 <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
174 The following table lists each <STRONG>curses</STRONG> routine and the name
175 of the manual page on which it is described. Routines
176 flagged with `*' are ncurses-specific, not described by
177 XPG4 or present in SVr4.
179 center tab(/); l l l l . <STRONG>curses</STRONG> Routine Name/Manual Page
180 Name = addch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG> addchnstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>
181 addchstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG> addnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
182 addstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG> attroff/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
183 attron/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG> attrset/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG> bau-
184 drate/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG> beep/<STRONG><A HREF="curs_beep.3x.html">curs_beep(3X)</A></STRONG>
185 bkgd/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG> bkgdset/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG> border/curs_bor-
186 <STRONG><A HREF="der.3x.html">der(3X)</A></STRONG> box/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
187 can_change_color/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG> cbreak/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
188 clear/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG> clearok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG> clrto-
189 bot/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG> clrtoeol/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG> color_con-
190 tent/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG> copywin/<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3X)</A></STRONG>
191 curs_set/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG> def_prog_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
192 def_shell_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG> del_curterm/curs_ter-
193 <STRONG><A HREF="minfo.3x.html">minfo(3X)</A></STRONG> delay_output/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG> delch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG>
194 deleteln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG> delscreen/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG> del-
195 win/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG> derwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG> doup-
196 date/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG> dupwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
197 echo/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> echochar/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG> end-
198 win/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG> erase/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>
199 erasechar/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG> filter/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
200 flash/<STRONG><A HREF="curs_beep.3x.html">curs_beep(3X)</A></STRONG> flushinp/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG> getbe-
201 gyx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG> getch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> get-
202 maxyx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG> getmouse/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>* get-
203 paryx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG> getstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG> get-
204 syx/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG> getwin/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
205 getyx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG> halfdelay/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> has_col-
206 ors/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG> has_ic/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
207 has_il/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG> has_key/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>*
208 hline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG> idcok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
209 idlok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG> immedok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
210 inch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG> inchnstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG> inch-
211 str/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG> init_color/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>
212 init_pair/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG> initscr/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>
213 innstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG> insch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG> ins-
214 delln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG> insertln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>
215 insnstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG> insstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>
216 isendwin/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG> keyname/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG> key-
217 pad/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> killchar/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
218 leaveok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG> longname/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
219 mcprint/<STRONG><A HREF="curs_print.3x.html">curs_print(3X)</A></STRONG>* meta/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> mouseinter-
220 val/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>* mousemask/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>*
221 move/<STRONG><A HREF="curs_move.3x.html">curs_move(3X)</A></STRONG> mvaddch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG> mvaddchn-
222 str/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG> mvaddchstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>
223 mvaddnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG> mvaddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
224 mvcur/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG> mvdelch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG> mvder-
225 win/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG> mvgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> mvget-
226 str/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG> mvinch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG> mvinchn-
227 str/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG> mvinchstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>
228 mvinnstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG> mvinsch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG> mvin-
229 snstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG> mvinsstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG> mvin-
230 str/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG> mvprintw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG> mvs-
231 canw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG> mvwaddch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG> mvwaddchn-
232 str/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG> mvwaddchstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>
233 mvwaddnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG> mvwaddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
234 mvwdelch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG> mvwgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> mvwget-
235 str/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG> mvwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
236 mvwinch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG> mvwinchnstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>
237 mvwinchstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG> mvwinnstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
238 mvwinsch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG> mvwinsnstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>
239 mvwinsstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG> mvwinstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG> mvw-
240 printw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG> mvwscanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>
241 napms/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG> newpad/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>
242 newterm/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG> newwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
243 nl/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG> nocbreak/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> node-
244 lay/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> noecho/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> nonl/curs_out-
245 <STRONG><A HREF="opts.3x.html">opts(3X)</A></STRONG> noqiflush/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> noraw/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
246 notimeout/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> overlay/<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3X)</A></STRONG> over-
247 write/<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3X)</A></STRONG> pair_content/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>
248 pechochar/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG> pnoutrefresh/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG> pre-
249 fresh/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG> printw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG> putp/curs_ter-
250 <STRONG><A HREF="minfo.3x.html">minfo(3X)</A></STRONG> putwin/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG> qiflush/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
251 raw/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> redrawwin/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
252 refresh/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG> reset_prog_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
253 reset_shell_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG> resetty/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
254 resizeterm/<STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>* restartterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
255 ripoffline/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG> savetty/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
256 scanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG> scr_dump/<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG>
257 scr_init/<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG> scr_restore/<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG>
258 scr_set/<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG> scrl/<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3X)</A></STRONG>
259 scroll/<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3X)</A></STRONG> scrollok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
260 set_curterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG> set_term/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>
261 setscrreg/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG> setsyx/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG> set-
262 term/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG> setupterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
263 slk_attr/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>* slk_attroff/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
264 slk_attron/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG> slk_attrset/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
265 slk_clear/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG> slk_init/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
266 slk_label/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG> slk_noutrefresh/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
267 slk_refresh/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG> slk_restore/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
268 start_color/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG> subpad/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG> sub-
269 win/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG> syncok/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG> termat-
270 trs/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG> termname/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG> tge-
271 tent/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG> tgetflag/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG> tget-
272 num/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG> tgetstr/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>
273 tgoto/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG> tigetflag/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG> tiget-
274 num/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG> tigetstr/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG> time-
275 out/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> touchline/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG> touch-
276 win/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG> tparm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
277 tputs/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG> tputs/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG> typea-
278 head/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> unctrl/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
279 ungetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> ungetmouse/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>* untouch-
280 win/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG> use_env/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG> vidattr/curs_ter-
281 <STRONG><A HREF="minfo.3x.html">minfo(3X)</A></STRONG> vidputs/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG> vline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
282 vwprintw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG> vwscanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG> wad-
283 dch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG> waddchnstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG> waddch-
284 str/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG> waddnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
285 waddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG> wattroff/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG> wat-
286 tron/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG> wattrset/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
287 wbkgd/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG> wbkgdset/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG> wbor-
288 der/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG> wclear/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG> wclrto-
289 bot/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG> wclrtoeol/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG> wcursyn-
290 cup/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG> wdelch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG>
291 wdeleteln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG> wechochar/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG> wen-
292 close/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>* werase/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>
293 wgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> wgetnstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG> wget-
294 str/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG> whline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
295 winch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG> winchnstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG> winch-
296 str/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG> winnstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG> win-
297 sch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG> winsdelln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG> win-
298 sertln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG> winsnstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>
299 winsstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG> winstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
300 wmove/<STRONG><A HREF="curs_move.3x.html">curs_move(3X)</A></STRONG> wnoutrefresh/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
301 wprintw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG> wredrawln/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG> wre-
302 fresh/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG> wresize/<STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>*
303 wscanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG> wscrl/<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3X)</A></STRONG> wsetscr-
304 reg/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG> wstandend/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG> wstand-
305 out/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG> wsyncdown/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG> wsyn-
306 cup/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG> wtimeout/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
307 wtouchln/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG> wvline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
311 <H2>RETURN VALUE</H2><PRE>
312 Routines that return an integer return <STRONG>ERR</STRONG> upon failure
313 and an integer value other than <STRONG>ERR</STRONG> upon successful com-
314 pletion, unless otherwise noted in the routine descrip-
317 All macros return the value of the <STRONG>w</STRONG> version, except
318 <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>, <STRONG>getmaxyx</STRONG>. The
319 return values of <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>,
320 and <STRONG>getmaxyx</STRONG> are undefined (<EM>i</EM>.<EM>e</EM>., these should not be used
321 as the right-hand side of assignment statements).
325 <H2>SEE ALSO</H2><PRE>
326 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> and 3X pages whose names begin "curs_" for
327 detailed routine descriptions.
331 <H2>EXTENSIONS</H2><PRE>
332 The <STRONG>curses</STRONG> library can be compiled with an option (<STRONG>-DTERM-</STRONG>
333 <STRONG>CAP_FILE</STRONG>) that falls back to the old-style /etc/termcap
334 file if the terminal setup code cannot find a terminfo
335 entry corresponding to <STRONG>TERM</STRONG>. Use of this feature is not
336 recommended, as it essentially includes an entire termcap
337 compiler in the <STRONG>curses</STRONG> startup code, at significant cost
338 in core and startup cycles.
340 Compiling with <STRONG>-DTERMCAP_FILE</STRONG> changes the library's ini-
341 tialization sequence in a way intended to mimic the behav-
342 ior of 4.4BSD curses. If there is no local or system ter-
343 minfo entry matching <STRONG>TERM</STRONG>, then the library looks for
344 termcap entries in the following places: (1) if <STRONG>TERMINFO</STRONG>
345 is undefined, in the file named by <STRONG>TERMCAP_FILE</STRONG>; (2) if
346 <STRONG>TERMINFO</STRONG> is defined and begins with a slash, it is inter-
347 preted as the name of a termcap file to search for <STRONG>TERM</STRONG>;
348 (3) otherwise, if <STRONG>TERMINFO</STRONG> has a leading string that looks
349 like a terminal entry name list, and it matches <STRONG>TERM</STRONG>, the
350 contents of <STRONG>TERMINFO</STRONG> is interpreted as a termcap; (4) if
351 <STRONG>TERMINFO</STRONG> looks like a termcap but doesn't match <STRONG>TERM</STRONG>, the
352 termcap file is searched for among the colon-separated
353 paths in the environment variable <STRONG>TERMPATHS</STRONG> if that is
354 defined, and in ~/.termcap and the file value of <STRONG>TERM-</STRONG>
355 <STRONG>CAP_FILE</STRONG> otherwise.
357 Versions of <STRONG>curses</STRONG> compiled on PC clones support display
358 of the PC ROM characters (including ROM characters 0-31,
359 which stock SVr4 curses cannot display). See the EXTEN-
360 SIONS sections of <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> and <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>.
362 The <STRONG>curses</STRONG> library includes facilities for capturing mouse
363 events on certain terminals (including xterm). See the
364 <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG> manual page for details.
366 The <STRONG>curses</STRONG> library includes a function for directing
367 application output to a printer attached to the terminal
368 device. See the <STRONG><A HREF="curs_print.3x.html">curs_print(3X)</A></STRONG> manual page for details.
372 <H2>PORTABILITY</H2><PRE>
373 The <STRONG>curses</STRONG> library is intended to be BASE-level conformant
374 with the XSI Curses standard. Certain portions of the
375 EXTENDED XSI Curses functionality (including color sup-
376 port) are supported. The following EXTENDED XSI Curses
377 calls in support of wide (multibyte) characters are not
378 yet implemented: <STRONG>addnwstr,</STRONG> <STRONG>addwstr,</STRONG> <STRONG>mvaddnwstr,</STRONG> <STRONG>mvwaddnw-</STRONG>
379 <STRONG>str,</STRONG> <STRONG>mvaddwstr,</STRONG> <STRONG>waddnwstr,</STRONG> <STRONG>waddwstr,</STRONG> <STRONG>add_wch,</STRONG> <STRONG>wadd_wch,</STRONG>
380 <STRONG>mvwadd_wchnstr,</STRONG> <STRONG>mvwadd_wchstr,</STRONG> <STRONG>bkgrndset,</STRONG> <STRONG>bkgrnd,</STRONG> <STRONG>get-</STRONG>
381 <STRONG>bkgrnd,</STRONG> <STRONG>wbkgrnd,</STRONG> <STRONG>wbkgrndset,</STRONG> <STRONG>wgetbkgrnd,</STRONG> <STRONG>border_set,</STRONG> <STRONG>wbor-</STRONG>
382 <STRONG>der_set,</STRONG> <STRONG>box_set,</STRONG> <STRONG>hline_set,</STRONG> <STRONG>mvhline_set,</STRONG> <STRONG>mvvline_set,</STRONG>
383 <STRONG>mvwhline_set,</STRONG> <STRONG>mvwvline_set,</STRONG> <STRONG>whline_set,</STRONG> <STRONG>vhline_set,</STRONG>
384 <STRONG>wvline_set,</STRONG> <STRONG>echo_wchar,</STRONG> <STRONG>wecho_wchar,</STRONG> <STRONG>erasewchar,</STRONG> <STRONG>kill-</STRONG>
385 <STRONG>wchar,</STRONG> <STRONG>get_wch,</STRONG> <STRONG>mvget_wch,</STRONG> <STRONG>mvwget_ch,</STRONG> <STRONG>wget_wch,</STRONG>
386 <STRONG>getwchtype,</STRONG> <STRONG>get_wstr,</STRONG> <STRONG>getn_wstr,</STRONG> <STRONG>wget_wstr,</STRONG> <STRONG>wgetn_wstr,</STRONG>
387 <STRONG>mvget_wstr,</STRONG> <STRONG>mvgetn_wstr,</STRONG> <STRONG>mvwget_wstr,</STRONG> <STRONG>mvwgetn_wstr,</STRONG> <STRONG>innw-</STRONG>
388 <STRONG>str,</STRONG> <STRONG>inwstr,</STRONG> <STRONG>winnwstr,</STRONG> <STRONG>winwstr,</STRONG> <STRONG>mvinnwstr,</STRONG> <STRONG>mvinwstr,</STRONG>
389 <STRONG>mvwinnwstr,</STRONG> <STRONG>mvwinwstr,</STRONG> <STRONG>ins_nwstr,</STRONG> <STRONG>ins_wstr,</STRONG> <STRONG>mvins_nwstr,</STRONG>
390 <STRONG>mvins_wstr,</STRONG> <STRONG>mvwins_nwstr,</STRONG> <STRONG>mvwins_wstr,</STRONG> <STRONG>wins_nwstr,</STRONG>
391 <STRONG>wins_wstr,</STRONG> <STRONG>ins_wch,</STRONG> <STRONG>wins_wch,</STRONG> <STRONG>mvins_wch,</STRONG> <STRONG>mvwins_wch,</STRONG>
392 <STRONG>in_wch,</STRONG> <STRONG>win_wch,</STRONG> <STRONG>mvin_wch,</STRONG> <STRONG>mvwin_wch,</STRONG> <STRONG>inwchstr,</STRONG> <STRONG>inwchnstr,</STRONG>
393 <STRONG>winwchstr,</STRONG> <STRONG>winwchnstr,</STRONG> <STRONG>mvinwchstr,</STRONG> <STRONG>mvinwchnstr,</STRONG> <STRONG>mvinwch-</STRONG>
394 <STRONG>str,</STRONG> <STRONG>mvwinwchnstr.</STRONG>
396 A small number of local differences (that is, individual
397 differences between the XSI Curses and <STRONG>curses</STRONG> calls) are
398 described in <STRONG>PORTABILITY</STRONG> sections of the library man
401 The routine <STRONG>has_key</STRONG> is not part of XPG4, nor is it present
402 in SVr4. See the <STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> manual page for details.
404 The routine <STRONG>slk_attr</STRONG> is not part of XPG4, nor is it pre-
405 sent in SVr4. See the <STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG> manual page for
408 The routines <STRONG>getmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mouseinter-</STRONG>
409 <STRONG>val</STRONG>, and <STRONG>wenclose</STRONG> relating to mouse interfacing are not
410 part of XPG4, nor are they present in SVr4. See the
411 <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG> manual page for details.
413 The routine <STRONG>mcprint</STRONG> was not present in any previous curses
414 implementation. See the <STRONG><A HREF="curs_print.3x.html">curs_print(3X)</A></STRONG> manual page for
417 The routine <STRONG>wresize</STRONG> is not part of XPG4, nor is it present
418 in SVr4. See the <STRONG><A HREF="wresize.3x.html">wresize(3X)</A></STRONG> manual page for details.
420 In historic curses versions, delays embedded in the capa-
421 bilities <STRONG>cr</STRONG>, <STRONG>ind</STRONG>, <STRONG>cub1</STRONG>, <STRONG>ff</STRONG> and <STRONG>tab</STRONG> activated corresponding
422 delay bits in the UNIX tty driver. In this implementa-
423 tion, all padding is done by NUL sends. This method is
424 slightly more expensive, but narrows the interface to the
425 UNIX kernel significantly and increases the package's
426 portability correspondingly.
428 In the XSI standard and SVr4 manual pages, many entry
429 points have prototype arguments of the for <STRONG>char</STRONG> <STRONG>*const</STRONG> (or
430 <STRONG>cchar_t</STRONG> <STRONG>*const</STRONG>, or <STRONG>wchar_t</STRONG> <STRONG>*const</STRONG>, or <STRONG>void</STRONG> <STRONG>*const</STRONG>).
431 Depending on one's interpretation of the ANSI C standard
432 tion <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*x</STRONG> is a modifiable pointer to unmodifiable
433 data, but <STRONG>char</STRONG> <STRONG>*const</STRONG> <STRONG>x</STRONG>' is an unmodifiable pointer to
434 modifiable data. Given that C passes arguments by value,
435 <STRONG><type></STRONG> <STRONG>*const</STRONG> as a formal type is at best dubious. Some
436 compilers choke on the prototypes. Therefore, in this
437 implementation, they have been changed to <STRONG>const</STRONG> <STRONG><type></STRONG> <STRONG>*</STRONG>
443 The header file <STRONG><curses.h></STRONG> automatically includes the
444 header files <STRONG><stdio.h></STRONG> and <STRONG><unctrl.h></STRONG>.
446 If standard output from a <STRONG>curses</STRONG> program is re-directed to
447 something which is not a tty, screen updates will be
448 directed to standard error. This was an undocumented fea-
449 ture of AT&T System V Release 3 curses.
453 <H2>AUTHORS</H2><PRE>
454 Zeyd M. Ben-Halim, Eric S. Raymond. Descends from the
455 original pcurses by Pavel Curtis.