+<!--
+ ****************************************************************************
+ * Copyright 2018-2019,2020 Thomas E. Dickey *
+ * Copyright 1998-2016,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************
+ * @Id: curs_inopts.3x,v 1.33 2020/12/05 19:38:18 Benno.Schulenberg Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>curs_inopts 3X</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
<BODY>
+<H1 class="no-header">curs_inopts 3X</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
+<B><A HREF="curs_inopts.3X.html">curs_inopts(3X)</A></B> <B><A HREF="curs_inopts.3X.html">curs_inopts(3X)</A></B>
-</PRE>
-<H2>NAME</H2><PRE>
- <B>cbreak</B>, <B>nocbreak</B>, <B>echo</B>, <B>noecho</B>, <B>halfdelay</B>, <B>intrflush</B>, <B>key-</B>
- <B>pad</B>, <B>meta</B>, <B>nodelay</B>, <B>notimeout</B>, <B>raw</B>, <B>noraw</B>, <B>noqiflush</B>,
- <B>qiflush</B>, <B>timeout</B>, <B>wtimeout</B>, <B>typeahead</B> - <B>curses</B> input
- options
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
+
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <B>cbreak</B>, <B>nocbreak</B>, <B>echo</B>, <B>noecho</B>, <B>halfdelay</B>, <B>intrflush</B>, <B>keypad</B>, <B>meta</B>, <B>nl</B>,
+ <B>nonl</B>, <B>nodelay</B>, <B>notimeout</B>, <B>raw</B>, <B>noraw</B>, <B>qiflush</B>, <B>noqiflush</B>, <B>timeout</B>,
+ <B>wtimeout</B>, <B>typeahead</B> - <B>curses</B> input options
+
+
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
<B>#include</B> <B><curses.h></B>
<B>int</B> <B>cbreak(void);</B>
<B>int</B> <B>nocbreak(void);</B>
+
<B>int</B> <B>echo(void);</B>
<B>int</B> <B>noecho(void);</B>
- <B>int</B> <B>halfdelay(int</B> <B>tenths);</B>
- <B>int</B> <B>intrflush(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>int</B> <B>keypad(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>int</B> <B>meta(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>int</B> <B>nodelay(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>int</B> <B>raw(void);</B>
- <B>int</B> <B>noraw(void);</B>
- <B>void</B> <B>noqiflush(void);</B>
- <B>void</B> <B>qiflush(void);</B>
- <B>int</B> <B>notimeout(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>void</B> <B>timeout(int</B> <B>delay);</B>
- <B>void</B> <B>wtimeout(WINDOW</B> <B>*win,</B> <B>int</B> <B>delay);</B>
- <B>int</B> <B>typeahead(int</B> <B>fd);</B>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- Normally, the tty driver buffers typed characters until a
- newline or carriage return is typed. The <B>cbreak</B> routine
- disables line buffering and erase/kill character-process-
- ing (interrupt and flow control characters are unaf-
- fected), making characters typed by the user immediately
- available to the program. The <B>nocbreak</B> routine returns
- the terminal to normal (cooked) mode.
-
- Initially the terminal may or may not be in <B>cbreak</B> mode,
- as the mode is inherited; therefore, a program should call
- <B>cbreak</B> or <B>nocbreak</B> explicitly. Most interactive programs
- using <B>curses</B> set the <B>cbreak</B> mode. Note that <B>cbreak</B> over-
- rides <B>raw</B>. [See <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B> for a discussion of how
- these routines interact with <B>echo</B> and <B>noecho</B>.]
-
- The <B>echo</B> and <B>noecho</B> routines control whether characters
- typed by the user are echoed by <B>getch</B> as they are typed.
- Echoing by the tty driver is always disabled, but ini-
- tially <B>getch</B> is in echo mode, so characters typed are
- echoed. Authors of most interactive programs prefer to do
- their own echoing in a controlled area of the screen, or
- not to echo at all, so they disable echoing by calling
- <B>noecho</B>. [See <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B> for a discussion of how these
- routines interact with <B>cbreak</B> and <B>nocbreak</B>.]
-
- The <B>halfdelay</B> routine is used for half-delay mode, which
- is similar to <B>cbreak</B> mode in that characters typed by the
- user are immediately available to the program. However,
- after blocking for <I>tenths</I> tenths of seconds, ERR is
- returned if nothing has been typed. The value of <B>tenths</B>
- must be a number between 1 and 255. Use <B>nocbreak</B> to leave
- half-delay mode.
-
- If the <B>intrflush</B> option is enabled, (<I>bf</I> is <B>TRUE</B>), when an
- interrupt key is pressed on the keyboard (interrupt,
- break, quit) all output in the tty driver queue will be
- flushed, giving the effect of faster response to the
- interrupt, but causing <B>curses</B> to have the wrong idea of
- what is on the screen. Disabling (<I>bf</I> is <B>FALSE</B>), the
- option prevents the flush. The default for the option is
- inherited from the tty driver settings. The window argu-
- ment is ignored.
-
- The <B>keypad</B> option enables the keypad of the user's termi-
- nal. If enabled (<I>bf</I> is <B>TRUE</B>), the user can press a func-
- tion key (such as an arrow key) and <B>wgetch</B> returns a sin-
- gle value representing the function key, as in <B>KEY_LEFT</B>.
- If disabled (<I>bf</I> is <B>FALSE</B>), <B>curses</B> does not treat function
- keys specially and the program has to interpret the escape
- sequences itself. If the keypad in the terminal can be
- turned on (made to transmit) and off (made to work
- locally), turning on this option causes the terminal key-
- pad to be turned on when <B>wgetch</B> is called. The default
- value for keypad is false.
-
- Initially, whether the terminal returns 7 or 8 significant
- bits on input depends on the control mode of the tty
- driver [see <B><A HREF="termio.7.html">termio(7)</A></B>]. To force 8 bits to be returned,
- invoke <B>meta</B>(<I>win</I>, <B>TRUE</B>); this is equivalent, under POSIX,
- to setting the CS8 flag on the terminal. To force 7 bits
- to be returned, invoke <B>meta</B>(<I>win</I>, <B>FALSE</B>); this is equiva-
- lent, under POSIX, to setting the CS8 flag on the termi-
- nal. The window argument, <I>win</I>, is always ignored. If the
- terminfo capabilities <B>smm</B> (meta_on) and <B>rmm</B> (meta_off) are
- defined for the terminal, <B>smm</B> is sent to the terminal when
- <B>meta</B>(<I>win</I>, <B>TRUE</B>) is called and <B>rmm</B> is sent when <B>meta</B>(<I>win</I>,
- <B>FALSE</B>) is called.
-
- The <B>nodelay</B> option causes <B>getch</B> to be a non-blocking call.
- If no input is ready, <B>getch</B> returns <B>ERR</B>. If disabled (<I>bf</I>
- is <B>FALSE</B>), <B>getch</B> waits until a key is pressed.
-
- While interpreting an input escape sequence, <B>wgetch</B> sets a
- timer while waiting for the next character. If <B>notime-</B>
- <B>out(</B><I>win</I>, <B>TRUE</B>) is called, then <B>wgetch</B> does not set a
- timer. The purpose of the timeout is to differentiate
- between sequences received from a function key and those
- typed by a user.
-
- The <B>raw</B> and <B>noraw</B> routines place the terminal into or out
- of raw mode. Raw mode is similar to <B>cbreak</B> mode, in that
- characters typed are immediately passed through to the
- user program. The differences are that in raw mode, the
- interrupt, quit, suspend, and flow control characters are
- all passed through uninterpreted, instead of generating a
- signal. The behavior of the BREAK key depends on other
- bits in the tty driver that are not set by <B>curses</B>.
-
- When the <B>noqiflush</B> routine is used, normal flush of input
- and output queues associated with the <B>INTR</B>, <B>QUIT</B> and <B>SUSP</B>
- characters will not be done [see <B><A HREF="termio.7.html">termio(7)</A></B>]. When <B>qiflush</B>
- is called, the queues will be flushed when these control
- characters are read. You may want to call <B>noqiflush()</B> in
- a signal handler if you want output to continue as though
- the interrupt had not occurred, after the handler exits.
-
- The <B>timeout</B> and <B>wtimeout</B> routines set blocking or non-
- blocking read for a given window. If <I>delay</I> is negative,
- blocking read is used (<I>i</I>.<I>e</I>., waits indefinitely for
- input). If <I>delay</I> is zero, then non-blocking read is used
- (<I>i</I>.<I>e</I>., read returns <B>ERR</B> if no input is waiting). If <I>delay</I>
- is positive, then read blocks for <I>delay</I> milliseconds, and
- returns <B>ERR</B> if there is still no input. Hence, these rou-
- tines provide the same functionality as <B>nodelay</B>, plus the
- additional capability of being able to block for only
- <I>delay</I> milliseconds (where <I>delay</I> is positive).
-
- The <B>curses</B> library does ``line-breakout optimization'' by
- looking for typeahead periodically while updating the
- screen. If input is found, and it is coming from a tty,
- the current update is postponed until <B>refresh</B> or <B>doupdate</B>
- is called again. This allows faster response to commands
- typed in advance. Normally, the input FILE pointer passed
- to <B>newterm</B>, or <B>stdin</B> in the case that <B>initscr</B> was used,
- will be used to do this typeahead checking. The <B>typeahead</B>
- routine specifies that the file descriptor <I>fd</I> is to be
- used to check for typeahead instead. If <I>fd</I> is -1, then no
- typeahead checking is done.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All routines that return an integer return <B>ERR</B> upon fail-
- ure and OK (SVr4 specifies only "an integer value other
- than <B>ERR</B>") upon successful completion, unless otherwise
- noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4.
-
- The ncurses library obeys the XPG4 standard and the his-
- torical practice of the AT&T curses implementations, in
- that the echo bit is cleared when curses initializes the
- terminal state. BSD curses differed from this slightly;
- it left the echo bit on at initialization, but the BSD <B>raw</B>
- call turned it off as a side-effect. For best portabil-
- ity, set echo or noecho explicitly just after initializa-
- tion, even if your program remains in cooked mode.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <B>echo</B>, <B>noecho</B>, <B>halfdelay</B>, <B>intrflush</B>, <B>meta</B>, <B>node-</B>
- <B>lay</B>, <B>notimeout</B>, <B>noqiflush</B>, <B>qiflush</B>, <B>timeout</B>, and <B>wtimeout</B>
- may be macros.
-
- The <B>noraw</B> and <B>nocbreak</B> calls follow historical practice in
- that they attempt to restore to normal (`cooked') mode
- from raw and cbreak modes respectively. Mixing raw/noraw
- and cbreak/nocbreak calls leads to tty driver control
- states that are hard to predict or understand; it is not
- recommended.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="termio.7.html">termio(7)</A></B>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ <B>int</B> <B>intrflush(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
+ <B>int</B> <B>keypad(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
+ <B>int</B> <B>meta(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
+ <B>int</B> <B>nodelay(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
+ <B>int</B> <B>notimeout(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
+ <B>int</B> <B>nl(void);</B>
+ <B>int</B> <B>nonl(void);</B>
+ <B>int</B> <B>raw(void);</B>
+ <B>int</B> <B>noraw(void);</B>
+ <B>void</B> <B>qiflush(void);</B>
+ <B>void</B> <B>noqiflush(void);</B>
+ <B>int</B> <B>halfdelay(int</B> <I>tenths</I><B>);</B>
+ <B>void</B> <B>timeout(int</B> <I>delay</I><B>);</B>
+ <B>void</B> <B>wtimeout(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>int</B> <I>delay</I><B>);</B>
+
+ <B>int</B> <B>typeahead(int</B> <I>fd</I><B>);</B>
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ The <B>ncurses</B> library provides several functions which let an application
+ change the way input from the terminal is handled. Some are global,
+ applying to all windows. Others apply only to a specific window. Win-
+ dow-specific settings are not automatically applied to new or derived
+ windows. An application must apply these to each window, if the same
+ behavior is needed.
+
+
+</PRE><H3><a name="h3-cbreak_nocbreak">cbreak/nocbreak</a></H3><PRE>
+ Normally, the tty driver buffers typed characters until a newline or
+ carriage return is typed. The <B>cbreak</B> routine disables line buffering
+ and erase/kill character-processing (interrupt and flow control charac-
+ ters are unaffected), making characters typed by the user immediately
+ available to the program. The <B>nocbreak</B> routine returns the terminal to
+ normal (cooked) mode.
+
+ Initially the terminal may or may not be in <B>cbreak</B> mode, as the mode is
+ inherited; therefore, a program should call <B>cbreak</B> or <B>nocbreak</B> explic-
+ itly. Most interactive programs using <B>curses</B> set the <B>cbreak</B> mode.
+ Note that <B>cbreak</B> overrides <B>raw</B>. [See <B><A HREF="curs_getch.3X.html">curs_getch(3X)</A></B> for a discussion
+ of how these routines interact with <B>echo</B> and <B>noecho</B>.]
+
+
+</PRE><H3><a name="h3-echo_noecho">echo/noecho</a></H3><PRE>
+ The <B>echo</B> and <B>noecho</B> routines control whether characters typed by the
+ user are echoed by <B><A HREF="curs_getch.3X.html">getch(3X)</A></B> as they are typed. Echoing by the tty
+ driver is always disabled, but initially <B>getch</B> is in echo mode, so
+ characters typed are echoed. Authors of most interactive programs pre-
+ fer to do their own echoing in a controlled area of the screen, or not
+ to echo at all, so they disable echoing by calling <B>noecho</B>. [See
+ <B><A HREF="curs_getch.3X.html">curs_getch(3X)</A></B> for a discussion of how these routines interact with
+ <B>cbreak</B> and <B>nocbreak</B>.]
+
+
+</PRE><H3><a name="h3-halfdelay">halfdelay</a></H3><PRE>
+ The <B>halfdelay</B> routine is used for half-delay mode, which is similar to
+ <B>cbreak</B> mode in that characters typed by the user are immediately avail-
+ able to the program. However, after blocking for <I>tenths</I> tenths of sec-
+ onds, <B>ERR</B> is returned if nothing has been typed. The value of <I>tenths</I>
+ must be a number between 1 and 255. Use <B>nocbreak</B> to leave half-delay
+ mode.
+
+
+</PRE><H3><a name="h3-intrflush">intrflush</a></H3><PRE>
+ If the <B>intrflush</B> option is enabled (<I>bf</I> is <B>TRUE</B>), and an interrupt key
+ is pressed on the keyboard (interrupt, break, quit), all output in the
+ tty driver queue will be flushed, giving the effect of faster response
+ to the interrupt, but causing <B>curses</B> to have the wrong idea of what is
+ on the screen. Disabling the option (<I>bf</I> is <B>FALSE</B>) prevents the flush.
+ The default for the option is inherited from the tty driver settings.
+ The window argument is ignored.
+
+
+</PRE><H3><a name="h3-keypad">keypad</a></H3><PRE>
+ The <B>keypad</B> option enables the keypad of the user's terminal. If en-
+ abled (<I>bf</I> is <B>TRUE</B>), the user can press a function key (such as an arrow
+ key) and <B><A HREF="curs_getch.3X.html">wgetch(3X)</A></B> returns a single value representing the function
+ key, as in <B>KEY_LEFT</B>. If disabled (<I>bf</I> is <B>FALSE</B>), <B>curses</B> does not treat
+ function keys specially and the program has to interpret the escape se-
+ quences itself. If the keypad in the terminal can be turned on (made
+ to transmit) and off (made to work locally), turning on this option
+ causes the terminal keypad to be turned on when <B><A HREF="curs_getch.3X.html">wgetch(3X)</A></B> is called.
+ The default value for keypad is <B>FALSE</B>.
+
+
+</PRE><H3><a name="h3-meta">meta</a></H3><PRE>
+ Initially, whether the terminal returns 7 or 8 significant bits on in-
+ put depends on the control mode of the tty driver [see <B>termios(3)</B>]. To
+ force 8 bits to be returned, invoke <B>meta</B>(<I>win</I>, <B>TRUE</B>); this is equiva-
+ lent, under POSIX, to setting the CS8 flag on the terminal. To force 7
+ bits to be returned, invoke <B>meta</B>(<I>win</I>, <B>FALSE</B>); this is equivalent, under
+ POSIX, to setting the CS7 flag on the terminal. The window argument,
+ <I>win</I>, is always ignored. If the terminfo capabilities <B>smm</B> (meta_on) and
+ <B>rmm</B> (meta_off) are defined for the terminal, <B>smm</B> is sent to the termi-
+ nal when <B>meta</B>(<I>win</I>, <B>TRUE</B>) is called and <B>rmm</B> is sent when <B>meta</B>(<I>win</I>,
+ <B>FALSE</B>) is called.
+</PRE><H3><a name="h3-nl_nonl">nl/nonl</a></H3><PRE>
+ The <B>nl</B> and <B>nonl</B> routines control whether the underlying display device
+ translates the return key into newline on input.
+</PRE><H3><a name="h3-nodelay">nodelay</a></H3><PRE>
+ The <B>nodelay</B> option causes <B>getch</B> to be a non-blocking call. If no input
+ is ready, <B>getch</B> returns <B>ERR</B>. If disabled (<I>bf</I> is <B>FALSE</B>), <B>getch</B> waits
+ until a key is pressed.
+</PRE><H3><a name="h3-notimeout">notimeout</a></H3><PRE>
+ When interpreting an escape sequence, <B><A HREF="curs_getch.3X.html">wgetch(3X)</A></B> sets a timer while
+ waiting for the next character. If <B>notimeout(</B><I>win</I>, <B>TRUE</B>) is called,
+ then <B>wgetch</B> does not set a timer. The purpose of the timeout is to
+ differentiate between sequences received from a function key and those
+ typed by a user.
+</PRE><H3><a name="h3-raw_noraw">raw/noraw</a></H3><PRE>
+ The <B>raw</B> and <B>noraw</B> routines place the terminal into or out of raw mode.
+ Raw mode is similar to <B>cbreak</B> mode, in that characters typed are imme-
+ diately passed through to the user program. The differences are that
+ in raw mode, the interrupt, quit, suspend, and flow control characters
+ are all passed through uninterpreted, instead of generating a signal.
+ The behavior of the BREAK key depends on other bits in the tty driver
+ that are not set by <B>curses</B>.
+</PRE><H3><a name="h3-qiflush_noqiflush">qiflush/noqiflush</a></H3><PRE>
+ When the <B>noqiflush</B> routine is used, normal flush of input and output
+ queues associated with the <B>INTR</B>, <B>QUIT</B> and <B>SUSP</B> characters will not be
+ done [see <B>termios(3)</B>]. When <B>qiflush</B> is called, the queues will be
+ flushed when these control characters are read. You may want to call
+ <B>noqiflush</B> in a signal handler if you want output to continue as though
+ the interrupt had not occurred, after the handler exits.
+</PRE><H3><a name="h3-timeout_wtimeout">timeout/wtimeout</a></H3><PRE>
+ The <B>timeout</B> and <B>wtimeout</B> routines set blocking or non-blocking read for
+ a given window. If <I>delay</I> is negative, blocking read is used (i.e.,
+ waits indefinitely for input). If <I>delay</I> is zero, then non-blocking
+ read is used (i.e., read returns <B>ERR</B> if no input is waiting). If <I>delay</I>
+ is positive, then read blocks for <I>delay</I> milliseconds, and returns <B>ERR</B>
+ if there is still no input. Hence, these routines provide the same
+ functionality as <B>nodelay</B>, plus the additional capability of being able
+ to block for only <I>delay</I> milliseconds (where <I>delay</I> is positive).
+
+
+</PRE><H3><a name="h3-typeahead">typeahead</a></H3><PRE>
+ The <B>curses</B> library does "line-breakout optimization" by looking for ty-
+ peahead periodically while updating the screen. If input is found, and
+ it is coming from a tty, the current update is postponed until <B>re-</B>
+ <B><A HREF="refresh.3X.html">fresh(3X)</A></B> or <B>doupdate</B> is called again. This allows faster response to
+ commands typed in advance. Normally, the input FILE pointer passed to
+ <B>newterm</B>, or <B>stdin</B> in the case that <B>initscr</B> was used, will be used to do
+ this typeahead checking. The <B>typeahead</B> routine specifies that the file
+ descriptor <I>fd</I> is to be used to check for typeahead instead. If <I>fd</I> is
+ -1, then no typeahead checking is done.
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ All routines that return an integer return <B>ERR</B> upon failure and <B>OK</B>
+ (SVr4 specifies only "an integer value other than <B>ERR</B>") upon successful
+ completion, unless otherwise noted in the preceding routine descrip-
+ tions.
+
+ X/Open does not define any error conditions. In this implementation,
+ functions with a window parameter will return an error if it is null.
+ Any function will also return an error if the terminal was not initial-
+ ized. Also,
+
+ <B>halfdelay</B>
+ returns an error if its parameter is outside the range
+ 1..255.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
+
+ The ncurses library obeys the XPG4 standard and the historical practice
+ of the AT&T curses implementations, in that the echo bit is cleared
+ when curses initializes the terminal state. BSD curses differed from
+ this slightly; it left the echo bit on at initialization, but the BSD
+ <B>raw</B> call turned it off as a side-effect. For best portability, set
+ <B>echo</B> or <B>noecho</B> explicitly just after initialization, even if your pro-
+ gram remains in cooked mode.
+
+ The XSI Curses standard is ambiguous on the question of whether <B>raw</B>
+ should disable the CRLF translations controlled by <B>nl</B> and <B>nonl</B>. BSD
+ curses did turn off these translations; AT&T curses (at least as late
+ as SVr1) did not. We chose to do so, on the theory that a programmer
+ requesting raw input wants a clean (ideally 8-bit clean) connection
+ that the operating system will not alter.
+
+ When <B>keypad</B> is first enabled, ncurses loads the key-definitions for the
+ current terminal description. If the terminal description includes ex-
+ tended string capabilities, e.g., from using the <B>-x</B> option of <B>tic</B>, then
+ ncurses also defines keys for the capabilities whose names begin with
+ "k". The corresponding keycodes are generated and (depending on previ-
+ ous loads of terminal descriptions) may differ from one execution of a
+ program to the next. The generated keycodes are recognized by the <B>key-</B>
+ <B>name</B> function (which will then return a name beginning with "k" denot-
+ ing the terminfo capability name rather than "K", used for curses key-
+ names). On the other hand, an application can use <B>define_key</B> to estab-
+ lish a specific keycode for a given string. This makes it possible for
+ an application to check for an extended capability's presence with
+ <B>tigetstr</B>, and reassign the keycode to match its own needs.
+
+ Low-level applications can use <B>tigetstr</B> to obtain the definition of any
+ particular string capability. Higher-level applications which use the
+ curses <B>wgetch</B> and similar functions to return keycodes rely upon the
+ order in which the strings are loaded. If more than one key definition
+ has the same string value, then <B>wgetch</B> can return only one keycode.
+ Most curses implementations (including ncurses) load key definitions in
+ the order defined by the array of string capability names. The last
+ key to be loaded determines the keycode which will be returned. In
+ ncurses, you may also have extended capabilities interpreted as key
+ definitions. These are loaded after the predefined keys, and if a ca-
+ pability's value is the same as a previously-loaded key definition, the
+ later definition is the one used.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Note that <B>echo</B>, <B>noecho</B>, <B>halfdelay</B>, <B>intrflush</B>, <B>meta</B>, <B>nl</B>, <B>nonl</B>, <B>nodelay</B>,
+ <B>notimeout</B>, <B>noqiflush</B>, <B>qiflush</B>, <B>timeout</B>, and <B>wtimeout</B> may be macros.
+
+ The <B>noraw</B> and <B>nocbreak</B> calls follow historical practice in that they
+ attempt to restore to normal ("cooked") mode from raw and cbreak modes
+ respectively. Mixing raw/noraw and cbreak/nocbreak calls leads to tty
+ driver control states that are hard to predict or understand; it is not
+ recommended.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <B><A HREF="curses.3X.html">curses(3X)</A></B>, <B><A HREF="curs_getch.3X.html">curs_getch(3X)</A></B>, <B><A HREF="curs_initscr.3X.html">curs_initscr(3X)</A></B>, <B><A HREF="curs_util.3X.html">curs_util(3X)</A></B>, <B>de-</B>
+ <B><A HREF="define_key.3X.html">fine_key(3X)</A></B>, <B>termios(3)</B>
+ <B><A HREF="curs_inopts.3X.html">curs_inopts(3X)</A></B>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-cbreak_nocbreak">cbreak/nocbreak</a></li>
+<li><a href="#h3-echo_noecho">echo/noecho</a></li>
+<li><a href="#h3-halfdelay">halfdelay</a></li>
+<li><a href="#h3-intrflush">intrflush</a></li>
+<li><a href="#h3-keypad">keypad</a></li>
+<li><a href="#h3-meta">meta</a></li>
+<li><a href="#h3-nl_nonl">nl/nonl</a></li>
+<li><a href="#h3-nodelay">nodelay</a></li>
+<li><a href="#h3-notimeout">notimeout</a></li>
+<li><a href="#h3-raw_noraw">raw/noraw</a></li>
+<li><a href="#h3-qiflush_noqiflush">qiflush/noqiflush</a></li>
+<li><a href="#h3-timeout_wtimeout">timeout/wtimeout</a></li>
+<li><a href="#h3-typeahead">typeahead</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>