]> ncurses.scripts.mit.edu Git - ncurses.git/blob - doc/html/man/curs_terminfo.3x.html
a800bfbe450395b2f3f9aa6e6634656be5844ee4
[ncurses.git] / doc / html / man / curs_terminfo.3x.html
1 <!--
2   * t
3   ****************************************************************************
4   * Copyright 2018-2022,2023 Thomas E. Dickey                                *
5   * Copyright 1998-2016,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_terminfo.3x,v 1.124 2023/12/23 17:34:39 tom Exp @
32   * ***************************************************************************
33   * ***************************************************************************
34   * ***************************************************************************
35   * ***************************************************************************
36   * ***************************************************************************
37   * ***************************************************************************
38   * ***************************************************************************
39   * ***************************************************************************
40   * See X/Open Curses Issue 4, Version 2, pp. 227-234.
41   * See X/Open Curses Issue 7, pp. 311-318.
42   * ***************************************************************************
43   * ***************************************************************************
44   * ***************************************************************************
45 -->
46 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
47 <HTML>
48 <HEAD>
49 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
50 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
51 <TITLE>curs_terminfo 3x 2023-12-23 ncurses 6.4 Library calls</TITLE>
52 <link rel="author" href="mailto:bug-ncurses@gnu.org">
53
54 </HEAD>
55 <BODY>
56 <H1 class="no-header">curs_terminfo 3x 2023-12-23 ncurses 6.4 Library calls</H1>
57 <PRE>
58 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
59
60
61
62
63 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
64        <STRONG>del_curterm</STRONG>,   <STRONG>mvcur</STRONG>,   <STRONG>putp</STRONG>,   <STRONG>restartterm</STRONG>,   <STRONG>set_curterm</STRONG>,  <STRONG>setupterm</STRONG>,
65        <STRONG>tigetflag</STRONG>,  <STRONG>tigetnum</STRONG>,  <STRONG>tigetstr</STRONG>,  <STRONG>tiparm</STRONG>,  <STRONG>tiparm_s</STRONG>,  <STRONG>tiscan_s</STRONG>,  <STRONG>tparm</STRONG>,
66        <STRONG>tputs</STRONG>,  <STRONG>vid_attr</STRONG>,  <STRONG>vid_puts</STRONG>,  <STRONG>vidattr</STRONG>,  <STRONG>vidputs</STRONG>  - <EM>curses</EM> interfaces to
67        <EM>terminfo</EM> database
68
69
70 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
71        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
72        <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
73
74        <STRONG>TERMINAL</STRONG> <STRONG>*cur_term;</STRONG>
75
76        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolnames[];</STRONG>
77        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolcodes[];</STRONG>
78        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolfnames[];</STRONG>
79        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numnames[];</STRONG>
80        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numcodes[];</STRONG>
81        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numfnames[];</STRONG>
82        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strnames[];</STRONG>
83        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strcodes[];</STRONG>
84        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strfnames[];</STRONG>
85
86        <STRONG>int</STRONG> <STRONG>setupterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>filedes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
87        <STRONG>TERMINAL</STRONG> <STRONG>*set_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>nterm</EM><STRONG>);</STRONG>
88        <STRONG>int</STRONG> <STRONG>del_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>oterm</EM><STRONG>);</STRONG>
89        <STRONG>int</STRONG> <STRONG>restartterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>filedes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
90
91        <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> ...<STRONG>);</STRONG>
92             <EM>/*</EM> <EM>or</EM> <EM>*/</EM>
93        <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>long</STRONG> <EM>p1</EM> ... <STRONG>long</STRONG> <EM>p9</EM><STRONG>);</STRONG>
94
95        <STRONG>int</STRONG> <STRONG>tputs(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>affcnt</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
96        <STRONG>int</STRONG> <STRONG>putp(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
97
98        <STRONG>int</STRONG> <STRONG>vidputs(chtype</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
99        <STRONG>int</STRONG> <STRONG>vidattr(chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
100        <STRONG>int</STRONG> <STRONG>vid_puts(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
101        <STRONG>int</STRONG> <STRONG>vid_attr(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
102
103        <STRONG>int</STRONG> <STRONG>mvcur(int</STRONG> <EM>oldrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newcol</EM><STRONG>);</STRONG>
104
105        <STRONG>int</STRONG> <STRONG>tigetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
106        <STRONG>int</STRONG> <STRONG>tigetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
107        <STRONG>char</STRONG> <STRONG>*tigetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
108
109        <STRONG>char</STRONG> <STRONG>*tiparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> ...<STRONG>);</STRONG>
110
111        <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM>
112        <STRONG>char</STRONG> <STRONG>*tiparm_s(int</STRONG> <EM>expected</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>mask</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
113        <STRONG>int</STRONG> <STRONG>tiscan_s(int</STRONG> <STRONG>*</STRONG><EM>expected</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>mask</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
114
115        <EM>/*</EM> <EM>deprecated</EM> <EM>*/</EM>
116        <STRONG>int</STRONG> <STRONG>setterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>);</STRONG>
117
118
119 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
120        These low-level routines must be called by programs that have  to  deal
121        directly   with  the  <EM>terminfo</EM>  database  to  handle  certain  terminal
122        capabilities,  such  as  programming  function  keys.   For  all  other
123        functionality,  <EM>curses</EM>  routines  are  more  suitable  and their use is
124        recommended.
125
126        None of these functions use  (or  are  aware  of)  multibyte  character
127        strings such as UTF-8:
128
129        <STRONG>o</STRONG>   capability names use the POSIX portable character set
130
131        <STRONG>o</STRONG>   capability  string  values  have  no  associated encoding; they are
132            strings of 8-bit characters.
133
134
135 </PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
136        Initially, <STRONG>setupterm</STRONG> should be called.  The high-level curses functions
137        <STRONG>initscr</STRONG>  and  <STRONG>newterm</STRONG> call <STRONG>setupterm</STRONG> to initialize the low-level set of
138        terminal-dependent variables [listed in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].
139
140        Applications can use the terminal  capabilities  either  directly  (via
141        header  definitions),  or  by  special  functions.   The  header  files
142        <STRONG>curses.h</STRONG> and <STRONG>term.h</STRONG> should be included  (in  this  order)  to  get  the
143        definitions for these strings, numbers, and flags.
144
145        The  <STRONG>terminfo</STRONG>  variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized by <STRONG>setupterm</STRONG>
146        as follows:
147
148        <STRONG>o</STRONG>   If <STRONG>use_env(FALSE)</STRONG> has been called, values  for  <STRONG>lines</STRONG>  and  <STRONG>columns</STRONG>
149            specified in <STRONG>terminfo</STRONG> are used.
150
151        <STRONG>o</STRONG>   Otherwise,  if  the  environment variables <EM>LINES</EM> and <EM>COLUMNS</EM> exist,
152            their values are used.  If these environment variables do not exist
153            and  the program is running in a window, the current window size is
154            used.  Otherwise, if the environment variables do  not  exist,  the
155            values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in the <STRONG>terminfo</STRONG> database are
156            used.
157
158        Parameterized strings should be passed  through  <STRONG>tparm</STRONG>  to  instantiate
159        them.   All  <STRONG>terminfo</STRONG> strings (including the output of <STRONG>tparm</STRONG>) should be
160        printed with <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>.  Call <STRONG>reset_shell_mode</STRONG> to restore  the  tty
161        modes before exiting [see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>].
162
163        Programs which use cursor addressing should
164
165        <STRONG>o</STRONG>   output <STRONG>enter_ca_mode</STRONG> upon startup and
166
167        <STRONG>o</STRONG>   output <STRONG>exit_ca_mode</STRONG> before exiting.
168
169        Programs which execute shell subprocesses should
170
171        <STRONG>o</STRONG>   call  <STRONG>reset_shell_mode</STRONG>  and output <STRONG>exit_ca_mode</STRONG> before the shell is
172            called and
173
174        <STRONG>o</STRONG>   output <STRONG>enter_ca_mode</STRONG> and call <STRONG>reset_prog_mode</STRONG> after returning  from
175            the shell.
176
177        The  <STRONG>setupterm</STRONG> routine reads in the <STRONG>terminfo</STRONG> database, initializing the
178        <STRONG>terminfo</STRONG> structures, but does not  set  up  the  output  virtualization
179        structures used by <STRONG>curses</STRONG>.  These are its parameters:
180
181           <EM>term</EM> is the terminal type, a character string.  If <EM>term</EM> is null, the
182                environment variable <EM>TERM</EM> is used.
183
184           <EM>filedes</EM>
185                is the file descriptor used for getting  and  setting  terminal
186                I/O modes.
187
188                Higher-level  applications use <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG> for initializing the
189                terminal, passing an output <EM>stream</EM> rather  than  a  <EM>descriptor</EM>.
190                In   curses,  the  two  are  the  same  because  <STRONG>newterm</STRONG>  calls
191                <STRONG>setupterm</STRONG>, passing the file descriptor derived from its  output
192                stream parameter.
193
194           <EM>errret</EM>
195                points  to  an  optional  location where an error status can be
196                returned to the caller.  If <EM>errret</EM> is not null, then  <STRONG>setupterm</STRONG>
197                returns  <STRONG>OK</STRONG>  or  <STRONG>ERR</STRONG>  and  stores a status value in the integer
198                pointed to by <EM>errret</EM>.  A  return  value  of  <STRONG>OK</STRONG>  combined  with
199                status of <STRONG>1</STRONG> in <EM>errret</EM> is normal.
200
201                If <STRONG>ERR</STRONG> is returned, examine <EM>errret</EM>:
202
203                <STRONG>1</STRONG>    means  that  the  terminal is hardcopy, cannot be used for
204                     <EM>curses</EM> applications.
205
206                     <STRONG>setupterm</STRONG> determines if the entry is a  hardcopy  type  by
207                     checking the <STRONG>hc</STRONG> (<STRONG>hardcopy</STRONG>) capability.
208
209                <STRONG>0</STRONG>    means  that the terminal could not be found, or that it is
210                     a generic type, having too little information  for  <EM>curses</EM>
211                     applications to run.
212
213                     <STRONG>setupterm</STRONG>  determines  if  the  entry is a generic type by
214                     checking the <STRONG>gn</STRONG> (<STRONG>generic_type</STRONG>) capability.
215
216                <STRONG>-1</STRONG>   means that the <EM>terminfo</EM> database could not be found.
217
218                If <EM>errret</EM> is null,  <STRONG>setupterm</STRONG>  prints  an  error  message  upon
219                finding an error and exits.  Thus, the simplest call is:
220
221                <STRONG>setupterm((char</STRONG> <STRONG>*)0,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0);</STRONG>,
222
223           which uses all the defaults and sends the output to <STRONG>stdout</STRONG>.
224
225
226 </PRE><H3><a name="h3-The-Terminal-State">The Terminal State</a></H3><PRE>
227        The  <STRONG>setupterm</STRONG>  routine  stores its information about the terminal in a
228        <EM>TERMINAL</EM> structure pointed to by the global variable <STRONG>cur_term</STRONG>.   If  it
229        detects  an error, or decides that the terminal is unsuitable (hardcopy
230        or generic), it discards this information, making it not  available  to
231        applications.
232
233        If  <STRONG>setupterm</STRONG>  is called repeatedly for the same terminal type, it will
234        reuse  the  information.   It  maintains  only  one  copy  of  a  given
235        terminal's  capabilities  in  memory.   If  it  is called for different
236        terminal types,  <STRONG>setupterm</STRONG>  allocates  new  storage  for  each  set  of
237        terminal capabilities.
238
239        The  <STRONG>set_curterm</STRONG>  routine  sets <STRONG>cur_term</STRONG> to <EM>nterm</EM>, and makes all of the
240        <STRONG>terminfo</STRONG> boolean, numeric, and string variables  use  the  values  from
241        <EM>nterm</EM>.  It returns the old value of <STRONG>cur_term</STRONG>.
242
243        The  <STRONG>del_curterm</STRONG>  routine frees the space pointed to by <EM>oterm</EM> and makes
244        it available for further use.   If  <EM>oterm</EM>  is  the  same  as  <STRONG>cur_term</STRONG>,
245        references  to  any  of  the  <STRONG>terminfo</STRONG>  boolean,  numeric,  and  string
246        variables thereafter  may  refer  to  invalid  memory  locations  until
247        another <STRONG>setupterm</STRONG> has been called.
248
249        The  <STRONG>restartterm</STRONG>  routine  is  similar to <STRONG>setupterm</STRONG> and <STRONG>initscr</STRONG>, except
250        that it is called after restoring  memory  to  a  previous  state  (for
251        example,   when   reloading  a  game  saved  as  a  core  image  dump).
252        <STRONG>restartterm</STRONG> assumes that the windows and the input and  output  options
253        are  the  same as when memory was saved, but the terminal type and baud
254        rate may be different.   Accordingly,  <STRONG>restartterm</STRONG>  saves  various  tty
255        state bits, calls <STRONG>setupterm</STRONG>, and then restores the bits.
256
257
258 </PRE><H3><a name="h3-Formatting-Output">Formatting Output</a></H3><PRE>
259        The  <STRONG>tparm</STRONG>  routine  instantiates the string <EM>str</EM> with parameters <EM>pi</EM>.  A
260        pointer is returned to the result of <EM>str</EM> with the  parameters  applied.
261        Application  developers  should  keep  in  mind  these  quirks  of  the
262        interface:
263
264        <STRONG>o</STRONG>   Although <STRONG>tparm</STRONG>'s actual parameters may be integers or strings,  the
265            prototype expects <STRONG>long</STRONG> (integer) values.
266
267        <STRONG>o</STRONG>   Aside  from  the  <STRONG>set_attributes</STRONG>  (<STRONG>sgr</STRONG>)  capability,  most terminal
268            capabilities require no more than one or two parameters.
269
270        <STRONG>o</STRONG>   Padding information is ignored  by  <STRONG>tparm</STRONG>;  it  is  interpreted  by
271            <STRONG>tputs</STRONG>.
272
273        <STRONG>o</STRONG>   The  capability  string  is  null-terminated.   Use "\200" where an
274            ASCII NUL is needed in the output.
275
276        <STRONG>tiparm</STRONG> is a newer form of <STRONG>tparm</STRONG> which uses  <EM>&lt;stdarg.h&gt;</EM>  rather  than  a
277        fixed-parameter list.  Its numeric parameters are integers (int) rather
278        than longs.
279
280        Both <STRONG>tparm</STRONG> and <STRONG>tiparm</STRONG> assume that  the  application  passes  parameters
281        consistent  with the terminal description.  Two extensions are provided
282        as alternatives to deal with untrusted data:
283
284        <STRONG>o</STRONG>   <STRONG>tiparm_s</STRONG> is an extension which is a safer formatting function  than
285            <STRONG>tparm</STRONG> or <STRONG>tiparm</STRONG>, because it allows the developer to tell the curses
286            library how many parameters to expect in the  parameter  list,  and
287            which may be string parameters.
288
289            The  <EM>mask</EM>  parameter has one bit set for each of the parameters (up
290            to 9) which will be passed as char* rather than numbers.
291
292        <STRONG>o</STRONG>   The  extension  <STRONG>tiscan_s</STRONG>  allows  the  application  to  inspect   a
293            formatting capability to see what the curses library would assume.
294
295
296 </PRE><H3><a name="h3-Output-Functions">Output Functions</a></H3><PRE>
297        String  capabilities  can  contain  padding  information,  a time delay
298        (accommodating performance limitations of hardware terminals) expressed
299        as <STRONG>$&lt;</STRONG><EM>n</EM><STRONG>&gt;</STRONG>, where <EM>n</EM> is a nonnegative integral count of milliseconds.  If <EM>n</EM>
300        exceeds 30,000 (thirty seconds), it is capped at that value.
301
302        The <STRONG>tputs</STRONG> routine interprets time-delay information in the  string  <EM>str</EM>
303        and outputs it, executing the delays:
304
305        <STRONG>o</STRONG>   The  <EM>str</EM> parameter must be a terminfo string variable or the return
306            value from <STRONG>tparm</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tgetstr</STRONG>, or <STRONG>tgoto</STRONG>.
307
308            The <STRONG>tgetstr</STRONG> and <STRONG>tgoto</STRONG> functions are part of the <EM>termcap</EM>  interface,
309            which  happens  to  share  this  function  name  with  the <EM>terminfo</EM>
310            interface.
311
312        <STRONG>o</STRONG>   <EM>affcnt</EM> is the number of lines affected, or 1 if not applicable.
313
314        <STRONG>o</STRONG>   <EM>putc</EM> is a <EM>putchar</EM>-like function to which the characters are passed,
315            one at a time.
316
317            If  <STRONG>tputs</STRONG>  processes  a  time-delay,  it  uses the <STRONG><A HREF="curs_util.3x.html">delay_output(3x)</A></STRONG>
318            function, routing any resulting  padding  characters  through  this
319            function.
320
321        The  <STRONG>putp</STRONG>  routine  calls  <STRONG>tputs(</STRONG><EM>str</EM><STRONG>,</STRONG>  <STRONG>1,</STRONG> <STRONG>putchar)</STRONG>.  The output of <STRONG>putp</STRONG>
322        always goes to <STRONG>stdout</STRONG>, rather than the <EM>filedes</EM> specified in <STRONG>setupterm</STRONG>.
323
324        The <STRONG>vidputs</STRONG> routine displays the string on the terminal  in  the  video
325        attribute mode <EM>attrs</EM>, which is any combination of the attributes listed
326        in <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.  The characters are passed to the <EM>putchar</EM>-like  function
327        <EM>putc</EM>.
328
329        The <STRONG>vidattr</STRONG> routine is like the <STRONG>vidputs</STRONG> routine, except that it outputs
330        through <EM>putchar</EM>.
331
332        The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines correspond to vidattr  and  vidputs,
333        respectively.   They  use a set of arguments for representing the video
334        attributes plus color, i.e.,
335
336        <STRONG>o</STRONG>   <EM>attrs</EM> of type <STRONG>attr_t</STRONG> for the attributes and
337
338        <STRONG>o</STRONG>   <EM>pair</EM> of type <STRONG>short</STRONG> for the color pair number.
339
340        The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines are designed to  use  the  attribute
341        constants with the <STRONG>WA_</STRONG> prefix.
342
343        X/Open  Curses  reserves  the <EM>opts</EM> argument for future use, saying that
344        applications must provide a null pointer  for  that  argument.   As  an
345        extension,  this  implementation allows <EM>opts</EM> to be used as a pointer to
346        <STRONG>int</STRONG>, which overrides the <EM>pair</EM> (<STRONG>short</STRONG>) argument.
347
348        The <STRONG>mvcur</STRONG> routine provides low-level cursor motion.   It  takes  effect
349        immediately  (rather  than at the next refresh).  Unlike the other low-
350        level output functions, which either write to the  standard  output  or
351        pass an output function parameter, <STRONG>mvcur</STRONG> uses an output file descriptor
352        derived from the output stream parameter of <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>.
353
354        While <STRONG>putp</STRONG> and <STRONG>mvcur</STRONG> are low-level functions which do not use the high-
355        level  curses  state,  they are declared in <STRONG>&lt;curses.h&gt;</STRONG> because System V
356        did this (see <EM>HISTORY</EM>).
357
358
359 </PRE><H3><a name="h3-Terminal-Capability-Functions">Terminal Capability Functions</a></H3><PRE>
360        The <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG> and <STRONG>tigetstr</STRONG> routines return the value  of  the
361        capability  corresponding  to the <STRONG>terminfo</STRONG> <EM>capname</EM> passed to them, such
362        as <STRONG>xenl</STRONG>.  The <EM>capname</EM> for each capability is given in the table  column
363        entitled <EM>capname</EM> code in the capabilities section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
364
365        These routines return special values to denote errors.
366
367        The <STRONG>tigetflag</STRONG> routine returns
368
369        <STRONG>-1</STRONG>     if <EM>capname</EM> is not a boolean capability, or
370
371        <STRONG>0</STRONG>      if it is canceled or absent from the terminal description.
372
373        The <STRONG>tigetnum</STRONG> routine returns
374
375        <STRONG>-2</STRONG>     if <EM>capname</EM> is not a numeric capability, or
376
377        <STRONG>-1</STRONG>     if it is canceled or absent from the terminal description.
378
379        The <STRONG>tigetstr</STRONG> routine returns
380
381        <STRONG>(char</STRONG> <STRONG>*)-1</STRONG>
382               if <EM>capname</EM> is not a string capability, or
383
384        <STRONG>0</STRONG>      if it is canceled or absent from the terminal description.
385
386
387 </PRE><H3><a name="h3-Terminal-Capability-Names">Terminal Capability Names</a></H3><PRE>
388        These null-terminated arrays contain
389
390        <STRONG>o</STRONG>   the short <EM>terminfo</EM> names ("codes"),
391
392        <STRONG>o</STRONG>   the <EM>termcap</EM> names ("names"), and
393
394        <STRONG>o</STRONG>   the long <EM>terminfo</EM> names ("fnames")
395
396        for each of the predefined <EM>terminfo</EM> variables:
397
398               <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*boolnames[]</STRONG>, <STRONG>*boolcodes[]</STRONG>, <STRONG>*boolfnames[]</STRONG>
399               <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*numnames[]</STRONG>, <STRONG>*numcodes[]</STRONG>, <STRONG>*numfnames[]</STRONG>
400               <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*strnames[]</STRONG>, <STRONG>*strcodes[]</STRONG>, <STRONG>*strfnames[]</STRONG>
401
402
403 </PRE><H3><a name="h3-Releasing-Memory">Releasing Memory</a></H3><PRE>
404        Each successful call to <STRONG>setupterm</STRONG> allocates memory to hold the terminal
405        description.  As a side-effect, it  sets  <STRONG>cur_term</STRONG>  to  point  to  this
406        memory.  If an application calls
407
408               <STRONG>del_curterm(cur_term);</STRONG>
409
410        the memory will be freed.
411
412        The  formatting functions <STRONG>tparm</STRONG> and <STRONG>tiparm</STRONG> extend the storage allocated
413        by <STRONG>setupterm</STRONG>:
414
415        <STRONG>o</STRONG>   the "static" terminfo variables [a-z].  Before <EM>ncurses</EM>  6.3,  those
416            were  shared by all screens.  With <EM>ncurses</EM> 6.3, those are allocated
417            per screen.  See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details.
418
419        <STRONG>o</STRONG>   to improve performance, <EM>ncurses</EM> 6.3 caches the result of  analyzing
420            terminfo  strings  for  their parameter types.  That is stored as a
421            binary tree referenced from the <EM>TERMINAL</EM> structure.
422
423        The higher-level <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> functions use <STRONG>setupterm</STRONG>.  Normally
424        they  do  not free this memory, but it is possible to do that using the
425        <STRONG><A HREF="curs_initscr.3x.html">delscreen(3x)</A></STRONG> function.
426
427
428 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
429        Routines that return an integer return <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>  (SVr4
430        only  specifies  "an  integer  value  other  than <STRONG>ERR</STRONG>") upon successful
431        completion,  unless  otherwise   noted   in   the   preceding   routine
432        descriptions.
433
434        Routines that return pointers always return <STRONG>NULL</STRONG> on error.
435
436        X/Open defines no error conditions.  In this implementation
437
438           <STRONG>del_curterm</STRONG>
439                returns an error if its terminal parameter is null.
440
441           <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error-codes.
442
443           <STRONG>restartterm</STRONG>
444                returns an error if the associated call to <STRONG>setupterm</STRONG> returns an
445                error.
446
447           <STRONG>setupterm</STRONG>
448                returns an error if it cannot allocate enough memory, or create
449                the  initial  windows  (stdscr,  curscr,  newscr).  Other error
450                conditions are documented above.
451
452           <STRONG>tparm</STRONG>
453                returns a null  if  the  capability  would  require  unexpected
454                parameters,  e.g.,  too  many,  too  few,  or  incorrect  types
455                (strings where integers are expected, or vice versa).
456
457           <STRONG>tputs</STRONG>
458                returns an error if the string parameter is null.  It does  not
459                detect  I/O errors: X/Open states that <STRONG>tputs</STRONG> ignores the return
460                value of the output function <EM>putc</EM>.
461
462
463 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
464        According to X/Open Curses, any of the <EM>enhanced</EM> <EM>curses</EM> functions may be
465        implemented  as  macros.   The  term  "enhanced" refers to features not
466        found in SVr4 curses.
467
468        <STRONG>ncurses</STRONG> uses macros
469
470        <STRONG>o</STRONG>   for functions which return values via their parameters,
471
472        <STRONG>o</STRONG>   to support obsolete features,
473
474        <STRONG>o</STRONG>   to reuse functions, e.g., those that move the cursor before another
475            operation, and
476
477        <STRONG>o</STRONG>   a few special cases.
478
479        The  <STRONG>vid_puts</STRONG> function in <STRONG>ncurses</STRONG> is a special case.  It was originally
480        implemented based on a draft of X/Open Curses, as a macro, before other
481        parts of the <STRONG>ncurses</STRONG> wide-character API were developed.
482
483
484 </PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
485        The  functions  marked as extensions were designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and
486        are not found in SVr4 <EM>curses</EM>, 4.4BSD  <EM>curses</EM>,  or  any  other  previous
487        curses implementation.
488
489
490 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
491        <STRONG>setterm</STRONG> is not described by X/Open and must be considered non-portable.
492        All other functions are as described by X/Open.
493
494
495 </PRE><H3><a name="h3-Compatibility-Macros">Compatibility Macros</a></H3><PRE>
496        This implementation  provides  a  few  macros  for  compatibility  with
497        systems  before  SVr4  (see  section  "HISTORY"  below).   They include
498        <STRONG>Bcrmode</STRONG>, <STRONG>Bfixterm</STRONG>, <STRONG>Bgettmode</STRONG>,  <STRONG>Bnocrmode</STRONG>,  <STRONG>Bresetterm</STRONG>,  <STRONG>Bsaveterm</STRONG>,  and
499        <STRONG>Bsetterm</STRONG>.
500
501        In  SVr4,  these  are  found  in  <EM>curses.h</EM>, but except for <STRONG>setterm</STRONG>, are
502        likewise macros.  The one function, <STRONG>setterm</STRONG>, is mentioned in the manual
503        page.  It further notes that <STRONG>setterm</STRONG> was replaced by <STRONG>setupterm</STRONG>, stating
504        that the call
505               setupterm(<EM>term</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0)</STRONG>
506        provides the same  functionality  as  <STRONG>setterm(</STRONG><EM>term</EM><STRONG>)</STRONG>,  discouraging  the
507        latter  for  new programs.  <EM>ncurses</EM> implements each of these symbols as
508        macros for BSD <EM>curses</EM> compatibility.
509
510
511 </PRE><H3><a name="h3-Legacy-Data">Legacy Data</a></H3><PRE>
512        <STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>.  This  is  not
513        part of X/Open Curses, but is assumed by some applications.
514
515        Other  implementions  may not declare the capability name arrays.  Some
516        provide them without declaring them.  X/Open does not specify them.
517
518        Extended terminal capability names, e.g., as defined by <STRONG>tic</STRONG> <STRONG>-x</STRONG>, are not
519        stored in the arrays described here.
520
521
522 </PRE><H3><a name="h3-Output-Buffering">Output Buffering</a></H3><PRE>
523        Older  versions  of  <EM>ncurses</EM> assumed that the file descriptor passed to
524        <STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses buffered I/O, and would write to
525        the  corresponding  stream.   In  addition  to  the limitation that the
526        terminal was left  in  block-buffered  mode  on  exit  (like  System  V
527        curses),  it  was  problematic because <EM>ncurses</EM> did not allow a reliable
528        way to cleanup on receiving SIGTSTP.
529
530        The current version (ncurses6) uses output buffers managed directly  by
531        <EM>ncurses</EM>.  Some of the low-level functions described in this manual page
532        write to the standard output.  They are  not  signal-safe.   The  high-
533        level  functions  in  <EM>ncurses</EM> use alternate versions of these functions
534        using the more reliable buffering scheme.
535
536
537 </PRE><H3><a name="h3-Function-Prototypes">Function Prototypes</a></H3><PRE>
538        The X/Open Curses prototypes  are  based  on  the  SVr4  curses  header
539        declarations,  which  were  defined at the same time the C language was
540        first standardized in the late 1980s.
541
542        <STRONG>o</STRONG>   X/Open Curses uses <STRONG>const</STRONG>  less  effectively  than  a  later  design
543            might,  in  some cases applying it needlessly to values are already
544            constant, and in most cases overlooking parameters  which  normally
545            would  use <STRONG>const</STRONG>.  Using constant parameters for functions which do
546            not use <STRONG>const</STRONG> may prevent the program from compiling.  On the other
547            hand, <EM>writable</EM> <EM>strings</EM> are an obsolescent feature.
548
549            As  an  extension,  this implementation can be configured to change
550            the function prototypes to use the <STRONG>const</STRONG> keyword.  The <EM>ncurses</EM>  ABI
551            6 enables this feature by default.
552
553        <STRONG>o</STRONG>   X/Open  Curses  prototypes <STRONG>tparm</STRONG> with a fixed number of parameters,
554            rather than a variable argument list.
555
556            This implementation uses a  variable  argument  list,  but  can  be
557            configured  to use the fixed-parameter list.  Portable applications
558            should provide 9 parameters after the format; zeroes are  fine  for
559            this purpose.
560
561            In  response  to review comments by Thomas E. Dickey, X/Open Curses
562            Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
563
564            While <STRONG>tiparm</STRONG> is always provided in <EM>ncurses</EM>, the older form is  only
565            available  as  a build-time configuration option.  If not specially
566            configured, <STRONG>tparm</STRONG> is the same as <STRONG>tiparm</STRONG>.
567
568        Both forms of <STRONG>tparm</STRONG> have drawbacks:
569
570        <STRONG>o</STRONG>   Most of the calls to <STRONG>tparm</STRONG> use only one or two parameters.  Passing
571            nine on each call is awkward.
572
573            Using  <STRONG>long</STRONG>  for the numeric parameter type is a workaround to make
574            the parameter use the same amount of  stack  as  a  pointer.   That
575            approach  dates  back  to the mid-1980s, before C was standardized.
576            Since then, there is a standard (and pointers are not  required  to
577            fit in a long).
578
579        <STRONG>o</STRONG>   Providing  the  right  number of parameters for a variadic function
580            such  as  <STRONG>tiparm</STRONG>  can  be  a  problem,  in  particular  for  string
581            parameters.   However,  only a few terminfo capabilities use string
582            parameters (e.g., the ones used for programmable function keys).
583
584            The <EM>ncurses</EM> library checks usage of these capabilities, and returns
585            an  error  if  the capability mishandles string parameters.  But it
586            cannot check if a calling program provides  strings  in  the  right
587            places for the <STRONG>tparm</STRONG> calls.
588
589            The  <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>  program  checks  its use of these capabilities with a
590            table, so that it calls <STRONG>tparm</STRONG> correctly.
591
592    <STRONG>Special</STRONG> <EM>TERM</EM> <STRONG>treatment</STRONG>
593        If configured to use the terminal-driver, e.g., for the MinGW port,
594
595        <STRONG>o</STRONG>   <STRONG>setupterm</STRONG> interprets a missing/empty <EM>TERM</EM> variable as  the  special
596            value "unknown".
597
598            SVr4 curses uses the special value "dumb".
599
600            The  difference  between  the  two  is  that the former uses the <STRONG>gn</STRONG>
601            (<STRONG>generic_type</STRONG>) terminfo capability, while the latter does  not.   A
602            generic terminal is unsuitable for full-screen applications.
603
604        <STRONG>o</STRONG>   <STRONG>setupterm</STRONG>  allows explicit use of the the windows console driver by
605            checking if <STRONG>$TERM</STRONG> is set to "#win32con" or an abbreviation of  that
606            string.
607
608
609 </PRE><H3><a name="h3-Other-Portability-Issues">Other Portability Issues</a></H3><PRE>
610        In  System  V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return type and returns
611        <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.  We have chosen to implement the X/Open Curses semantics.
612
613        In System V Release 4, the third argument of <STRONG>tputs</STRONG>  has  the  type  <STRONG>int</STRONG>
614        <STRONG>(*putc)(char)</STRONG>.
615
616        At  least one implementation of X/Open Curses (Solaris) returns a value
617        other than <STRONG>OK</STRONG>/<STRONG>ERR</STRONG> from <STRONG>tputs</STRONG>.  That returns the length of  the  string,
618        and does no error-checking.
619
620        X/Open  notes  that after calling <STRONG>mvcur</STRONG>, the curses state may not match
621        the actual terminal state, and that an  application  should  touch  and
622        refresh  the  window before resuming normal curses calls.  Both <EM>ncurses</EM>
623        and System V Release 4 curses implement <STRONG>mvcur</STRONG>  using  the  <EM>SCREEN</EM>  data
624        allocated  in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.  So though it is documented as
625        a terminfo function, <STRONG>mvcur</STRONG> is really a curses  function  which  is  not
626        well specified.
627
628        X/Open  states  that  the  old  location must be given for <STRONG>mvcur</STRONG>.  This
629        implementation allows the caller to use -1's for the old ordinates.  In
630        that case, the old location is unknown.
631
632
633 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
634        SVr2 introduced the terminfo feature.  Its programming manual mentioned
635        the following low-level functions.
636
637        <STRONG>Function</STRONG>    <STRONG>Description</STRONG>
638        ------------------------------------------------------------------------
639        <STRONG>fixterm</STRONG>     restore tty to "in curses" state
640        <STRONG>gettmode</STRONG>    establish current tty modes
641        <STRONG>mvcur</STRONG>       low level cursor motion
642        <STRONG>putp</STRONG>        utility function that uses <STRONG>tputs</STRONG>  to  send  characters  via
643                    <EM>putchar</EM>.
644        <STRONG>resetterm</STRONG>   set tty modes to "out of curses" state
645        <STRONG>resetty</STRONG>     reset tty flags to stored value
646        <STRONG>saveterm</STRONG>    save current modes as "in curses" state
647        <STRONG>savetty</STRONG>     store current tty flags
648        <STRONG>setterm</STRONG>     establish terminal with given type
649        <STRONG>setupterm</STRONG>   establish terminal with given type
650        <STRONG>tparm</STRONG>       instantiate a string expression with parameters
651        <STRONG>tputs</STRONG>       apply padding information to a string
652        <STRONG>vidattr</STRONG>     like <STRONG>vidputs</STRONG>, but outputs through <EM>putchar</EM>
653        <STRONG>vidputs</STRONG>     output  a  string  to  put  terminal  in  a specified video
654                    attribute mode
655
656        The programming manual also mentioned functions  provided  for  <EM>termcap</EM>
657        compatibility (commenting that they "may go away at a later date").
658
659        <STRONG>Function</STRONG>   <STRONG>Description</STRONG>
660        ------------------------------------------------------------------------
661        <STRONG>tgetent</STRONG>    look up <EM>termcap</EM> entry for given <EM>name</EM>
662        <STRONG>tgetflag</STRONG>   get boolean entry for given <EM>id</EM>
663        <STRONG>tgetnum</STRONG>    get numeric entry for given <EM>id</EM>
664        <STRONG>tgetstr</STRONG>    get string entry for given <EM>id</EM>
665        <STRONG>tgoto</STRONG>      apply parameters to given capability
666        <STRONG>tputs</STRONG>      apply  padding  to  capability,  calling  a  function to put
667                   characters
668
669        Early terminfo programs obtained capability values  from  the  <EM>TERMINAL</EM>
670        structure initialized by <STRONG>setupterm</STRONG>.
671
672        SVr3  extended  terminfo  by  adding  functions  to retrieve capability
673        values (like the termcap interface), and reusing <STRONG>tgoto</STRONG> and <STRONG>tputs</STRONG>:
674
675        <STRONG>Function</STRONG>    <STRONG>Description</STRONG>
676        ------------------------------------------------------------------------
677
678        <STRONG>tigetflag</STRONG>   get boolean entry for given <EM>id</EM>
679        <STRONG>tigetnum</STRONG>    get numeric entry for given <EM>id</EM>
680        <STRONG>tigetstr</STRONG>    get string entry for given <EM>id</EM>
681
682        SVr3 also replaced several of the SVr2 <EM>terminfo</EM> functions which had  no
683        counterpart in the <EM>termcap</EM> interface, documenting them as obsolete.
684
685        <STRONG>Function</STRONG>    <STRONG>Replaced</STRONG> <STRONG>by</STRONG>
686        ------------------------------------------------------------------------
687        crmode      cbreak
688        fixterm     reset_prog_mode
689        gettmode    <EM>n/a</EM>
690        nocrmode    nocbreak
691        resetterm   reset_shell_mode
692        saveterm    def_prog_mode
693        setterm     setupterm
694
695        SVr3  kept  the  <STRONG>mvcur</STRONG>, <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> functions, along with <STRONG>putp</STRONG>,
696        <STRONG>tparm</STRONG> and <STRONG>tputs</STRONG>.  The  latter  were  needed  to  support  padding,  and
697        handling  functions  such  as  <STRONG>vidattr</STRONG>  (which  used  more than the two
698        parameters supported by <STRONG>tgoto</STRONG>).
699
700        SVr3  introduced  the  functions   for   switching   between   terminal
701        descriptions,   e.g.,   <STRONG>set_curterm</STRONG>.   Some  of  that  was  incremental
702        improvements to the SVr2 library:
703
704        <STRONG>o</STRONG>   The <EM>TERMINAL</EM> type definition was introduced  in  SVr3.01,  for  the
705            <STRONG>term</STRONG> structure provided in SVr2.
706
707        <STRONG>o</STRONG>   The  various  global  variables such as <STRONG>boolnames</STRONG> were mentioned in
708            the programming manual at this point,  though  the  variables  were
709            provided in SVr2.
710
711        SVr4 added the <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> functions.
712
713        There are other low-level functions declared in the <EM>curses</EM> header files
714        on Unix systems,  but  none  were  documented.   The  functions  marked
715        "obsolete" remained in use by the Unix <STRONG>vi(1)</STRONG> editor.
716
717
718 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
719        <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_kernel.3x.html">curs_kernel(3x)</A></STRONG>,   <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>,
720        <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,  <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,   <STRONG>putc(3)</STRONG>,   <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>,
721        <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
722
723
724
725 ncurses 6.4                       2023-12-23                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
726 </PRE>
727 <div class="nav">
728 <ul>
729 <li><a href="#h2-NAME">NAME</a></li>
730 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
731 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
732 <ul>
733 <li><a href="#h3-Initialization">Initialization</a></li>
734 <li><a href="#h3-The-Terminal-State">The Terminal State</a></li>
735 <li><a href="#h3-Formatting-Output">Formatting Output</a></li>
736 <li><a href="#h3-Output-Functions">Output Functions</a></li>
737 <li><a href="#h3-Terminal-Capability-Functions">Terminal Capability Functions</a></li>
738 <li><a href="#h3-Terminal-Capability-Names">Terminal Capability Names</a></li>
739 <li><a href="#h3-Releasing-Memory">Releasing Memory</a></li>
740 </ul>
741 </li>
742 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
743 <li><a href="#h2-NOTES">NOTES</a></li>
744 <li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
745 <li><a href="#h2-PORTABILITY">PORTABILITY</a>
746 <ul>
747 <li><a href="#h3-Compatibility-Macros">Compatibility Macros</a></li>
748 <li><a href="#h3-Legacy-Data">Legacy Data</a></li>
749 <li><a href="#h3-Output-Buffering">Output Buffering</a></li>
750 <li><a href="#h3-Function-Prototypes">Function Prototypes</a></li>
751 <li><a href="#h3-Other-Portability-Issues">Other Portability Issues</a></li>
752 </ul>
753 </li>
754 <li><a href="#h2-HISTORY">HISTORY</a></li>
755 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
756 </ul>
757 </div>
758 </BODY>
759 </HTML>