svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
halfdelay(3x)
curs_inopts(3x) Library calls curs_inopts(3x)
NAME
cbreak, echo, halfdelay, intrflush, is_cbreak, is_echo, is_nl, is_raw,
keypad, meta, nl, nocbreak, nodelay, noecho, nonl, noqiflush, noraw,
notimeout, qiflush, raw, timeout, wtimeout, typeahead - get and set
curses terminal input options
SYNOPSIS
#include <ncursesw/curses.h>
int cbreak(void);
int nocbreak(void);
int echo(void);
int noecho(void);
int intrflush(WINDOW * win /* ignored */, bool bf);
int keypad(WINDOW * win, bool bf);
int meta(WINDOW * win /* ignored */, bool bf);
int nodelay(WINDOW * win, bool bf);
int notimeout(WINDOW * win, bool bf);
int nl(void);
int nonl(void);
void qiflush(void);
void noqiflush(void);
int raw(void);
int noraw(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);
DESCRIPTION
curses offers configurable parameters permitting an application to con‐
trol the handling of input from the terminal. Some, such as those af‐
fecting the terminal's mode or line discipline, are global, applying to
all windows; others apply only to a specific window. The library does
not automatically apply such parameters to new or derived windows; an
application must configure each window for the desired behavior.
Some descriptions below make reference to an input character reading
function: this is wgetch(3X) in the non-wide character curses API and
wget_wch(3X) in the wide character API. In addition to the variant
forms of these described in ncurses(3X), the curses functions
wgetstr(3X) and wget_wstr(3X) and their own variants call the appropri‐
ate input character reading function.
cbreak, nocbreak
Normally, the terminal driver buffers typed characters, not delivering
them to an application until a line feed or carriage return is typed.
This canonical (“cooked”) line discipline also supports software flow
control, simple line editing functions (character and word erase, and
whole-line erasure or “kill”), and job control. cbreak configures the
terminal in cbreak mode, which disables line buffering and erase and
kill character processing — the interrupt, quit, suspend, and flow con‐
trol characters are unaffected — and makes characters typed by the user
immediately available to the program. nocbreak restores canonical
(“cooked”) mode.
The state of the terminal is unknown to a curses application when it
starts; therefore, a program should call cbreak or nocbreak explicitly.
Most interactive programs using curses set cbreak mode. Calling cbreak
overrides raw. The man page for the input character reading function
discusses how cbreak and nocbreak interact with echo and noecho.
echo, noecho
echo and noecho determine whether characters typed by the user are
written to the curses window by the input character reading function as
they are typed. curses always disables the terminal driver's own echo‐
ing. By default, a curses screen's echo option is set. Authors of
most interactive programs prefer to do their own echoing in a con‐
trolled area of the screen, or not to echo at all, so they call noecho.
The man page for the input character reading function discusses how
echo and noecho interact with cbreak and nocbreak.
halfdelay
halfdelay configures half-delay mode, which is similar to cbreak mode
in that characters typed by the user are immediately available to the
program. However, after blocking for tenths tenth-seconds, an input
character reading function returns ERR if no input is pending. The
value of tenths must be between 1 and 255. Use nocbreak to leave half-
delay mode.
intrflush
intrflush calls qiflush (see below) if bf is TRUE, and noqiflush if bf
is FALSE. It ignores its win argument.
keypad
keypad enables recognition of a terminal's function keys. If enabled
(bf is TRUE) then when an input character reading function reads ESC,
it waits for further input corresponding to an escape sequence defined
by the terminal type description. If a valid sequence populates the
input stream, the input character reading function returns a value rep‐
resenting the function key, such as KEY_LEFT. (Wide-character API
users: wget_wch(3X) returns KEY_CODE_YES to indicate the availability
of a function key code in its wch parameter.) If the sequence is in‐
valid, the input character reading function returns only its last char‐
acter. If disabled (bf is FALSE), curses does not treat function keys
specially and the program has to interpret escape sequences itself. If
the terminal's keypad can be turned on (made to transmit) and off (made
to work locally), keypad configures it consistently with the bf parame‐
ter. By default, a window's keypad mode is off.
meta
Initially, whether the terminal returns 7- or 8-bit character codes on
input depends on the configuration of the terminal driver; on POSIX
systems, see termios(3). To force 8 bits to be returned, call
meta(..., TRUE); this is equivalent, on POSIX systems, to setting the
CS8 flag on the terminal. To force 7 bits to be returned, call
meta(..., FALSE); this is equivalent, on POSIX systems, to setting the
CS7 flag on the terminal. curses ignores the window argument win. If
the terminfo string capabilities meta_on (smm) and meta_off (rmm) are
defined for the terminal type, enabling meta mode sends smm to the ter‐
minal and disabling it sends rmm to the terminal.
nl, nonl
Initially, whether the terminal reports a carriage return using the
character code for a line feed in cbreak or raw modes depends on the
configuration of the terminal driver; see termios(3). nl configures
the terminal to perform this translation. nonl disables it. Under its
canonical (“cooked”) line discipline, the terminal driver always trans‐
lates carriage returns to line feeds.
nodelay
nodelay configures the input character reading function to be non-
blocking for window win. If no input is ready, the reading function
returns ERR. If disabled (bf is FALSE), the reading function does not
return until it has input.
notimeout
When the input character reading function reads an ESC character, it
sets a timer while waiting for the next character. notimeout(win,
TRUE) disables this timer. The purpose of the timeout is to distin‐
guish sequences produced by a function key from those typed by a user.
If this timer is disabled, curses waits forever for subsequent key‐
strokes until it determines the escape sequence to be valid or invalid.
qiflush, noqiflush
qiflush and noqiflush configure the terminal driver's treatment of its
input and output queues when it handles the interrupt, suspend, or quit
characters under the canonical (“cooked”) or cbreak line disciplines on
POSIX systems; see termios(3). The default behavior is inherited from
the terminal driver settings. Calling qiflush configures the terminal
to flush the queues (discarding their contents) when any of these
events occurs, giving the impression of faster response to user input,
but making the library's model of the screen contents incorrect. Call‐
ing noqiflush prevents such flushing, but might frustrate impatient
users on slow connections if a curses update of the screen is in
progress when the event occurs; see typeahead below for a mitigation of
this problem. You may want to call noqiflush in a signal handler if,
after the handler exits, you want output to continue as though the sig‐
nal had not occurred.
raw, noraw
raw configures the terminal to read input in raw mode, which is similar
to cbreak mode (see cbreak above) except that it furthermore passes
through the terminal's configured interrupt, quit, suspend, and flow
control characters uninterpreted to the application, instead of gener‐
ating a signal or acting on I/O flow. The behavior of the terminal's
“Break” key (if any) depends on terminal driver configuration parame‐
ters that curses does not handle. noraw restores the terminal's canon‐
ical (“cooked”) line discipline.
timeout, wtimeout
wtimeout configures whether a curses input character reading function
called on window win uses blocking or non-blocking reads. If delay is
negative, curses uses a blocking read, waiting indefinitely for input.
If delay is zero, the read is non-blocking; an input character reading
function returns ERR if no input is pending. If delay is positive, an
input character reading function blocks for delay milliseconds, and re‐
turns ERR if the delay elapses and there is still no input pending.
timeout calls wtimeout on stdscr.
typeahead
Normally, a curses library checks the terminal's input file descriptor
for activity with poll(2) or select(2) while updating the screen; if it
finds any, it postpones output until the next wrefresh(3X) or
doupdate(3X) call, allowing faster response to user key strokes. The
library tests the file descriptor corresponding to the FILE stream
pointer passed to newterm(3X) (or stdin if initscr(3X) was called), for
pending input. typeahead instructs curses to test file descriptor fd
instead. An fd of -1 disables the check.
RETURN VALUE
timeout and wtimeout return no value.
cbreak, nocbreak, echo, noecho, halfdelay, intrflush, keypad, meta,
nodelay, notimeout, nl, nonl, raw, noraw, and typeahead return OK on
success and ERR on failure.
In ncurses, the functions in the previous paragraph return ERR if
• the library's TERMINAL structure for the device has not been ini‐
tialized with initscr(3X), newterm(3X), or setupterm(3X), or
• win is a null pointer (except with intrflush and meta, which ignore
its value).
Further, halfdelay returns ERR if delay is outside the range 1..255.
See section “EXTENSIONS” below for the return values of is_cbreak,
is_echo, is_nl, and is_raw.
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
box; cbp-1 | cbp-1 l | l . ATTRIBUTE TYPE ATTRIBUTE VALUE = Availabil‐
ity library/ncurses = Stability Uncommitted
NOTES
echo, noecho, halfdelay, intrflush, meta, nl, nonl, nodelay, notimeout,
noqiflush, qiflush, timeout, and wtimeout may be implemented as macros.
noraw and nocbreak follow historical practice in that they attempt to
restore the terminal's canonical (“cooked”) line discipline from raw
and cbreak, respectively. Mixing raw/noraw calls with cbreak/nocbreak
calls leads to terminal driver control states that are hard to predict
or understand; doing so is not recommended.
curses documentation uses the terms “delay” and “timeout” freely to de‐
scribe two related but distinct aspects of input handling, at the risk
of confusing the user. The functions halfdelay, nodelay, timeout, and
wtimeout configure whether the input character reading function
(wgetch(3X) or wget_wch(3X)) waits for keyboard input to begin, and for
how long. keypad configures whether that function waits for further
input if the first character it reads is ESC. Calling notimeout, which
has nothing to do with timeout or wtimeout, makes this delay in expec‐
tation of further characters effectively infinite. X/Open Curses af‐
fords no means of otherwise configuring the length of this second de‐
lay, but an AIX and ncurses extension, ESCDELAY, is available both as
an environment variable and a global symbol permitting the application
to do so; see ncurses(3X) and curs_variables(3X).
Source code for open source software components in Oracle Solaris can
be found at https://www.oracle.com/downloads/opensource/solaris-source-
code-downloads.html.
This software was built from source available at:
https://github.com/oracle/solaris-userland
The original community source was downloaded from:
https://invisible-mirror.net/archives/ncurses/cur‐
rent/ncurses-6.5-20250614.tgz
Further information about this software can be found on the open source
community website at https://invisible-island.net/ncurses/.
EXTENSIONS
ncurses provides four “is_” functions corresponding to cbreak, echo,
nl, and raw, permitting their states to be queried by the application.
center; Lb Lb Lb L L L . Query Set Reset _
is_cbreak cbreak nocbreak is_echo echo noecho is_nl nl nonl
is_raw raw noraw
In each case, the function returns
1 if the option is set,
0 if the option is unset, or
-1 if the library's TERMINAL structure for the device has not been
initialized.
PORTABILITY
Applications employing ncurses extensions should condition their use on
the visibility of the NCURSES_VERSION preprocessor macro.
Except as noted in section “EXTENSIONS” above, X/Open Curses Issue 4
describes these functions. It specifies no error conditions for them.
SVr4 describes a successful return value only as “an integer value
other than ERR”.
ncurses follows X/Open Curses and the historical practice of System V
curses, clearing the terminal driver's “echo” flag when initializing
the screen. BSD curses did not, but its raw function turned it off as
a side effect. For best portability, call echo or noecho explicitly
just after initialization, even if your program retains the terminal's
canonical (“cooked”) line discipline.
X/Open Curses is ambiguous regarding whether raw should disable the
carriage return and line feed translation feature controlled by nl and
nonl. BSD curses turned off these translations; System V curses did
not. ncurses does so, on the assumption that a programmer requesting
raw input wants a clean (ideally, 8-bit clean) connection that the op‐
erating system will not alter.
When keypad is first enabled, ncurses loads the key definitions for the
current terminal type description. If that description includes ex‐
tended string capabilities, for example, by using the -x option of
tic(1), then ncurses also defines keys for the capabilities whose names
begin with “k”. Corresponding key codes are generated and (depending
on previous loads of terminal descriptions) may differ from one execu‐
tion of a program to the next. The generated key codes are recognized
by keyname(3X), which then returns 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
bind a specific key to a string of the programmer's choice. This fea‐
ture enables an application to check for its presence with
tigetstr(3X), and reassign the key code to match its own needs.
Low-level applications can use tigetstr(3X) to obtain the definition of
any string capability. curses applications use the input character
reading function to obtain key codes from input and rely upon the order
in which the string capabilities are loaded. Multiple key capability
strings can have the same value, but the input character reading func‐
tion can report only one key code. Most curses implementations (in‐
cluding ncurses) load key definitions in the order they appear in the
strfnames array of string capability names; see term_variables(3X).
The last capability read using a particular definition determines the
key code to be reported. In ncurses, extended capabilities can be in‐
terpreted 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 library uses the later definition.
HISTORY
4BSD (1980) introduced echo, noecho, nl, nonl, raw, and noraw.
SVr2 (1984) featured a new terminal driver, extending the curses API to
support it with cbreak, nocbreak, intrflush, keypad, meta, nodelay, and
typeahead.
SVr3 (1987) added halfdelay, notimeout, and wtimeout. qiflush and
noqiflush appeared in SVr3.1 (1987), at which point intrflush became a
wrapper for either of these functions, depending on the value of its
Boolean argument. SVr3.1 also added timeout.
ncurses 6.5 (2024) introduced is_cbreak, is_echo, is_nl, and is_raw.
Formerly, ncurses used nl and nonl to control the conversion of new‐
lines to carriage return/line feed on output as well as input. X/Open
Curses documents the use of these functions only for input. This dif‐
ference arose from converting the pcurses source (1986), which used
ioctl(2) calls and the sgttyb structure, to termios (the POSIX terminal
API). In the former, both input and output conversions were controlled
via a single option “CRMOD”, while the latter separates these features.
Because that conversion interferes with output optimization, ncurses
6.2 (2020) amended nl and nonl to eliminate their effect on output.
SEE ALSO
curses(3X), curs_getch(3X), curs_initscr(3X), curs_util(3X),
define_key(3X), termios(3), term_variables(3X)
ncurses 6.5 2025-04-05 curs_inopts(3x)