summaryrefslogtreecommitdiff
path: root/doc/html/man/curs_outopts.3x.html
blob: 22d68265749a10f91b56de7e9c03c33fee00f9c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
<!--
  ****************************************************************************
  * Copyright 2018-2024,2025 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.106 2025/11/12 00:52:57 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 2025-11-11 ncurses 6.6 Library calls</TITLE>
<link rel="author" href="mailto:bug-ncurses@gnu.org">

</HEAD>
<BODY>
<H1 class="no-header">curs_outopts 3x 2025-11-11 ncurses 6.6 Library calls</H1>
<PRE>
<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>


</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
       <STRONG>clearok</STRONG>,   <STRONG>idcok</STRONG>,   <STRONG>idlok</STRONG>,   <STRONG>immedok</STRONG>,   <STRONG>leaveok</STRONG>,  <STRONG>scrollok</STRONG>,  <STRONG>setscrreg</STRONG>,
       <STRONG>wsetscrreg</STRONG> - set <EM>curses</EM> output options


</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>

       <STRONG>int</STRONG> <STRONG>clearok(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
       <STRONG>void</STRONG> <STRONG>idcok(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
       <STRONG>int</STRONG> <STRONG>idlok(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
       <STRONG>void</STRONG> <STRONG>immedok(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
       <STRONG>int</STRONG> <STRONG>leaveok(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
       <STRONG>int</STRONG> <STRONG>scrollok(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>

       <STRONG>int</STRONG> <STRONG>setscrreg(int</STRONG> <EM>top</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bot</EM><STRONG>);</STRONG>
       <STRONG>int</STRONG> <STRONG>wsetscrreg(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>top</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bot</EM><STRONG>);</STRONG>


</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
       These functions configure properties  of  <EM>curses</EM>  windows  that  affect
       their  manner of output.  Boolean-valued properties are initially <STRONG>FALSE</STRONG>
       except where noted.  <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> resets any terminal modes corresponding
       to these properties; an application  need  not  restore  their  initial
       values.


</PRE><H3><a name="h3-clearok">clearok</a></H3><PRE>
       Setting <EM>win</EM>'s <STRONG>clearok</STRONG> property to <STRONG>TRUE</STRONG> causes the next <STRONG>wrefresh</STRONG> call on
       it  to clear the terminal screen and redraw it entirely.  This property
       is useful 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  <EM>win</EM>  is  <STRONG>curscr</STRONG>  (see
       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>),  the  next  <STRONG>wrefresh</STRONG> call on <EM>any</EM> window causes the
       terminal screen to clear and redraw as  above.   <STRONG>wrefresh</STRONG>  resets  this
       property to <STRONG>FALSE</STRONG>.


</PRE><H3><a name="h3-idcok">idcok</a></H3><PRE>
       (This  property  defaults <STRONG>TRUE</STRONG>.)  Setting <EM>win</EM>'s <STRONG>idcok</STRONG> property to <STRONG>FALSE</STRONG>
       prevents <EM>curses</EM> from using the insert/delete character capabilities  of
       terminal types possessing them according to the <EM>terminfo</EM> database.


</PRE><H3><a name="h3-idlok">idlok</a></H3><PRE>
       Setting  <EM>win</EM>'s  <STRONG>idlok</STRONG>  property to <STRONG>TRUE</STRONG> causes <EM>curses</EM> to consider using
       the insert/delete line capabilities of terminal types  possessing  them
       according  to  the  <EM>terminfo</EM>  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.


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


</PRE><H3><a name="h3-leaveok">leaveok</a></H3><PRE>
       Normally,  <EM>curses</EM>  leaves  the  hardware cursor at the library's cursor
       location of the window being refreshed.  The <STRONG>leaveok</STRONG> option allows  the
       cursor  to  be  left  wherever  the  update happens to leave it.  It is
       useful for applications that do not employ a visible cursor,  since  it
       reduces the need for cursor motions.


</PRE><H3><a name="h3-scrollok">scrollok</a></H3><PRE>
       The  <STRONG>scrollok</STRONG> 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)  writing  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  (<EM>bf</EM>  is  <STRONG>FALSE</STRONG>),  <EM>curses</EM> leaves the cursor on the
       bottom line of the window.  If enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), <EM>curses</EM> scrolls the
       window up one line.  (To get  the  physical  scrolling  effect  on  the
       terminal, the application must also enable <STRONG>idlok</STRONG>).


</PRE><H3><a name="h3-setscrreg_wsetscrreg">setscrreg, wsetscrreg</a></H3><PRE>
       The  <STRONG>wsetscrreg</STRONG>  and <STRONG>setscrreg</STRONG> functions allow the application to set a
       software  scrolling  region  in  the  specified   window   or   <STRONG>stdscr</STRONG>,
       respectively.   The  <EM>top</EM> and <EM>bot</EM> parameters are the line numbers of the
       top and bottom margin of the scrolling  region.   If  this  option  and
       <STRONG>scrollok</STRONG>  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 <STRONG>idlok</STRONG> 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 <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> return <STRONG>OK</STRONG> upon success  and  <STRONG>ERR</STRONG>
       upon  failure.  All other routines that return an integer always return
       <STRONG>OK</STRONG>.

       In <EM>ncurses</EM>, these functions fail if

       <STRONG>o</STRONG>   the <EM>curses</EM> screen has not been initialized,

       <STRONG>o</STRONG>   (for functions taking a <EM>WINDOW</EM> pointer  argument)  <EM>win</EM>  is  a  null
           pointer, or

       <STRONG>o</STRONG>   (for  <STRONG>setscrreg</STRONG>  and  <STRONG>wsetscrreg</STRONG>)  the function is passed arguments
           describing a scrolling region with limits that extend  outside  the
           window boundaries.


</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
       <STRONG>clearok</STRONG>,  <STRONG>leaveok</STRONG>, <STRONG>scrollok</STRONG>, <STRONG>idcok</STRONG>, and <STRONG>setscrreg</STRONG> may be implemented as
       macros.

       Unlike the other functions described by this page, <STRONG>setscrreg</STRONG>  does  not
       accept  a  pointer-to-<EM>WINDOW</EM>  parameter,  but  operates on <STRONG>stdscr</STRONG>.  Use
       <STRONG>wsetscrreg</STRONG> to configure the scrolling region of a selected window.

       Historically, applications used <STRONG>idcok(FALSE)</STRONG> to accommodate the  "magic
       cookie"  feature  of some terminal types; see subsection "Highlighting,
       Underlining, and Visible Bells" of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.  When updating a  line,
       the  presence  of  character  cells with magic cookies in them made the
       <EM>curses</EM> library's computations of characters to be rewritten inaccurate.
       A  better  solution  is  to  indicate  the  <STRONG>magic_cookie_glitch</STRONG>   (<STRONG>xmc</STRONG>)
       capability in the terminal's type description.

       <STRONG>immedok</STRONG> is useful for windows that are used as terminal emulators.


</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
       X/Open Curses Issue 4 describes these functions.  It specifies no error
       conditions for them.

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

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

       X/Open Curses does not mention that the cursor should be made invisible
       as a side effect of <EM>leaveok</EM>.   SVr4  <EM>curses</EM>  documentation  notes  this
       behavior,  but  the code neglects to implement it.  Use <STRONG><A HREF="curs_kernel.3x.html">curs_set(3x)</A></STRONG> to
       make the cursor invisible.


</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
       4BSD (1980) introduced <EM>clearok</EM>, <EM>leaveok</EM>, and <EM>scrollok</EM>.

       SVr2 (1984) supplied <EM>idlok</EM>, <EM>setscrreg</EM>, and <EM>wsetscrreg</EM>.

       SVr3.1 (1987) implemented <EM>idcok</EM> and <EM>immedok</EM>.

       <EM>ncurses</EM> formerly treated <EM>nl</EM> and <EM>nonl</EM> as both input <EM>and</EM> output  options,
       but no longer; see <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>.


</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,     <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>,    <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>,    <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,
       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>

ncurses 6.6                       2025-11-11                  <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
</PRE>
<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-idcok">idcok</a></li>
<li><a href="#h3-idlok">idlok</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-NOTES">NOTES</a></li>
<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
<li><a href="#h2-HISTORY">HISTORY</a></li>
<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
</ul>
</div>
</BODY>
</HTML>