| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> |
| <!-- |
| **************************************************************************** |
| * Copyright (c) 1998-2003,2005 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.13 2005/05/15 16:18:07 tom Exp @ |
| --> |
| <HTML> |
| <HEAD> |
| <TITLE>curs_inopts 3x</TITLE> |
| <link rev=made href="mailto:bug-ncurses@gnu.org"> |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
| </HEAD> |
| <BODY> |
| <H1>curs_inopts 3x</H1> |
| <HR> |
| <PRE> |
| <!-- Manpage converted by man2html 3.0.1 --> |
| <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| |
| |
| |
| |
| </PRE> |
| <H2>NAME</H2><PRE> |
| <STRONG>cbreak</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, |
| <STRONG>keypad</STRONG>, <STRONG>meta</STRONG>, <STRONG>nodelay</STRONG>, <STRONG>notimeout</STRONG>, <STRONG>raw</STRONG>, <STRONG>noraw</STRONG>, <STRONG>noqiflush</STRONG>, |
| <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, <STRONG>wtimeout</STRONG>, <STRONG>typeahead</STRONG> - <STRONG>curses</STRONG> input |
| options |
| |
| |
| </PRE> |
| <H2>SYNOPSIS</H2><PRE> |
| <STRONG>#include</STRONG> <STRONG><curses.h></STRONG> |
| |
| <STRONG>int</STRONG> <STRONG>cbreak(void);</STRONG> |
| <STRONG>int</STRONG> <STRONG>nocbreak(void);</STRONG> |
| <STRONG>int</STRONG> <STRONG>echo(void);</STRONG> |
| <STRONG>int</STRONG> <STRONG>noecho(void);</STRONG> |
| <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 unaffect- |
| ed), 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 initial- |
| ly <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 re- |
| turned 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 in- |
| terrupt, 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 inher- |
| ited from the tty driver settings. The window argument 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 local- |
| ly), turning on this option causes the terminal keypad 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 driv- |
| er [see <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>]. To force 8 bits to be returned, in- |
| voke <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 equivalent, |
| under POSIX, to setting the CS7 flag on the terminal. 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 be- |
| tween 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 us- |
| er program. The differences are that in raw mode, the in- |
| terrupt, 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 (i.e., waits indefinitely for in- |
| put). If <EM>delay</EM> is zero, then non-blocking read is used |
| (i.e., 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>de-</EM> |
| <EM>lay</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. |
| |
| X/Open does not define any error conditions. In this im- |
| plementation, functions with a window parameter will re- |
| turn an error if it is null. Any function will also re- |
| turn an error if the terminal was not initialized. Also, |
| |
| <STRONG>halfdelay</STRONG> |
| returns an error if its parameter is outside |
| the range 1..255. |
| |
| |
| </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 portabili- |
| ty, 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> |
| |
| |
| |
| <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> |
| </PRE> |
| <HR> |
| <ADDRESS> |
| Man(1) output converted with |
| <a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a> |
| </ADDRESS> |
| </BODY> |
| </HTML> |