+<!--
+ ****************************************************************************
+ * Copyright 2018,2020 Thomas E. Dickey *
+ * Copyright 1998-2016,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************
+ * @Id: curs_outopts.3x,v 1.33 2020/10/03 22:04:09 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>curs_outopts 3X</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
<BODY>
+<H1 class="no-header">curs_outopts 3X</H1>
<PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
+<B><A HREF="curs_outopts.3X.html">curs_outopts(3X)</A></B> <B><A HREF="curs_outopts.3X.html">curs_outopts(3X)</A></B>
-</PRE>
-<H2>NAME</H2><PRE>
- <B>clearok</B>, <B>idlok</B>, <B>idcok</B> <B>immedok</B>, <B>leaveok</B>, <B>setscrreg</B>,
- <B>wsetscrreg</B>, <B>scrollok</B>, <B>nl</B>, <B>nonl</B> - <B>curses</B> output options
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <B>#include</B> <B><curses.h></B>
- <B>int</B> <B>clearok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>int</B> <B>idlok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>void</B> <B>idcok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>void</B> <B>immedok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>int</B> <B>leaveok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>int</B> <B>setscrreg(int</B> <B>top,</B> <B>int</B> <B>bot);</B>
- <B>int</B> <B>wsetscrreg(WINDOW</B> <B>*win,</B> <B>int</B> <B>top,</B> <B>int</B> <B>bot);</B>
- <B>int</B> <B>scrollok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
- <B>int</B> <B>nl(void);</B>
- <B>int</B> <B>nonl(void);</B>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+ <B>clearok</B>, <B>idlok</B>, <B>idcok</B>, <B>immedok</B>, <B>leaveok</B>, <B>setscrreg</B>, <B>wsetscrreg</B>,
+ <B>scrollok</B> - <B>curses</B> output options
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These routines set options that change the style of output
- within <B>curses</B>. All options are initially <B>FALSE</B>, unless
- otherwise stated. It is not necessary to turn these
- options off before calling <B>endwin</B>.
-
- If <B>clearok</B> is called with <B>TRUE</B> as argument, the next call
- to <B>wrefresh</B> with this window will clear the screen com-
- pletely and redraw the entire screen from scratch. This
- is useful when the contents of the screen are uncertain,
- or in some cases for a more pleasing visual effect. If
- the <I>win</I> argument to <B>clearok</B> is the global variable <B>curscr</B>,
- the next call to <B>wrefresh</B> with any window causes the
- screen to be cleared and repainted from scratch.
-
- If <B>idlok</B> is called with <B>TRUE</B> as second argument, <B>curses</B>
- considers using the hardware insert/delete line feature of
- terminals so equipped. Calling <B>idlok</B> with <B>FALSE</B> as second
- argument disables use of line insertion and deletion.
- This option should be enabled only if the application
- needs insert/delete line, for example, for a screen edi-
- tor. It is disabled by default because insert/delete line
- tends to be visually annoying when used in applications
- where it isn't really needed. If insert/delete line can-
- not be used, <B>curses</B> redraws the changed portions of all
- lines.
-
- If <B>idcok</B> is called with <B>FALSE</B> as second argument, <B>curses</B>
- no longer considers using the hardware insert/delete char-
- acter feature of terminals so equipped. Use of character
- insert/delete is enabled by default. Calling <B>idcok</B> with
- <B>TRUE</B> as second argument re-enables use of character inser-
- tion and deletion.
-
- If <B>immedok</B> is called with <B>TRUE</B> <B>as</B> <B>argument</B>, any change in
- the window image, such as the ones caused by <B>waddch,</B>
- <B>wclrtobot,</B> <B>wscrl</B>, <I>etc</I>., automatically cause a call to <B>wre-</B>
- <B>fresh</B>. However, it may degrade performance considerably,
- due to repeated calls to <B>wrefresh</B>. It is disabled by
- default.
-
- Normally, the hardware cursor is left at the location of
- the window cursor being refreshed. The <B>leaveok</B> option
- allows the cursor to be left wherever the update happens
- to leave it. It is useful for applications where the cur-
- sor is not used, since it reduces the need for cursor
- motions. If possible, the cursor is made invisible when
- this option is enabled.
-
- The <B>setscrreg</B> and <B>wsetscrreg</B> routines allow the applica-
- tion programmer to set a software scrolling region in a
- window. <I>top</I> and <I>bot</I> are the line numbers of the top and
- bottom margin of the scrolling region. (Line 0 is the top
- line of the window.) If this option and <B>scrollok</B> 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. (Note that this has nothing to do
- with the use of a physical scrolling region capability in
- the terminal, like that in the VT100. If <B>idlok</B> is enabled
- and the terminal has either a scrolling region or
- insert/delete line capability, they will probably be used
- by the output routines.)
-
- The <B>scrollok</B> option controls what happens when the cursor
- of a window is moved off the edge of the window or
- scrolling region, either as a result of a newline action
- on the bottom line, or typing the last character of the
- last line. If disabled, (<I>bf</I> is <B>FALSE</B>), the cursor is left
- on the bottom line. If enabled, (<I>bf</I> is <B>TRUE</B>), the window
- is scrolled up one line (Note that in order to get the
- physical scrolling effect on the terminal, it is also nec-
- essary to call <B>idlok</B>).
-
- The <B>nl</B> and <B>nonl</B> routines control whether the underlying
- display device translates the return key into newline on
- input, and whether it translates newline into return and
- line-feed on output (in either case, the call <B>addch('\n')</B>
- does the equivalent of return and line feed on the virtual
- screen). Initially, these translations do occur. If you
- disable them using <B>nonl</B>, <B>curses</B> will be able to make bet-
- ter use of the line-feed capability, resulting in faster
- cursor motion. Also, <B>curses</B> will then be able to detect
- the return key.
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+ <B>int</B> <B>clearok(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
+ <B>int</B> <B>idlok(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
+ <B>void</B> <B>idcok(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
+ <B>void</B> <B>immedok(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
+ <B>int</B> <B>leaveok(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
+ <B>int</B> <B>scrollok(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>bool</B> <I>bf</I><B>);</B>
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The functions <B>setscrreg</B> and <B>wsetscrreg</B> return <B>OK</B> upon suc-
- cess and <B>ERR</B> upon failure. All other routines that return
- an integer always return <B>OK</B>.
+ <B>int</B> <B>setscrreg(int</B> <I>top</I><B>,</B> <B>int</B> <I>bot</I><B>);</B>
+ <B>int</B> <B>wsetscrreg(WINDOW</B> <B>*</B><I>win</I><B>,</B> <B>int</B> <I>top</I><B>,</B> <B>int</B> <I>bot</I><B>);</B>
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4.
-
- The XSI Curses standard is ambiguous on the question of
- whether <B>raw</B>() should disable the CRLF translations con-
- trolled by <B>nl</B>() and <B>nonl</B>(). BSD curses did turn off these
- translations; AT&T curses (at least as late as SVr1) did
- not. We choose to do so, on the theory that a programmer
- requesting raw input wants a clean (ideally 8-bit clean)
- connection that the operating system does not mess with.
-
- Some historic curses implementations had, as an undocu-
- mented feature, the ability to do the equivalent of
- <B>clearok(...,</B> <B>1)</B> by saying <B>touchwin(stdscr)</B> or <B>clear(std-</B>
- <B>scr)</B>. This will not work under ncurses.
-
- Earlier System V curses implementations specified that
- with <B>scrollok</B> enabled, any window modification triggering
- a scroll also forced a physical refresh. XSI Curses does
- not require this, and <B>ncurses</B> avoids doing it in order to
- perform better vertical-motion optimization at <B>wrefresh</B>
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+ These routines set options that change the style of output within <B>curs-</B>
+ <B>es</B>. All options are initially <B>FALSE</B>, unless otherwise stated. It is
+ not necessary to turn these options off before calling <B><A HREF="curs_initscr.3X.html">endwin(3X)</A></B>.
+
+
+</PRE><H3><a name="h3-clearok">clearok</a></H3><PRE>
+ If <B>clearok</B> is called with <B>TRUE</B> as argument, the next call to <B>wrefresh</B>
+ with this window will clear the screen completely and redraw the entire
+ screen from scratch. This is useful when the contents of the screen
+ are uncertain, or in some cases for a more pleasing visual effect. If
+ the <I>win</I> argument to <B>clearok</B> is the global variable <B>curscr</B>, the next
+ call to <B>wrefresh</B> with any window causes the screen to be cleared and
+ repainted from scratch.
+
+
+</PRE><H3><a name="h3-idlok">idlok</a></H3><PRE>
+ If <B>idlok</B> is called with <B>TRUE</B> as second argument, <B>curses</B> considers using
+ the hardware insert/delete line feature of terminals so equipped.
+ Calling <B>idlok</B> with <B>FALSE</B> as second argument disables use of line inser-
+ tion and deletion. This option should be enabled only if the applica-
+ tion needs insert/delete line, for example, for a screen editor. It is
+ disabled by default because insert/delete line tends to be visually an-
+ noying when used in applications where it is not really needed. If in-
+ sert/delete line cannot be used, <B>curses</B> redraws the changed portions of
+ all lines.
+
+
+</PRE><H3><a name="h3-idcok">idcok</a></H3><PRE>
+ If <B>idcok</B> is called with <B>FALSE</B> as second argument, <B>curses</B> no longer con-
+ siders using the hardware insert/delete character feature of terminals
+ so equipped. Use of character insert/delete is enabled by default.
+ Calling <B>idcok</B> with <B>TRUE</B> as second argument re-enables use of character
+ insertion and deletion.
+
+
+</PRE><H3><a name="h3-immedok">immedok</a></H3><PRE>
+ If <B>immedok</B> is called with <B>TRUE</B> <B>as</B> <B>argument</B>, any change in the window
+ image, such as the ones caused by <B>waddch,</B> <B>wclrtobot,</B> <B>wscrl</B>, etc., auto-
+ matically cause a call to <B>wrefresh</B>. However, it may degrade perfor-
+ mance considerably, due to repeated calls to <B>wrefresh</B>. It is disabled
+ by default.
+
+
+</PRE><H3><a name="h3-leaveok">leaveok</a></H3><PRE>
+ Normally, the hardware cursor is left at the location of the window
+ cursor being refreshed. The <B>leaveok</B> option allows the cursor to be
+ left wherever the update happens to leave it. It is useful for appli-
+ cations where the cursor is not used, since it reduces the need for
+ cursor motions.
+
+
+</PRE><H3><a name="h3-scrollok">scrollok</a></H3><PRE>
+ The <B>scrollok</B> option controls what happens when the cursor of a window
+ is moved off the edge of the window or scrolling region, either as a
+ result of a newline action on the bottom line, or typing the last char-
+ acter of the last line. If disabled, (<I>bf</I> is <B>FALSE</B>), the cursor is left
+ on the bottom line. If enabled, (<I>bf</I> is <B>TRUE</B>), the window is scrolled
+ up one line (Note that to get the physical scrolling effect on the ter-
+ minal, it is also necessary to call <B>idlok</B>).
+
+
+</PRE><H3><a name="h3-setscrreg_wsetscrreg">setscrreg/wsetscrreg</a></H3><PRE>
+ The <B>setscrreg</B> and <B>wsetscrreg</B> routines allow the application programmer
+ to set a software scrolling region in a window. The <I>top</I> and <I>bot</I> param-
+ eters are the line numbers of the top and bottom margin of the
+ scrolling region. (Line 0 is the top line of the window.) If this op-
+ tion and <B>scrollok</B> 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.
+ (Note that this has nothing to do with the use of a physical scrolling
+ region capability in the terminal, like that in the VT100. If <B>idlok</B> is
+ enabled and the terminal has either a scrolling region or insert/delete
+ line capability, they will probably be used by the output routines.)
+
+
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+ The functions <B>setscrreg</B> and <B>wsetscrreg</B> return <B>OK</B> upon success and <B>ERR</B>
+ upon failure. All other routines that return an integer always return
+ <B>OK</B>.
+
+ X/Open Curses does not define any error conditions.
+
+ In this implementation,
+
+ <B>o</B> those functions that have a window pointer will return an error if
+ the window pointer is null
+
+ <B>o</B> <B>wsetscrreg</B> returns an error if the scrolling region limits extend
+ outside the window.
+
+ X/Open does not define any error conditions. This implementation re-
+ turns an error if the window pointer is null.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ These functions are described in the XSI Curses standard, Issue 4.
+
+ From the outset, ncurses used <B>nl</B>/<B>nonl</B> to control the conversion of new-
+ lines to carriage return/line-feed on output as well as input. XSI
+ Curses documents only the use of these functions for input. This dif-
+ ference arose from converting the <I>pcurses</I> source (which used <B>ioctl</B>
+ calls with the <B>sgttyb</B> structure) to termios (i.e., the POSIX terminal
+ interface). In the former, both input and output were controlled via a
+ single option <B>CRMOD</B>, while the latter separates these features. Be-
+ cause that conversion interferes with output optimization, <B>nl</B>/<B>nonl</B> were
+ amended after ncurses 6.2 to eliminate their effect on output.
+
+ Some historic curses implementations had, as an undocumented feature,
+ the ability to do the equivalent of <B>clearok(...,</B> <B>1)</B> by saying <B>touch-</B>
+ <B>win(stdscr)</B> or <B>clear(stdscr)</B>. This will not work under ncurses.
+
+ Earlier System V curses implementations specified that with <B>scrollok</B>
+ enabled, any window modification triggering a scroll also forced a
+ physical refresh. XSI Curses does not require this, and <B>ncurses</B> avoids
+ doing it to perform better vertical-motion optimization at <B>wrefresh</B>
time.
- The XSI Curses standard does not mention that the cursor
- should be made invisible as a side-effect of <B>leaveok</B>.
- SVr4 curses documentation does this, but the code does
- not. Use <B>curs_set</B> to make the cursor invisible.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <B>clearok</B>, <B>leaveok</B>, <B>scrollok</B>, <B>idcok</B>, <B>nl</B>, <B>nonl</B> and
- <B>setscrreg</B> may be macros.
-
- The <B>immedok</B> routine is useful for windows that are used as
- terminal emulators.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>, <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>,
- <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
-
-
-
-
-
-
-
+ The XSI Curses standard does not mention that the cursor should be made
+ invisible as a side-effect of <B>leaveok</B>. SVr4 curses documentation does
+ this, but the code does not. Use <B>curs_set</B> to make the cursor invisi-
+ ble.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+ Note that <B>clearok</B>, <B>leaveok</B>, <B>scrollok</B>, <B>idcok</B>, and <B>setscrreg</B> may be
+ macros.
+ The <B>immedok</B> routine is useful for windows that are used as terminal em-
+ ulators.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+ <B><A HREF="curses.3X.html">curses(3X)</A></B>, <B><A HREF="curs_addch.3X.html">curs_addch(3X)</A></B>, <B><A HREF="curs_clear.3X.html">curs_clear(3X)</A></B>, <B><A HREF="curs_initscr.3X.html">curs_initscr(3X)</A></B>,
+ <B><A HREF="curs_scroll.3X.html">curs_scroll(3X)</A></B>, <B><A HREF="curs_refresh.3X.html">curs_refresh(3X)</A></B>, <B><A HREF="curs_variables.3X.html">curs_variables(3X)</A></B>.
+ <B><A HREF="curs_outopts.3X.html">curs_outopts(3X)</A></B>
</PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-clearok">clearok</a></li>
+<li><a href="#h3-idlok">idlok</a></li>
+<li><a href="#h3-idcok">idcok</a></li>
+<li><a href="#h3-immedok">immedok</a></li>
+<li><a href="#h3-leaveok">leaveok</a></li>
+<li><a href="#h3-scrollok">scrollok</a></li>
+<li><a href="#h3-setscrreg_wsetscrreg">setscrreg/wsetscrreg</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
</BODY>
</HTML>