1<!-- 2 * t 3 **************************************************************************** 4 * Copyright 2018-2023,2024 Thomas E. Dickey * 5 * Copyright 1998-2015,2017 Free Software Foundation, Inc. * 6 * * 7 * Permission is hereby granted, free of charge, to any person obtaining a * 8 * copy of this software and associated documentation files (the * 9 * "Software"), to deal in the Software without restriction, including * 10 * without limitation the rights to use, copy, modify, merge, publish, * 11 * distribute, distribute with modifications, sublicense, and/or sell * 12 * copies of the Software, and to permit persons to whom the Software is * 13 * furnished to do so, subject to the following conditions: * 14 * * 15 * The above copyright notice and this permission notice shall be included * 16 * in all copies or substantial portions of the Software. * 17 * * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 21 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 22 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 23 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 24 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 25 * * 26 * Except as contained in this notice, the name(s) of the above copyright * 27 * holders shall not be used in advertising or otherwise to promote the * 28 * sale, use or other dealings in this Software without prior written * 29 * authorization. * 30 **************************************************************************** 31 * @Id: curs_util.3x,v 1.101 2024/04/20 21:20:07 tom Exp @ 32--> 33<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 34<HTML> 35<HEAD> 36<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> 37<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> 38<TITLE>curs_util 3x 2024-04-20 ncurses 6.5 Library calls</TITLE> 39<link rel="author" href="mailto:bug-ncurses@gnu.org"> 40 41</HEAD> 42<BODY> 43<H1 class="no-header">curs_util 3x 2024-04-20 ncurses 6.5 Library calls</H1> 44<PRE> 45<STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> Library calls <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> 46 47 48 49 50</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> 51 <STRONG>delay_output</STRONG>, <STRONG>filter</STRONG>, <STRONG>flushinp</STRONG>, <STRONG>getwin</STRONG>, <STRONG>key_name</STRONG>, <STRONG>keyname</STRONG>, <STRONG>nofilter</STRONG>, 52 <STRONG>putwin</STRONG>, <STRONG>unctrl</STRONG>, <STRONG>use_env</STRONG>, <STRONG>use_tioctl</STRONG>, <STRONG>wunctrl</STRONG> - miscellaneous <EM>curses</EM> 53 utility routines 54 55 56</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> 57 <STRONG>#include</STRONG> <STRONG><curses.h></STRONG> 58 59 <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*unctrl(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> 60 <STRONG>wchar_t</STRONG> <STRONG>*wunctrl(cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> 61 62 <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*keyname(int</STRONG> <EM>c</EM><STRONG>);</STRONG> 63 <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*key_name(wchar_t</STRONG> <EM>wc</EM><STRONG>);</STRONG> 64 65 <STRONG>void</STRONG> <STRONG>filter(void);</STRONG> 66 67 <STRONG>void</STRONG> <STRONG>use_env(bool</STRONG> <EM>f</EM><STRONG>);</STRONG> 68 69 <STRONG>int</STRONG> <STRONG>putwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>filep</EM><STRONG>);</STRONG> 70 <STRONG>WINDOW</STRONG> <STRONG>*getwin(FILE</STRONG> <STRONG>*</STRONG><EM>filep</EM><STRONG>);</STRONG> 71 72 <STRONG>int</STRONG> <STRONG>delay_output(int</STRONG> <EM>ms</EM><STRONG>);</STRONG> 73 <STRONG>int</STRONG> <STRONG>flushinp(void);</STRONG> 74 75 <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM> 76 <STRONG>void</STRONG> <STRONG>nofilter(void);</STRONG> 77 <STRONG>void</STRONG> <STRONG>use_tioctl(bool</STRONG> <EM>f</EM><STRONG>);</STRONG> 78 79 80</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> 81 82</PRE><H3><a name="h3-unctrl">unctrl</a></H3><PRE> 83 The <STRONG>unctrl</STRONG> routine returns a character string which is a printable 84 representation of the character <EM>ch</EM>: 85 86 <STRONG>o</STRONG> Printable characters are displayed as themselves, e.g., a one- 87 character string containing the key. 88 89 <STRONG>o</STRONG> Control characters are displayed in the <STRONG>^</STRONG><EM>X</EM> notation. 90 91 <STRONG>o</STRONG> Printing characters are displayed as is. 92 93 <STRONG>o</STRONG> DEL (character 127) is displayed as <STRONG>^?</STRONG>. 94 95 <STRONG>o</STRONG> Values above 128 are either meta characters (if the screen has not 96 been initialized, or if <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> has been called with a <STRONG>TRUE</STRONG> 97 parameter), shown in the <STRONG>M-</STRONG><EM>X</EM> notation, or are displayed as 98 themselves. In the latter case, the values may not be printable; 99 this follows the X/Open specification. 100 101 The corresponding <STRONG>wunctrl</STRONG> returns a printable representation of a 102 complex character <EM>wch</EM>. 103 104 In both <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG> the attributes and color associated with the 105 character parameter are ignored. 106 107 108</PRE><H3><a name="h3-keyname_key_name">keyname, key_name</a></H3><PRE> 109 The <STRONG>keyname</STRONG> routine returns a character string corresponding to the key 110 <EM>c</EM>. Key codes are different from character codes. 111 112 <STRONG>o</STRONG> Key codes below 256 are characters. They are displayed using 113 <STRONG>unctrl</STRONG>. 114 115 <STRONG>o</STRONG> Values above 256 may be the codes for function keys. The function 116 key name is displayed. 117 118 <STRONG>o</STRONG> Otherwise (if there is no corresponding name and the key is not a 119 character) the function returns null, to denote an error. X/Open 120 also lists an "UNKNOWN KEY" return value, which some 121 implementations return rather than null. 122 123 The corresponding <STRONG>key_name</STRONG> returns a multibyte character string 124 corresponding to the wide-character value <EM>w</EM>. The two functions 125 (<STRONG>keyname</STRONG> and <STRONG>key_name</STRONG>) do not return the same set of strings: 126 127 <STRONG>o</STRONG> <STRONG>keyname</STRONG> returns null where <STRONG>key_name</STRONG> would display a meta character. 128 129 <STRONG>o</STRONG> <STRONG>key_name</STRONG> does not return the name of a function key. 130 131 132</PRE><H3><a name="h3-filter_nofilter">filter, nofilter</a></H3><PRE> 133 The <STRONG>filter</STRONG> routine, if used, must be called before <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> 134 are called. Calling <STRONG>filter</STRONG> causes these changes in initialization: 135 136 <STRONG>o</STRONG> <STRONG>LINES</STRONG> is set to 1; 137 138 <STRONG>o</STRONG> the capabilities <STRONG>clear</STRONG>, <STRONG>cud1</STRONG>, <STRONG>cud</STRONG>, <STRONG>cup</STRONG>, <STRONG>cuu1</STRONG>, <STRONG>cuu</STRONG>, <STRONG>vpa</STRONG> are 139 disabled; 140 141 <STRONG>o</STRONG> the capability <STRONG>ed</STRONG> is disabled if <STRONG>bce</STRONG> is set; 142 143 <STRONG>o</STRONG> and the <STRONG>home</STRONG> string is set to the value of <STRONG>cr</STRONG>. 144 145 The <STRONG>nofilter</STRONG> routine cancels the effect of a preceding <STRONG>filter</STRONG> call. 146 That allows the caller to initialize a screen on a different device, 147 using a different value of <STRONG>$TERM</STRONG>. The limitation arises because the 148 <STRONG>filter</STRONG> routine modifies the in-memory copy of the terminal information. 149 150 151</PRE><H3><a name="h3-use_env">use_env</a></H3><PRE> 152 The <STRONG>use_env</STRONG> routine, if used, should be called before <STRONG>initscr</STRONG> or 153 <STRONG>newterm</STRONG> are called (because those compute the screen size). It 154 modifies the way <EM>ncurses</EM> treats environment variables when determining 155 the screen size. 156 157 <STRONG>o</STRONG> Normally <EM>ncurses</EM> looks first at the terminal database for the 158 screen size. 159 160 If <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG> for parameter, it stops here 161 unless <STRONG>use_tioctl</STRONG> was also called with <STRONG>TRUE</STRONG> for parameter. 162 163 <STRONG>o</STRONG> Then it asks for the screen size via operating system calls. If 164 successful, it overrides the values from the terminal database. 165 166 <STRONG>o</STRONG> Finally (unless <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG> parameter), <EM>ncurses</EM> 167 examines the <EM>LINES</EM> or <EM>COLUMNS</EM> environment variables, using a value 168 in those to override the results from the operating system or 169 terminal database. 170 171 <EM>curses</EM> also updates the screen size in response to <STRONG>SIGWINCH</STRONG>, unless 172 overridden by the <EM>LINES</EM> or <EM>COLUMNS</EM> environment variables, 173 174 175</PRE><H3><a name="h3-use_tioctl">use_tioctl</a></H3><PRE> 176 The <STRONG>use_tioctl</STRONG> routine, if used, should be called before <STRONG>initscr</STRONG> or 177 <STRONG>newterm</STRONG> are called (because those compute the screen size). After 178 <STRONG>use_tioctl</STRONG> is called with <STRONG>TRUE</STRONG> as an argument, <EM>ncurses</EM> modifies the 179 last step in its computation of screen size as follows: 180 181 <STRONG>o</STRONG> checks if the <EM>LINES</EM> and <EM>COLUMNS</EM> environment variables are set to a 182 number greater than zero. 183 184 <STRONG>o</STRONG> for each, <EM>ncurses</EM> updates the corresponding environment variable 185 with the value that it has obtained via operating system call or 186 from the terminal database. 187 188 <STRONG>o</STRONG> <EM>ncurses</EM> re-fetches the value of the environment variables so that 189 it is still the environment variables which set the screen size. 190 191 The <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> routines combine as follows. 192 193 <STRONG>use_env</STRONG> <STRONG>use_tioctl</STRONG> <STRONG>Summary</STRONG> 194 ----------------------------------------------------------------- 195 <STRONG>TRUE</STRONG> <STRONG>FALSE</STRONG> This is the default behavior. <EM>ncurses</EM> 196 uses operating system calls unless 197 overridden by <EM>LINES</EM> or <EM>COLUMNS</EM> 198 environment variables; default. 199 <STRONG>TRUE</STRONG> <STRONG>TRUE</STRONG> <EM>ncurses</EM> updates <EM>LINES</EM> and <EM>COLUMNS</EM> based 200 on operating system calls. 201 <STRONG>FALSE</STRONG> <STRONG>TRUE</STRONG> <EM>ncurses</EM> ignores <EM>LINES</EM> and <EM>COLUMNS</EM>, using 202 operating system calls to obtain size. 203 204 205</PRE><H3><a name="h3-putwin_getwin">putwin, getwin</a></H3><PRE> 206 The <STRONG>putwin</STRONG> routine writes all data associated with window (or pad) <EM>win</EM> 207 into the file to which <EM>filep</EM> points. This information can be later 208 retrieved using the <STRONG>getwin</STRONG> function. 209 210 The <STRONG>getwin</STRONG> routine reads window related data stored in the file by 211 <STRONG>putwin</STRONG>. The routine then creates and initializes a new window using 212 that data. It returns a pointer to the new window. There are a few 213 caveats: 214 215 <STRONG>o</STRONG> the data written is a copy of the <EM>WINDOW</EM> structure, and its 216 associated character cells. The format differs between the wide- 217 character (<EM>ncursesw</EM>) and non-wide (<EM>ncurses</EM>) libraries. You can 218 transfer data between the two, however. 219 220 <STRONG>o</STRONG> the retrieved window is always created as a top-level window (or 221 pad), rather than a subwindow. 222 223 <STRONG>o</STRONG> the window's character cells contain the color pair <EM>value</EM>, but not 224 the actual color <EM>numbers</EM>. If cells in the retrieved window use 225 color pairs which have not been created in the application using 226 <STRONG>init_pair</STRONG>, they will not be colored when the window is refreshed. 227 228 229</PRE><H3><a name="h3-delay_output">delay_output</a></H3><PRE> 230 The <STRONG>delay_output</STRONG> routine inserts an <EM>ms</EM> millisecond pause in output. 231 Employ this function judiciously when terminal output uses padding, 232 because <EM>ncurses</EM> transmits null characters (consuming CPU and I/O 233 resources) instead of sleeping and requesting resumption from the 234 operating system. Padding is used unless: 235 236 <STRONG>o</STRONG> the terminal description has <STRONG>npc</STRONG> (<STRONG>no_pad_char</STRONG>) capability, or 237 238 <STRONG>o</STRONG> the environment variable <STRONG>NCURSES_NO_PADDING</STRONG> is set. 239 240 If padding is not in use, <EM>ncurses</EM> uses <STRONG>napms</STRONG> to perform the delay. If 241 the value of <EM>ms</EM> exceeds 30,000 (thirty seconds), it is capped at that 242 value. 243 244 245</PRE><H3><a name="h3-flushinp">flushinp</a></H3><PRE> 246 The <STRONG>flushinp</STRONG> routine throws away any typeahead that has been typed by 247 the user and has not yet been read by the program. 248 249 250</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> 251 Except for <STRONG>flushinp</STRONG>, routines that return an integer return <STRONG>ERR</STRONG> upon 252 failure and <STRONG>OK</STRONG> (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") 253 upon successful completion. 254 255 Routines that return pointers return <STRONG>NULL</STRONG> on error. 256 257 X/Open Curses does not specify any error conditions. In this 258 implementation 259 260 <STRONG>flushinp</STRONG> 261 returns an error if the terminal was not initialized. 262 263 <STRONG>putwin</STRONG> 264 returns an error if the associated <STRONG>fwrite</STRONG> calls return an 265 error. 266 267 268</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> 269 270</PRE><H3><a name="h3-filter">filter</a></H3><PRE> 271 The SVr4 documentation describes the action of <STRONG>filter</STRONG> only in the 272 vaguest terms. The description here is adapted from X/Open Curses 273 (which erroneously fails to describe the disabling of <STRONG>cuu</STRONG>). 274 275 276</PRE><H3><a name="h3-delay_output-padding">delay_output padding</a></H3><PRE> 277 The limitation to 30 seconds and the use of <STRONG>napms</STRONG> differ from other 278 implementations. 279 280 <STRONG>o</STRONG> SVr4 curses does not delay if no padding character is available. 281 282 <STRONG>o</STRONG> NetBSD curses uses <STRONG>napms</STRONG> when no padding character is available, 283 but does not take timing into account when using the padding 284 character. 285 286 Neither limits the delay. 287 288 289</PRE><H3><a name="h3-keyname">keyname</a></H3><PRE> 290 The <STRONG>keyname</STRONG> function may return the names of user-defined string 291 capabilities which are defined in the terminfo entry via the <STRONG>-x</STRONG> option 292 of <STRONG>tic</STRONG>. This implementation automatically assigns at run-time keycodes 293 to user-defined strings which begin with "k". The keycodes start at 294 KEY_MAX, but are not guaranteed to be the same value for different runs 295 because user-defined codes are merged from all terminal descriptions 296 which have been loaded. The <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG> function controls 297 whether this data is loaded when the terminal description is read by 298 the library. 299 300 301</PRE><H3><a name="h3-nofilter_use_tioctl">nofilter, use_tioctl</a></H3><PRE> 302 The <STRONG>nofilter</STRONG> and <STRONG>use_tioctl</STRONG> routines are specific to <EM>ncurses</EM>. They 303 were not supported on Version 7, BSD or System V implementations. It 304 is recommended that any code depending on <EM>ncurses</EM> extensions be 305 conditioned using <STRONG>NCURSES_VERSION</STRONG>. 306 307 308</PRE><H3><a name="h3-putwin_getwin-file-format">putwin/getwin file-format</a></H3><PRE> 309 The <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG> functions have several issues with portability: 310 311 <STRONG>o</STRONG> The files written and read by these functions use an 312 implementation-specific format. Although the format is an obvious 313 target for standardization, it has been overlooked. 314 315 Interestingly enough, according to the copyright dates in Solaris 316 source, the functions (along with <STRONG>scr_init</STRONG>, etc.) originated with 317 the University of California, Berkeley (in 1982) and were later (in 318 1988) incorporated into SVr4. Oddly, there are no such functions 319 in the 4.3BSD curses sources. 320 321 <STRONG>o</STRONG> Most implementations simply dump the binary <EM>WINDOW</EM> structure to the 322 file. These include SVr4 curses, NetBSD and PDCurses, as well as 323 older <EM>ncurses</EM> versions. This implementation (as well as the X/Open 324 variant of Solaris curses, dated 1995) uses textual dumps. 325 326 The implementations which use binary dumps use block-I/O (the 327 <STRONG>fwrite</STRONG> and <STRONG>fread</STRONG> functions). Those that use textual dumps use 328 buffered-I/O. A few applications may happen to write extra data in 329 the file using these functions. Doing that can run into problems 330 mixing block- and buffered-I/O. This implementation reduces the 331 problem on writes by flushing the output. However, reading from a 332 file written using mixed schemes may not be successful. 333 334 335</PRE><H3><a name="h3-unctrl_wunctrl">unctrl, wunctrl</a></H3><PRE> 336 X/Open Curses, Issue 4 describes these functions. It states that 337 <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG> will return a null pointer if unsuccessful, but does 338 not define any error conditions. This implementation checks for three 339 cases: 340 341 <STRONG>o</STRONG> the parameter is a 7-bit US-ASCII code. This is the case that 342 X/Open Curses documented. 343 344 <STRONG>o</STRONG> the parameter is in the range 128-159, i.e., a C1 control code. If 345 <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG> has been called with a <STRONG>2</STRONG> parameter, <STRONG>unctrl</STRONG> 346 returns the parameter, i.e., a one-character string with the 347 parameter as the first character. Otherwise, it returns "~@", 348 "~A", etc., analogous to "^@", "^A", C0 controls. 349 350 X/Open Curses does not document whether <STRONG>unctrl</STRONG> can be called before 351 initializing curses. This implementation permits that, and returns 352 the "~@", etc., values in that case. 353 354 <STRONG>o</STRONG> parameter values outside the 0 to 255 range. <STRONG>unctrl</STRONG> returns a null 355 pointer. 356 357 The strings returned by <STRONG>unctrl</STRONG> in this implementation are determined at 358 compile time, showing C1 controls from the upper-128 codes with a "~" 359 prefix rather than "^". Other implementations have different 360 conventions. For example, they may show both sets of control 361 characters with "^", and strip the parameter to 7 bits. Or they may 362 ignore C1 controls and treat all of the upper-128 codes as printable. 363 This implementation uses 8 bits but does not modify the string to 364 reflect locale. The <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG> function allows the caller 365 to change the output of <STRONG>unctrl</STRONG>. 366 367 Likewise, the <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> function allows the caller to change the output 368 of <STRONG>keyname</STRONG>, i.e., it determines whether to use the "M-" prefix for 369 "meta" keys (codes in the range 128 to 255). Both 370 <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG> and <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> succeed only after curses is 371 initialized. X/Open Curses does not document the treatment of codes 372 128 to 159. When treating them as "meta" keys (or if <STRONG>keyname</STRONG> is called 373 before initializing curses), this implementation returns strings 374 "M-^@", "M-^A", etc. 375 376 X/Open Curses documents <STRONG>unctrl</STRONG> as declared in <STRONG><unctrl.h></STRONG>, which <EM>ncurses</EM> 377 does. However, <EM>ncurses</EM>' <STRONG><curses.h></STRONG> includes <STRONG><unctrl.h></STRONG>, matching the 378 behavior of SVr4 curses. Other implementations may not do that. 379 380 381</PRE><H3><a name="h3-use_env_use_tioctl">use_env, use_tioctl</a></H3><PRE> 382 If <EM>ncurses</EM> is configured to provide the sp-functions extension, the 383 state of <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> may be updated before creating each 384 <EM>screen</EM> rather than once only (<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>). This feature of 385 <STRONG>use_env</STRONG> is not provided by other implementations of curses. 386 387 388</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 389 <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, 390 <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, 391 <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG> 392 393 394 395ncurses 6.5 2024-04-20 <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> 396</PRE> 397<div class="nav"> 398<ul> 399<li><a href="#h2-NAME">NAME</a></li> 400<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> 401<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> 402<ul> 403<li><a href="#h3-unctrl">unctrl</a></li> 404<li><a href="#h3-keyname_key_name">keyname, key_name</a></li> 405<li><a href="#h3-filter_nofilter">filter, nofilter</a></li> 406<li><a href="#h3-use_env">use_env</a></li> 407<li><a href="#h3-use_tioctl">use_tioctl</a></li> 408<li><a href="#h3-putwin_getwin">putwin, getwin</a></li> 409<li><a href="#h3-delay_output">delay_output</a></li> 410<li><a href="#h3-flushinp">flushinp</a></li> 411</ul> 412</li> 413<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> 414<li><a href="#h2-PORTABILITY">PORTABILITY</a> 415<ul> 416<li><a href="#h3-filter">filter</a></li> 417<li><a href="#h3-delay_output-padding">delay_output padding</a></li> 418<li><a href="#h3-keyname">keyname</a></li> 419<li><a href="#h3-nofilter_use_tioctl">nofilter, use_tioctl</a></li> 420<li><a href="#h3-putwin_getwin-file-format">putwin/getwin file-format</a></li> 421<li><a href="#h3-unctrl_wunctrl">unctrl, wunctrl</a></li> 422<li><a href="#h3-use_env_use_tioctl">use_env, use_tioctl</a></li> 423</ul> 424</li> 425<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> 426</ul> 427</div> 428</BODY> 429</HTML> 430