dwww Home | Manual pages | Find package

inopts(3NCURSES)                 Library calls                 inopts(3NCURSES)

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 <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(3NCURSES) in the non-wide character curses  API
       and  wget_wch(3NCURSES)  in  the wide character API.  In addition to the
       variant forms of these described in ncurses(3NCURSES), the curses  func-
       tions  wgetstr(3NCURSES)  and wget_wstr(3NCURSES) and their own variants
       call the appropriate 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 writ-
       ten to the curses window by the input character reading function as they
       are  typed.   curses  always disables the terminal driver's own echoing.
       By default, a curses screen's echo option is set.  Authors of  most  in-
       teractive  programs  prefer to do their own echoing in a controlled 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 pro-
       gram.  However, after blocking for tenths tenth-seconds, an input  char-
       acter 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), the input character reading function returns a value  rep-
       resenting  the  function  key,  such  as  KEY_LEFT.  (Wide-character API
       users: wget_wch(3NCURSES) returns KEY_CODE_YES to  indicate  the  avail-
       ability  of  a function key code in its wch parameter.)  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 parameter.  By  default,  a  win-
       dow'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 sys-
       tems, 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 terminal and dis-
       abling 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-block-
       ing 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 distinguish se-
       quences produced by a function key from those typed by a user.  To  con-
       figure the timeout rather than disabling it, see wtimeout below.

   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 mak-
       ing the library's model  of  the  screen  contents  incorrect.   Calling
       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 interrupt had not oc-
       curred.

   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 generat-
       ing  a  signal  or  acting  on I/O flow.  The behavior of the terminal's
       “Break” key (if any) depends on terminal driver configuration parameters
       that curses does not handle.  noraw restores  the  terminal's  canonical
       (“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 for input while  updating
       the  screen.   If  any  is found, the update is postponed until the next
       wrefresh(3NCURSES) or doupdate(3NCURSES) call, allowing faster  response
       to  user key strokes.  The library tests the file descriptor correspond-
       ing to the FILE stream pointer passed to newterm(3NCURSES) (or stdin  if
       initscr(3NCURSES)  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(3NCURSES),     newterm(3NCURSES),     or
           setupterm(3NCURSES), 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.

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 un-
       derstand; doing so is not recommended.

EXTENSIONS
       ncurses provides four “is_” functions corresponding to cbreak, echo, nl,
       and raw, permitting their states to be queried by the application.

                            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 de-
       scribes 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 canon-
       ical (“cooked”) line discipline.

       X/Open Curses is ambiguous regarding whether raw should disable the car-
       riage  return  and  line  feed  translation feature controlled by nl and
       nonl.  BSD curses did turn 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 oper-
       ating system will not alter.

       When keypad is first enabled, ncurses loads the key definitions for  the
       current  terminal description.  If the terminal 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  execution
       of  a  program  to  the next.  The generated key codes are recognized by
       keyname(3NCURSES), 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(3NCURSES) to bind a
       specific key to a string of the programmer's choice.  This  feature  en-
       ables  an application to check for its presence with tigetstr(3NCURSES),
       and reassign the key code to match its own needs.

       Low-level applications can use tigetstr(3NCURSES) to obtain the  defini-
       tion  of any string capability.  curses applications use the input char-
       acter reading function to obtain key codes from input and rely upon  the
       order  in  which the string capabilities are loaded.  Multiple key capa-
       bility strings can have the same value, but the input character  reading
       function 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
       terminfo_variables(3NCURSES).  The last capability read using a particu-
       lar  definition determines the key code to be reported.  In ncurses, ex-
       tended capabilities can be 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 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 newlines
       to carriage return/line feed on output as well as input.  X/Open  Curses
       documents  the  use  of these functions only for input.  This difference
       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 were controlled via a single option
       “CRMOD”, while the latter separates these features.  Because  that  con-
       version  interferes with output optimization, ncurses 6.2 (2020) amended
       nl and nonl to eliminate their effect on output.

SEE ALSO
       ncurses(3NCURSES), getch(3NCURSES),  initscr(3NCURSES),  util(3NCURSES),
       define_key(3NCURSES), termios(3), terminfo_variables(3NCURSES)

ncurses 6.5                        2025-02-01                  inopts(3NCURSES)

Generated by dwww version 1.16 on Sat Oct 3 03:32:07 CEST 2026.