- <STRONG>int</STRONG> <STRONG>halfdelay(int</STRONG> <STRONG>tenths);</STRONG>
- <STRONG>int</STRONG> <STRONG>intrflush(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>keypad(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>meta(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>nodelay(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>raw(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>noraw(void);</STRONG>
- <STRONG>void</STRONG> <STRONG>noqiflush(void);</STRONG>
- <STRONG>void</STRONG> <STRONG>qiflush(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>notimeout(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>void</STRONG> <STRONG>timeout(int</STRONG> <STRONG>delay);</STRONG>
- <STRONG>void</STRONG> <STRONG>wtimeout(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>delay);</STRONG>
- <STRONG>int</STRONG> <STRONG>typeahead(int</STRONG> <STRONG>fd);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- Normally, the tty driver buffers typed characters until a
- newline or carriage return is typed. The <STRONG>cbreak</STRONG> 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 <STRONG>nocbreak</STRONG> routine returns
- the terminal to normal (cooked) mode.
-
- Initially the terminal may or may not be in <STRONG>cbreak</STRONG> mode,
- as the mode is inherited; therefore, a program should call
- <STRONG>cbreak</STRONG> or <STRONG>nocbreak</STRONG> explicitly. Most interactive programs
- using <STRONG>curses</STRONG> set the <STRONG>cbreak</STRONG> mode. Note that <STRONG>cbreak</STRONG> over-
- rides <STRONG>raw</STRONG>. [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a discussion of how
- these routines interact with <STRONG>echo</STRONG> and <STRONG>noecho</STRONG>.]
-
- The <STRONG>echo</STRONG> and <STRONG>noecho</STRONG> routines control whether characters
- typed by the user are echoed by <STRONG>getch</STRONG> as they are typed.
- Echoing by the tty driver is always disabled, but ini-
- tially <STRONG>getch</STRONG> 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
- <STRONG>noecho</STRONG>. [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a discussion of how these
- routines interact with <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG>.]
-
- The <STRONG>halfdelay</STRONG> routine is used for half-delay mode, which
- is similar to <STRONG>cbreak</STRONG> mode in that characters typed by the
- user are immediately available to the program. However,
- after blocking for <EM>tenths</EM> tenths of seconds, ERR is
- returned if nothing has been typed. The value of <STRONG>tenths</STRONG>
- must be a number between 1 and 255. Use <STRONG>nocbreak</STRONG> to leave
- half-delay mode.
-
- If the <STRONG>intrflush</STRONG> option is enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), 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 <STRONG>curses</STRONG> to have the wrong idea of
- what is on the screen. Disabling (<EM>bf</EM> is <STRONG>FALSE</STRONG>), the
- option prevents the flush. The default for the option is
- inherited from the tty driver settings. The window argu-
- ment is ignored.
-
- The <STRONG>keypad</STRONG> option enables the keypad of the user's termi-
- nal. If enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the user can press a func-
- tion key (such as an arrow key) and <STRONG>wgetch</STRONG> returns a sin-
- gle value representing the function key, as in <STRONG>KEY_LEFT</STRONG>.
- If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <STRONG>curses</STRONG> 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 <STRONG>wgetch</STRONG> 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 <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>]. To force 8 bits to be returned,
- invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>); this is equivalent, under POSIX,
- to setting the CS8 flag on the terminal. To force 7 bits
- to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>); this is equiva-
- lent, under POSIX, to setting the CS7 flag on the termi-
- nal. The window argument, <EM>win</EM>, is always ignored. If the
- terminfo capabilities <STRONG>smm</STRONG> (meta_on) and <STRONG>rmm</STRONG> (meta_off) are
- defined for the terminal, <STRONG>smm</STRONG> is sent to the terminal when
- <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>) is called and <STRONG>rmm</STRONG> is sent when <STRONG>meta</STRONG>(<EM>win</EM>,
- <STRONG>FALSE</STRONG>) is called.
-
- The <STRONG>nodelay</STRONG> option causes <STRONG>getch</STRONG> to be a non-blocking call.
- If no input is ready, <STRONG>getch</STRONG> returns <STRONG>ERR</STRONG>. If disabled (<EM>bf</EM>
- is <STRONG>FALSE</STRONG>), <STRONG>getch</STRONG> waits until a key is pressed.
-
- While interpreting an input escape sequence, <STRONG>wgetch</STRONG> sets a
- timer while waiting for the next character. If <STRONG>notime-</STRONG>
- <STRONG>out(</STRONG><EM>win</EM>, <STRONG>TRUE</STRONG>) is called, then <STRONG>wgetch</STRONG> 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 <STRONG>raw</STRONG> and <STRONG>noraw</STRONG> routines place the terminal into or out
- of raw mode. Raw mode is similar to <STRONG>cbreak</STRONG> 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 <STRONG>curses</STRONG>.
-
- When the <STRONG>noqiflush</STRONG> routine is used, normal flush of input
- and output queues associated with the <STRONG>INTR</STRONG>, <STRONG>QUIT</STRONG> and <STRONG>SUSP</STRONG>
- characters will not be done [see <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>]. When <STRONG>qiflush</STRONG>
- is called, the queues will be flushed when these control
- characters are read. You may want to call <STRONG>noqiflush()</STRONG> in
- a signal handler if you want output to continue as though
- the interrupt had not occurred, after the handler exits.
-
- The <STRONG>timeout</STRONG> and <STRONG>wtimeout</STRONG> routines set blocking or non-
- blocking read for a given window. If <EM>delay</EM> is negative,
- blocking read is used (<EM>i</EM>.<EM>e</EM>., waits indefinitely for
- input). If <EM>delay</EM> is zero, then non-blocking read is used
- (<EM>i</EM>.<EM>e</EM>., read returns <STRONG>ERR</STRONG> if no input is waiting). If <EM>delay</EM>
- is positive, then read blocks for <EM>delay</EM> milliseconds, and
- returns <STRONG>ERR</STRONG> if there is still no input. Hence, these rou-
- tines provide the same functionality as <STRONG>nodelay</STRONG>, plus the
- additional capability of being able to block for only
- <EM>delay</EM> milliseconds (where <EM>delay</EM> is positive).
-
- The <STRONG>curses</STRONG> 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 <STRONG>refresh</STRONG> or <STRONG>doupdate</STRONG>
- is called again. This allows faster response to commands
- typed in advance. Normally, the input FILE pointer passed
- to <STRONG>newterm</STRONG>, or <STRONG>stdin</STRONG> in the case that <STRONG>initscr</STRONG> was used,
- will be used to do this typeahead checking. The <STRONG>typeahead</STRONG>
- routine specifies that the file descriptor <EM>fd</EM> is to be
- used to check for typeahead instead. If <EM>fd</EM> is -1, then no
- typeahead checking is done.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All routines that return an integer return <STRONG>ERR</STRONG> upon fail-
- ure and OK (SVr4 specifies only "an integer value other
- than <STRONG>ERR</STRONG>") 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 <STRONG>raw</STRONG>
- 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 <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>, <STRONG>node-</STRONG>
- <STRONG>lay</STRONG>, <STRONG>notimeout</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, and <STRONG>wtimeout</STRONG>
- may be macros.
-
- The <STRONG>noraw</STRONG> and <STRONG>nocbreak</STRONG> 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>
- <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-