Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
curs_outopts(3X)		  Library calls 		curs_outopts(3X)

NAME
     clearok,  idcok, idlok, immedok, leaveok, scrollok, setscrreg, wsetscrreg -
     set curses output options

SYNOPSIS
     #include <curses.h>

     int clearok(WINDOW * win, bool bf);
     void idcok(WINDOW * win, bool bf);
     int idlok(WINDOW * win, bool bf);
     void immedok(WINDOW * win, bool bf);
     int leaveok(WINDOW * win, bool bf);
     int scrollok(WINDOW * win, bool bf);

     int setscrreg(int top, int bot);
     int wsetscrreg(WINDOW * win, int top, int bot);

DESCRIPTION
     These functions configure properties of curses windows  that  affect  their
     manner  of  output.   Boolean-valued  properties are initially FALSE except
     where noted.  endwin(3X) resets any terminal modes corresponding  to  these
     properties; an application need not restore their initial values.

   clearok
     Setting  win's clearok property to TRUE causes the next wrefresh call on it
     to clear the terminal screen and redraw it entirely.  This property is use-
     ful to restore the contents of the screen (perhaps because another  process
     has  written  to the terminal), or in some cases to achieve a more pleasing
     visual effect.   If  win  is  curscr  (see  curs_variables(3X)),  the  next
     wrefresh  call on any window causes the terminal screen to clear and redraw
     as above.	wrefresh resets this property to FALSE.

   idcok
     (This property defaults TRUE.)  Setting win's idcok property to FALSE  pre-
     vents  curses from using the insert/delete character capabilities of termi-
     nal types possessing them according to the terminfo database.

   idlok
     Setting win's idlok property to TRUE causes curses to  consider  using  the
     insert/delete line capabilities of terminal types possessing them according
     to the terminfo database.	Enable this option if the application explicitly
     requires  these  operations,  as a full-screen text editor might; otherwise
     the results may be visually annoying to the user.

   immedok
     If immedok is called with TRUE as second argument, changes  to  the  window
     image,  such  as those caused by waddch, wclrtobot, or wscrl, automatically
     cause a call to wrefresh.	Setting a window's immedok property may  degrade
     performance  considerably	if  writes  are  frequent.  Calling immedok with
     FALSE as second argument restores the default  behavior,  deferring  screen
     updates  until  a	refresh is needed or explicitly directed by the applica-
     tion.

   leaveok
     Normally, curses leaves the hardware cursor at the library's  cursor  loca-
     tion  of  the window being refreshed.  The leaveok option allows the cursor
     to be left wherever the update happens to leave it.  It is useful	for  ap-
     plications  that  do not employ a visible cursor, since it reduces the need
     for cursor motions.

   scrollok
     The scrollok option controls what happens when a window's cursor moves  off
     the edge of the window or scrolling region, as a result of either (1) writ-
     ing  a newline anywhere on its bottom line, or (2) writing a character that
     advances the cursor to the last position on its bottom line.   If	disabled
     (bf  is  FALSE), curses leaves the cursor on the bottom line of the window.
     If enabled (bf is TRUE), curses scrolls the window up one	line.	(To  get
     the  physical  scrolling  effect on the terminal, the application must also
     enable idlok).

   setscrreg, wsetscrreg
     The wsetscrreg and setscrreg functions allow the application to set a soft-
     ware scrolling region in the specified window or stdscr, respectively.  The
     top and bot parameters are the line numbers of the top and bottom margin of
     the scrolling region.  If this option and scrollok are enabled, an  attempt
     to move off the bottom margin line causes all lines in the scrolling region
     to  scroll  one  line in the direction of the first line.	Only the text of
     the window is scrolled.  (This process has nothing to do with the scrolling
     region capability of the terminal, as found in the DEC VT100.)  If idlok is
     enabled and the terminal has either a  scrolling  region  or  insert/delete
     line capability, they will probably be used by the output routines.

RETURN VALUE
     The  functions setscrreg and wsetscrreg return OK upon success and ERR upon
     failure.  All other routines that return an integer always return OK.

     In ncurses, these functions fail if

     *	 the curses screen has not been initialized,

     *	 (for functions taking a WINDOW pointer argument) win is a null pointer,
	 or

     *	 (for setscrreg and wsetscrreg) the function  is  passed  arguments  de-
	 scribing  a scrolling region with limits that extend outside the window
	 boundaries.

NOTES
     clearok, leaveok, scrollok, idcok, and  setscrreg	may  be  implemented  as
     macros.

     Unlike  the  other functions described by this page, setscrreg does not ac-
     cept a pointer-to-WINDOW parameter, but operates on stdscr.  Use wsetscrreg
     to configure the scrolling region of a selected window.

     Historically, applications used  idcok(FALSE)  to	accommodate  the  "magic
     cookie"  feature  of some terminal types; see subsection "Highlighting, Un-
     derlining, and Visible Bells" of terminfo(5).  When updating  a  line,  the
     presence  of character cells with magic cookies in them made the curses li-
     brary's computations of characters to be rewritten  inaccurate.   A  better
     solution  is  to  indicate  the magic_cookie_glitch (xmc) capability in the
     terminal's type description.

     immedok is useful for windows that are used as terminal emulators.

PORTABILITY
     X/Open Curses Issue 4 describes these functions.	It  specifies  no  error
     conditions for them.

     Some  historic  curses implementations, as an undocumented feature, did the
     equivalent of "clearok(..., 1)" when touchwin(stdstr) or clear(stdstr) were
     used.  This trick does not work with ncurses.

     Early System V curses implementations specified that with scrollok enabled,
     any window modification triggering a scroll also forced a physical refresh.
     X/Open Curses does not require this, and ncurses avoids doing so to  better
     optimize vertical motions upon a wrefresh.

     X/Open  Curses does not mention that the cursor should be made invisible as
     a side effect of leaveok.	SVr4 curses documentation notes  this  behavior,
     but the code neglects to implement it.  Use curs_set(3X) to make the cursor
     invisible.

HISTORY
     4BSD (1980) introduced clearok, leaveok, and scrollok.

     SVr2 (1984) supplied idlok, setscrreg, and wsetscrreg.

     SVr3.1 (1987) implemented idcok and immedok.

     ncurses  formerly treated nl and nonl as both input and output options, but
     no longer; see curs_inopts(3X).

SEE ALSO
     curses(3X),     curs_addch(3X),	  curs_clear(3X),      curs_initscr(3X),
     curs_refresh(3X), curs_scroll(3X), curs_variables(3X)

ncurses 6.6			   2025-11-11			curs_outopts(3X)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=curs_outopts&sektion=3&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help