| Main index | Section 3 | Options |
#include <curses.h>int cbreak(void); int nocbreak(void);
int echo(void); int noecho(void);
int intrflush(WINDOW *win, bool bf); int keypad(WINDOW *win, bool bf); int meta(WINDOW *win, bool bf); int nodelay(WINDOW *win, bool bf); int notimeout(WINDOW *win, bool bf);
int nl(void); int nonl(void);
int raw(void); int noraw(void);
void qiflush(void); void noqiflush(void);
int halfdelay(int tenths); void timeout(int delay); void wtimeout(WINDOW *win, int delay);
int typeahead(int fd);
/* extensions */ int is_cbreak(void); int is_echo(void); int is_nl(void); int is_raw(void);
Initially the terminal may or may not be in cbreak mode, as the mode is inherited; therefore, a program should call cbreak or nocbreak explicitly. Most interactive programs using curses set the cbreak mode. Note that cbreak overrides raw. [See curs_getch(3X) for a discussion of how these routines interact with echo and noecho.]
X/Open Curses does not specify 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 initialized. Also,
halfdelay returns an error if its parameter is outside the range 1..255.
noraw and nocbreak follow historical practice in that they attempt to restore normal (cooked) mode from raw and cbreak modes respectively. Mixing raw/ noraw and cbreak/ nocbreak calls leads to terminal driver control states that are hard to predict or understand; doing so is not recommended.
In each case, the function returns
| 1 | if the flag is set, |
| 0 | if the flag is reset, or |
| -1 | if the library is not initialized. |
Except as noted in section EXTENSIONS above, X/Open Curses, Issue 4, Version 2 describes these functions.
ncurses follows X/Open Curses and the historical practice of 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 raw call turned it off as a side effect. For best portability, set echo or noecho explicitly just after initialization, even if your program remains in cooked mode.
X/Open Curses is ambiguous regarding whether raw should disable the CR/LF translations controlled by nl and nonl. BSD curses did turn off these translations; AT&T curses (at least as late as SVr1) did not. ncurses does so, on the assumption that a programmer requesting raw input wants a clean (ideally, 8-bit clean) connection that the operating system will not alter.
When keypad is first enabled, ncurses loads the key definitions for the current terminal description. If the terminal description includes extended string capabilities, e.g., from using the -x option of tic, then ncurses also defines keys for the capabilities whose names begin with k. The corresponding keycodes are generated and (depending on previous loads of terminal descriptions) may differ from one execution of a program to the next. The generated keycodes are recognized by the keyname(3X) function (which will then return a name beginning with k denoting the terminfo capability name rather than K, used for curses key names). On the other hand, an application can use define_key(3X) to establish a specific keycode for a given string. This makes it possible for an application to check for an extended capability's presence with tigetstr, and reassign the keycode to match its own needs.
Low-level applications can use tigetstr to obtain the definition of any particular string capability. Higher-level applications which use the curses wgetch 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 wgetch 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 capability's value is the same as a previously-loaded key definition, the later definition is the one used.
| 2024-04-13 | curs_inopts (3X) | ncurses 6.5 |
| Main index | Section 3 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.
| “ | There are two major products of Berkeley, CA -- LSD and UNIX. We don't believe this to be strictly by coincidence. | ” |
| — Jeremy S. Anderson | ||