nodelay(3x) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

nodelay(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)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3