ncurses 6.1 - patch 20190720
[ncurses.git] / announce.html.in
1 <!--
2   $Id: announce.html.in,v 1.92 2018/01/27 02:09:18 tom Exp $
3   ****************************************************************************
4   * Copyright (c) 1998-2015,2018 Free Software Foundation, Inc.              *
5   *                                                                          *
6   * Permission is hereby granted, free of charge, to any person obtaining a  *
7   * copy of this software and associated documentation files (the            *
8   * "Software"), to deal in the Software without restriction, including      *
9   * without limitation the rights to use, copy, modify, merge, publish,      *
10   * distribute, distribute with modifications, sublicense, and/or sell       *
11   * copies of the Software, and to permit persons to whom the Software is    *
12   * furnished to do so, subject to the following conditions:                 *
13   *                                                                          *
14   * The above copyright notice and this permission notice shall be included  *
15   * in all copies or substantial portions of the Software.                   *
16   *                                                                          *
17   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
18   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
19   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
20   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
21   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
22   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
23   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
24   *                                                                          *
25   * Except as contained in this notice, the name(s) of the above copyright   *
26   * holders shall not be used in advertising or otherwise to promote the     *
27   * sale, use or other dealings in this Software without prior written       *
28   * authorization.                                                           *
29   ****************************************************************************
30 -->
31 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
32
33 <html>
34 <head>
35   <meta name="generator" content=
36   "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
37
38   <title>Announcing ncurses @VERSION@</title>
39   <link rev="made" href="mailto:bug-ncurses@gnu.org">
40   <meta http-equiv="Content-Type" content=
41   "text/html; charset=us-ascii">
42   <style type="text/css">
43 p,li { max-width:700px; }
44   dd { max-width:630px; }
45   *.main-name {
46         font-style: italic;
47         font-variant: small-caps;
48   }
49   *.part-name {
50         font-family: "Andale Mono", "Monotype.com", monospace;
51         font-size: 12pt;
52         font-weight: bold;
53   }
54   </style>
55 </head>
56
57 <body>
58   <h1 class="no-header">Announcing ncurses @VERSION@</h1>
59
60   <h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
61
62   <p>The <span class="main-name">ncurses</span> (new curses)
63   library is a free software emulation of curses in System V
64   Release 4.0 (SVr4), and more. It uses terminfo format, supports
65   pads and color and multiple highlights and forms characters and
66   function-key mapping, and has all the other SVr4-curses
67   enhancements over BSD curses. SVr4 curses became the basis of
68   X/Open Curses.</p>
69
70   <p>In mid-June 1995, the maintainer of 4.4BSD curses declared
71   that he considered 4.4BSD curses obsolete, and encouraged the
72   keepers of <span class="main-name">unix</span> releases such as
73   BSD/OS, FreeBSD and NetBSD to switch over to <span class=
74   "main-name">ncurses</span>.</p>
75
76   <p>Since 1995, <span class="main-name">ncurses</span> has been
77   ported to many systems:</p>
78
79   <ul>
80     <li>It is used in almost every system based on the Linux kernel
81     (aside from some embedded applications).</li>
82
83     <li>It is used as the system curses library on OpenBSD, FreeBSD
84     and OSX.</li>
85
86     <li>It is used in environments such as Cygwin and MinGW. The
87     first of these was EMX on OS/2 Warp.</li>
88
89     <li>It is used (though usually not as the <em>system</em>
90     curses) on all of the vendor <span class=
91     "main-name">unix</span> systems, e.g., AIX, HP-UX, IRIX64, SCO,
92     Solaris, Tru64.</li>
93
94     <li>It should work readily on any ANSI/POSIX-conforming
95     <span class="main-name">unix</span>.</li>
96   </ul>
97
98   <p>The distribution includes the library and support utilities,
99   including</p>
100
101   <ul>
102     <li><a href=
103     "https://invisible-island.net/ncurses/man/captoinfo.1m.html"><span class="part-name">
104     captoinfo</span></a>, a termcap conversion tool</li>
105
106     <li><a href=
107     "https://invisible-island.net/ncurses/man/clear.1.html"><span class="part-name">
108     clear</span></a>, utility for clearing the screen</li>
109
110     <li><a href=
111     "https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class="part-name">
112     infocmp</span></a>, the terminfo decompiler</li>
113
114     <li><a href=
115     "https://invisible-island.net/ncurses/man/tabs.1.html"><span class="part-name">
116     tabs</span></a>, set tabs on a terminal</li>
117
118     <li><a href=
119     "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
120     tic</span></a>, the terminfo compiler</li>
121
122     <li><a href=
123     "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name">
124     toe</span></a>, list (table of) terminfo entries</li>
125
126     <li><a href=
127     "https://invisible-island.net/ncurses/man/tput.1.html"><span class="part-name">
128     tput</span></a>, utility for retrieving terminal capabilities
129     in shell scripts</li>
130
131     <li><a href=
132     "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name">
133     tset</span></a>, to initialize the terminal</li>
134   </ul>
135
136   <p>Full manual pages are provided for the library and tools.</p>
137
138   <p>The <span class="main-name">ncurses</span> distribution is
139   available at <span class="main-name">ncurses</span>' <a href=
140   "https://invisible-island.net/ncurses/">homepage</a>:</p>
141
142   <blockquote>
143     <p><a href=
144     "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/</a>
145     or<br>
146     <a href=
147     "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a>&nbsp;.</p>
148   </blockquote>
149
150   <p>It is also available via anonymous FTP at the GNU distribution
151   site</p>
152
153   <blockquote>
154     <p><a href=
155     "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.</p>
156   </blockquote>
157
158   <h2><a name="h2-release-notes" id="h2-release-notes">Release
159   Notes</a></h2>
160
161   <p>These notes are for <span class="main-name">ncurses</span>
162   @VERSION@, released <strong>January 27, 2018</strong>.</p>
163
164   <p>This release is designed to be source-compatible with
165   <span class="main-name">ncurses</span> 5.0 through 6.0; providing
166   extensions to the application binary interface (ABI). Although
167   the source can still be configured to support the <span class=
168   "main-name">ncurses</span> 5 ABI, the intent of the release is to
169   provide extensions to the <span class="main-name">ncurses</span>
170   <strong>6</strong> ABI:</p>
171
172   <ul>
173     <li>
174       <p>improve integration of <span class="part-name">tput</span>
175       and <span class="part-name">tset</span></p>
176     </li>
177
178     <li>
179       <p>provide support for extended numeric capabilities.</p>
180     </li>
181   </ul>
182
183   <p>There are, of course, numerous other improvements, listed in
184   this announcement.</p>
185
186   <p>The release notes also mention some bug-fixes, but are focused
187   on new features and improvements to existing features since
188   <span class="main-name">ncurses</span> 6.0 release.</p>
189
190   <h3><a name="h3-library" id="h3-library">Library
191   improvements</a></h3>
192
193   <h4><a name="h4-new-library" id="h4-new-library">New
194   features</a></h4>
195
196   <p>The improved integration of <span class=
197   "part-name">tput</span> and <span class="part-name">tset</span>
198   made only small changes to the libraries. However, supporting
199   extended numeric capabilities required a few changes:</p>
200
201   <ul>
202     <li>
203       <p>The <code>TERMINAL</code> structure in
204       <code>&lt;term.h&gt;</code> is now opaque. Doing that allowed
205       making the structure larger, to hold the extended numeric
206       data.</p>
207
208       <p>A few applications required changes during development of
209       <span class="main-name">ncurses&nbsp;6.1</span> because those
210       applications misused the members of that structure, e.g.,
211       directly modifying it rather than using <a href=
212       "https://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-def_prog_mode_-def_shell_mode">
213       def_prog_mode</a>.</p>
214     </li>
215
216     <li>
217       <p>Having made <code>TERMINAL</code> opaque (and because none
218       of the library functions use anything except a pointer to
219       <code>TERMINAL</code>), it was possible to increase the size
220       of the structure, adding to the end.</p>
221
222       <p>Existing applications which were linked to the
223       <span class="part-name">ncurses&nbsp;6.0</span> high-level
224       (<em>ncurses</em>, <em>ncursesw</em>) and low-level
225       (<em>tinfo</em>, <em>tinfo</em>) libraries should not require
226       re-linking since the binary interface did not change, nor did
227       the structure offsets with <code>TERMINAL</code> change.</p>
228
229       <p>A few applications use the inner <code>TERMTYPE</code>
230       structure's offsets to refer to terminfo capabilities within
231       that structure. Again, those do not require modification
232       because their offsets within <code>TERMINAL</code> did not
233       change.</p>
234     </li>
235
236     <li>
237       <p>When configured for wide-characters, i.e.,
238       &ldquo;ncursesw&rdquo; the <code>TERMINAL</code> structure is
239       extended.</p>
240
241       <p>The new data in <code>TERMINAL</code> holds the same
242       information as <code>TERMTYPE</code>, but with larger numbers
243       (&ldquo;int&rdquo; versus &ldquo;short&rdquo;). It is named
244       <code>TERMTYPE2</code>.</p>
245
246       <p>The library uses this structure internally in preference
247       to <code>TERMTYPE</code>, referring to <code>TERMTYPE</code>
248       only to initialize it for applications that use the
249       capabilities defined in <code>&lt;term.h&gt;</code></p>
250     </li>
251
252     <li>
253       <p>When configured for 8-bit (narrow) characters, the
254       <code>TERMTYPE2</code> structure is not used.</p>
255     </li>
256
257     <li>The updated application binary interface is 6.1.20171230
258     (used for new <a href=
259     "https://invisible-island.net/ncurses/ncurses-mapsyms.html">versioned
260     symbols</a>), although the interface changes were developed
261     several months previously.</li>
262   </ul>
263
264   <p>The motivation for making this extension came from noticing
265   that <a href=
266   "https://invisible-island.net/ncurses/tctest.html#bsd42-numeric-caps">
267   termcap applications</a> could (though not <a href=
268   "https://invisible-island.net/ncurses/ncurses-slang.html#cause_numbers">
269   realistically</a>) use larger numbers than would fit in 16-bits,
270   and the fact that the number of color pairs for a 256-color xterm
271   could not be expressed in terminfo (i.e., 32767 versus 65536).
272   Also, a few terminals support direct-colors, which could use the
273   extension.</p>
274
275   <p>Generally speaking, applications that use internal details of
276   a library are unsupported. There was exactly one exception for
277   <span class="main-name">ncurses</span>: the <span class=
278   "main-name">tack</span> program <em>used</em> the internal
279   details of <code>TERMINAL</code>, because it provides an
280   ncurses-specific feature for interactively modifying a terminfo
281   description and writing the updated description to a text-file.
282   It was possible to not only separate <span class=
283   "main-name">tack</span> from these <a href=
284   "https://invisible-island.net/ncurses/tack.html#portable">internal
285   details of <span class="main-name">ncurses</span></a>, but to
286   generalize it so that the program works with Unix curses
287   (omitting the ncurses-specific feature). That was released as
288   <a href=
289   "https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726">
290   <span class="main-name">tack</span>&nbsp;1.08</a> in July
291   2017.</p>
292
293   <p>While making changes to <span class="main-name">tack</span> to
294   eliminate its dependency upon <span class=
295   "main-name">ncurses</span> internals, the publicly-visible
296   details of those internals were reviewed, and some symbols were
297   moved to private header files, while others were marked
298   explicitly as <span class="main-name">ncurses</span> internals.
299   Future releases of <span class="main-name">ncurses</span> may
300   eliminate some of those symbols (such as those used by
301   <span class="main-name">tack</span>&nbsp;1.07) because they are
302   neither part of the API or the ABI.</p>
303
304   <p>Using the <code>TERMTYPE2</code> extended numeric
305   capabilities, it is possible to support both color pair values
306   and color values past 32767. Taking compatibility into account,
307   developers readily understand that neither function signatures
308   nor structure offsets change. Also, existing functions have to
309   operate with the extended numbers. Most of that work is internal
310   to the library. For the external interfaces, a hybrid approach
311   was used:</p>
312
313   <ul>
314     <li>
315       <p>X/Open Curses defined function prototypes such as
316       <code>wattr_set</code> with an unused parameter, for
317       &ldquo;future&rdquo; use. After 25 years, the future is here:
318       <span class="main-name">ncurses</span> uses the parameter to
319       augment color pair values as described in the <a href=
320       "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-EXTENSIONS">
321       manual page</a>.</p>
322     </li>
323
324     <li>
325       <p>Other functions such as those defining color pairs did not
326       have a corresponding <em>reserved</em> parameter. For those,
327       <span class="main-name">ncurses</span> defines extended
328       versions such as <code>init_extended_pair</code> (versus
329       <code>init_pair</code>), <code>init_extended_color</code>
330       (versus <code>init_color</code>).</p>
331     </li>
332   </ul>
333
334   <p>Additionally, to improve performance other changes (and
335   extensions) are provided in this release:</p>
336
337   <ul>
338     <li>
339       <p>Several new functions simplify management of large sets of
340       color pairs: <code>reset_color_pairs</code>,
341       <code>alloc_pair</code>, <code>find_pair</code> and
342       <code>free_pair</code>.</p>
343     </li>
344
345     <li>
346       <p>New "RGB" extension capability for direct-color support is
347       used to improve performance of
348       <code>color_content</code>.</p>
349     </li>
350
351     <li>
352       <p>The internal <code>colorpair_t</code> is now a struct,
353       eliminating an internal 8-bit limit on colors</p>
354     </li>
355
356     <li>
357       <p>Allocation for <code>SCREEN</code>'s color-pair table
358       starts small, grows on demand up to the limit given in the
359       terminal description.</p>
360     </li>
361
362     <li>
363       <p><code>setcchar</code> and <code>getcchar</code> now treat
364       a negative color-pair as an error.</p>
365     </li>
366   </ul>
367
368   <h4><a name="h4-fixes-library" id="h4-fixes-library">Other
369   improvements</a></h4>
370
371   <p>These are new or revised features:</p>
372
373   <ul>
374     <li>
375       <p>modify <code>c++/etip.h.in</code> to accommodate
376       deprecation of throw and throws in c++17</p>
377     </li>
378
379     <li>
380       <p>add new function <code>unfocus_current_field</code></p>
381     </li>
382
383     <li>
384       <p>add option to preserve leading whitespace in form
385       fields</p>
386     </li>
387
388     <li>
389       <p>add a macro for <code>is_linetouched</code> and adjust the
390       function's return value to make it possible for most
391       applications to check for an error-return.</p>
392     </li>
393
394     <li>
395       <p>add build-time utility <code>report_offsets</code> to help
396       show when the various configurations of tinfo library are
397       compatible or not.</p>
398     </li>
399   </ul>
400
401   <p>These were done to limit or ultimately deprecate features:</p>
402
403   <ul>
404     <li>
405       <p>drop two symbols obsoleted in 2004:
406       <code>_nc_check_termtype</code>, and
407       <code>_nc_resolve_uses</code></p>
408     </li>
409
410     <li>
411       <p>move <code>_nc_tracebits</code>, <code>_tracedump</code>
412       and <code>_tracemouse</code> to <code>curses.priv.h</code>,
413       since they are not part of the suggested ABI6.</p>
414     </li>
415
416     <li>
417       <p>mark some structs in form/menu/panel libraries as
418       potentially opaque without modifying API/ABI.</p>
419     </li>
420
421     <li>
422       <p>ifdef'd header-file definition of <code>mouse_trafo</code>
423       with <code>NCURSES_NOMACROS</code></p>
424     </li>
425
426     <li>
427       <p>remove initialization-check for calling <code>napms</code>
428       in the term-driver configuration; none is needed.</p>
429     </li>
430
431     <li>
432       <p>modify <code>trace</code> to avoid overwriting existing
433       file</p>
434     </li>
435   </ul>
436
437   <p>These are improvements to existing features:</p>
438
439   <ul>
440     <li>
441       <p>modify <code>make_hash</code> to allow building with
442       address-sanitizer, assuming that <code>--disable-leaks</code>
443       is configured.</p>
444     </li>
445
446     <li>
447       <p>move <code>SCREEN</code> field for <code>use_tioctl</code>
448       data before the ncursesw fields, and limit that to the
449       sp-funcs configuration to improve termlib compatibility</p>
450     </li>
451
452     <li>
453       <p>modify db-iterator:</p>
454
455       <ul>
456         <li>
457           <p>ignore zero-length files in db-iterator; these are
458           useful for instance to suppress
459           <code>$HOME/.terminfo</code> when not wanted.</p>
460         </li>
461
462         <li>
463           <p>modify <code>update_getenv</code> to ensure that
464           environment variables which are not initially set will be
465           checked later if an application happens to set them</p>
466         </li>
467       </ul>
468     </li>
469
470     <li>
471       <p>modify <code>_nc_outc_wrapper</code> to use the standard
472       output if the screen was not initialized, rather than
473       returning an error.</p>
474     </li>
475
476     <li>
477       <p>improve checks for low-level terminfo functions when the
478       terminal has not been initialized.</p>
479     </li>
480
481     <li>
482       <p>modify <code>set_curterm</code> to update
483       <code>ttytype[]</code> data used by longname/p&gt;</p>
484     </li>
485
486     <li>
487       <p>modify <code>_nc_get_screensize</code> to allow for
488       <code>use_env</code> and <code>use_tioctl</code> state to be
489       per-screen when sp-funcs are configured, better matching the
490       behavior when using the term-driver configuration.</p>
491     </li>
492
493     <li>
494       <p>remove an early-return from <code>_nc_do_color,</code>
495       which can interfere with data needed by <code>bkgd</code>
496       when <span class="main-name">ncurses</span> is configured
497       with extended colors</p>
498     </li>
499
500     <li>
501       <p>incorporate <code>A_COLOR</code> mask into
502       <code>COLOR_PAIR</code>, in case user application provides an
503       out-of-range pair number</p>
504     </li>
505
506     <li>
507       <p>modify logic for <code>endwin</code>-state to be able to
508       detect the case where the screen was never initialized, using
509       that to trigger a flush of <span class=
510       "main-name">ncurses'</span> buffer for <code>mvcur</code>,
511       e.g., in the sample program <span class=
512       "part-name">dots_mvcur</span> for the term-driver
513       configuration.</p>
514     </li>
515   </ul>
516
517   <p>These are corrections to existing features:</p>
518
519   <ul>
520     <li>
521       <p>fixes for writing extended color pairs in
522       <code>putwin</code>.</p>
523     </li>
524
525     <li>
526       <p>modify no-leaks code for <code>lib_cur_term.c</code> to
527       account for the <code>tgetent</code> cache.</p>
528     </li>
529
530     <li>
531       <p>amend handling of the <code>repeat_char</code> capability
532       in <code>EmitRange</code> to avoid scope creep: translate the
533       character to the alternate character set when the alternate
534       character set is enabled, and do not use
535       <code>repeat_char</code> for characters past 255.</p>
536     </li>
537
538     <li>
539       <p>improve wide-character implementation of
540       <code>myADDNSTR</code> in <code>frm_driver.c</code>, which
541       was inconsistent with the normal implementation.</p>
542     </li>
543
544     <li>
545       <p>modify <code>winnstr</code> and <code>winchnstr</code> to
546       return error if the output pointer is null, as well as adding
547       a null pointer check of the window pointer for better
548       compatibility with other implementations.</p>
549     </li>
550
551     <li>
552       <p>modify <code>setupterm</code> to save original tty-modes
553       so that <code>erasechar</code> works as expected. Also modify
554       <code>_nc_setupscreen</code> to avoid redundant calls to get
555       original tty-modes.</p>
556     </li>
557
558     <li>
559       <p>modify <code>wattr_set</code> and <code>wattr_get</code>
560       to return <code>ERR</code> if <em>win</em>-parameter is null,
561       as documented.</p>
562     </li>
563
564     <li>
565       <p>correct order of initialization for traces in
566       <code>use_env</code> and <code>use_tioctl</code> versus first
567       <code>_tracef</code> calls.</p>
568     </li>
569
570     <li>
571       <p>correct parameters for <code>copywin</code> call in
572       <code>_nc_Synchronize_Attributes</code></p>
573     </li>
574
575     <li>
576       <p>flush the standard output in <code>_nc_flush</code> for
577       the case where <code>SP</code> is zero, e.g., when called via
578       <code>putp</code>. This fixes a scenario where
579       &ldquo;tput&nbsp;flash&rdquo; did not work after changes in
580       20130112.</p>
581     </li>
582
583     <li>
584       <p>amend internal use of <code>tputs</code> to consistently
585       use the number of lines affected, e.g., for insert/delete
586       character operations. While merging terminfo source early in
587       1995, several descriptions used the
588       &ldquo;<code>*</code>&rdquo; proportional delay for these
589       operations, prompting a change in <code>doupdate</code>.</p>
590     </li>
591
592     <li>
593       <p>correct return-value of extended <code>putwin</code>.</p>
594     </li>
595
596     <li>
597       <p>double-width multibyte characters were not counted
598       properly in <code>winsnstr</code> and
599       <code>wins_nwstr</code>.</p>
600     </li>
601
602     <li>
603       <p>amend fix for <code>_nc_ripoffline</code> from 20091031 to
604       make <code>test/ditto.c</code> work in threaded
605       configuration.</p>
606     </li>
607
608     <li>
609       <p>modify <code>_nc_viscbuf2</code> and
610       <code>_tracecchar_t2</code> to trace wide-characters as a
611       whole rather than their multibyte equivalents.</p>
612     </li>
613
614     <li>
615       <p>minor fix in <code>wadd_wchnstr</code> to ensure that each
616       cell has nonzero width.</p>
617     </li>
618
619     <li>
620       <p>move <code>PUTC_INIT</code> calls next to
621       <code>wcrtomb</code> calls, to avoid carry-over of error
622       status when processing Unicode values which are not
623       mapped.</p>
624     </li>
625
626     <li>
627       <p>add missing assignment in <code>lib_getch.c</code> to make
628       <code>notimeout</code> work</p>
629     </li>
630   </ul>
631
632   <h3><a name="h3-programs" id="h3-programs">Program
633   improvements</a></h3>
634
635   <p>While reviewing user feedback, it became apparent that the
636   differences between <a href=
637   "https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization">
638   <span class="part-name">reset</span></a> (an alias for
639   <span class="part-name">tset</span>) and &ldquo;<span class=
640   "part-name">tput reset</span>&rdquo; were confusing:</p>
641
642   <ul>
643     <li>one (<a href=
644     "https://invisible-island.net/ncurses/man/tset.1.html">tset</a>)
645     updated the terminal modes, but used only part of the terminfo
646     capabilities for initialization, while</li>
647
648     <li>the other (<a href=
649     "https://invisible-island.net/ncurses/man/tput.1.html"><span class="part-name">tput</span></a>)
650     used all of the terminal capabilities while neglecting the
651     terminal modes.</li>
652   </ul>
653
654   <p>On further investigation, it turned out that the differences
655   were largely an accident due to the way those programs had
656   evolved.</p>
657
658   <p>This release eliminates the unnecessary differences, using the
659   same approach for <span class="part-name">tput</span>'s
660   <em>init</em> (initialization), <em>reset</em> and <em>clear</em>
661   operations as the separate <a href=
662   "https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization">
663   reset</a> and <a href=
664   "https://invisible-island.net/ncurses/man/clear.1.html"><span class="part-name">
665   clear</span></a> programs. Doing this does not change the
666   command-line options; existing scripts are unaffected.</p>
667
668   <p>These are the user-visible changes for the three programs
669   (<span class="part-name">tput</span>, <span class=
670   "part-name">tset</span> and <span class=
671   "part-name">clear</span>):</p>
672
673   <ul>
674     <li>
675       <p>add the terminal-mode parts of &ldquo;<span class=
676       "part-name">reset</span>&rdquo; (aka <span class=
677       "part-name">tset</span>) to the &ldquo;<code>tput
678       reset</code>&rdquo; command, making the two almost the same
679       except for window-size.</p>
680     </li>
681
682     <li>
683       <p>improve <span class="part-name">tput</span>'s check for
684       being called as &ldquo;init&rdquo; or &ldquo;reset&rdquo; to
685       allow for transformed names.</p>
686     </li>
687
688     <li>
689       <p>add &ldquo;clear&rdquo; as a possible link/alias to
690       <span class="part-name">tput</span>.</p>
691     </li>
692
693     <li>
694       <p>amend changes for <span class="part-name">tput</span> to
695       reset tty modes to &ldquo;sane&rdquo; if the program is run
696       as &ldquo;reset&rdquo;, like <span class=
697       "part-name">tset</span>. Likewise, ensure that <span class=
698       "part-name">tset</span> sends either reset- or
699       init-strings.</p>
700     </li>
701
702     <li>
703       <p>add <code>-x</code> option to <span class=
704       "part-name">clear</span>/<span class="part-name">tput</span>
705       to make the <code>E3</code> extension optional</p>
706     </li>
707
708     <li>
709       <p>add functionality of
710       &ldquo;<code>tset&nbsp;-w</code>&rdquo; to <span class=
711       "part-name">tput</span>, like the
712       &ldquo;<code>-c</code>&rdquo; feature this is not optional in
713       <span class="part-name">tput</span>.</p>
714     </li>
715
716     <li>
717       <p>add options <code>-T</code> and <code>-V</code> to
718       <span class="part-name">clear</span> command for
719       compatibility with <span class="part-name">tput</span>.</p>
720     </li>
721
722     <li>
723       <p>drop long-obsolete &ldquo;<code>-n</code>&rdquo; option
724       from <span class="part-name">tset</span>.</p>
725     </li>
726
727     <li>
728       <p>modify <span class="part-name">tset</span>'s assignment to
729       <code>TERM</code> in its output to reflect the name by which
730       the terminal description is found, rather than the primary
731       name. That was an unnecessary part from the initial
732       conversion of <span class="part-name">tset</span> from
733       termcap to terminfo. The termcap library in 4.3BSD did this
734       to avoid using the short 2-character name</p>
735     </li>
736
737     <li>
738       <p>remove a restriction in <span class=
739       "part-name">tput</span>'s support for termcap names which
740       omitted capabilities normally not shown in termcap
741       translations</p>
742     </li>
743
744     <li>
745       <p>add usage message to <span class="part-name">clear</span>
746       command</p>
747     </li>
748
749     <li>
750       <p>improve usage messages for <span class=
751       "part-name">tset</span> and <span class=
752       "part-name">tput</span>.</p>
753     </li>
754   </ul>
755
756   <p>Other user-visible improvements and new features include:</p>
757
758   <ul>
759     <li>
760       <p>modify <span class="part-name">tic</span>/<span class=
761       "part-name">infocmp</span> display of numeric values to use
762       hexadecimal when they are "close" to a power of two, making
763       the result more readable.</p>
764     </li>
765
766     <li>
767       <p>add &ldquo;<code>-W</code>&rdquo; option to <span class=
768       "part-name">tic</span>/<span class="part-name">infocmp</span>
769       to force long strings to wrap.</p>
770
771       <ul>
772         <li>
773           <p>This is in addition to the
774           &ldquo;<code>-w</code>&rdquo; option which attempts to
775           fit capabilities into a given line-length.</p>
776         </li>
777
778         <li>
779           <p>If &ldquo;<code>-f</code>&rdquo; option splits line,
780           do not further split it with
781           &ldquo;<code>-W</code>&rdquo;.</p>
782         </li>
783
784         <li>
785           <p>Begin a new line when adding
786           &ldquo;<code>use=</code>&rdquo; after a wrapped line.</p>
787         </li>
788       </ul>
789     </li>
790
791     <li>
792       <p>add &ldquo;<code>-q</code>&rdquo; option to <span class=
793       "part-name">infocmp</span> to suppress the
794       &ldquo;<code>Reconstructed from</code>&rdquo; comment from
795       the header, and a corresponding option to <span class=
796       "part-name">tic</span> to suppress all comments from the
797       &ldquo;<code>tic -I</code>&rdquo; output.</p>
798     </li>
799
800     <li>
801       <p>Sorted options in usage message for <span class=
802       "part-name">infocmp</span>, to make it simpler to see unused
803       letters.</p>
804     </li>
805
806     <li>
807       <p>Updated usage message for <span class=
808       "part-name">tic</span>, adding &ldquo;<code>-0</code>&rdquo;
809       option.</p>
810     </li>
811
812     <li>
813       <p>add <span class="part-name">infocmp</span>/<span class=
814       "part-name">tic</span> &ldquo;<code>-Q</code>&rdquo; option,
815       which allows one to dump the compiled form of the terminal
816       entry, in hexadecimal or base64:</p>
817
818       <ul>
819         <li>A &ldquo;<code>b64:</code>&rdquo; prefix in the
820         <code>TERMINFO</code> variable tells the terminfo reader to
821         use base64 according to RFC-3548 as well as RFC-4648
822         url/filename-safe format.</li>
823
824         <li>A &ldquo;<code>hex:</code>&rdquo; prefix tells the
825         terminfo reader to accept hexadecimal data as generated by
826         &ldquo;<code>infocmp -0qQ1</code>&rdquo;.</li>
827       </ul>
828     </li>
829   </ul>
830
831   <p>Other less-visible improvements and new features include:</p>
832
833   <ul>
834     <li>
835       <p>modify utility headers such as <code>tic.h</code> to make
836       it clearer which are externals that are used by <span class=
837       "main-name">tack</span>.</p>
838     </li>
839
840     <li>
841       <p>add &ldquo;<code>reset</code>&rdquo; to list of programs
842       whose names might change in manpages due to
843       program-transformation configure options.</p>
844     </li>
845
846     <li>
847       <p>modify &ldquo;<code>-T</code>&rdquo; option of
848       <span class="part-name">clear</span> and <span class=
849       "part-name">tput</span> to call <code>use_tioctl</code> to
850       obtain the operating system's notion of the screensize if
851       possible.</p>
852     </li>
853
854     <li>
855       <p>add check in <span class="part-name">tput</span> for
856       init/reset operands to ensure those use a terminal.</p>
857     </li>
858
859     <li>
860       <p>modify programs <span class="part-name">clear</span>,
861       <span class="part-name">tabs</span>, <span class=
862       "part-name">tput</span> and <span class=
863       "part-name">tset</span> to pass the actual tty file
864       descriptor to setupterm rather than the standard output or
865       error, making padding work.</p>
866     </li>
867
868     <li>
869       <p>change <span class="part-name">tset</span>'s
870       initialization to allow it to get settings from the standard
871       input as well as <code>/dev/tty</code>, to be more effective
872       when output or error are redirected.</p>
873     </li>
874
875     <li>
876       <p>amend check in <span class="part-name">tput</span>,
877       <span class="part-name">tabs</span> and <span class=
878       "part-name">clear</span> to allow those to use the
879       database-only features in <span class="part-name">cron</span>
880       if a &ldquo;<code>-T</code>&rdquo; option gives a suitable
881       terminal name.</p>
882     </li>
883
884     <li>
885       <p>improve error message from <span class=
886       "part-name">tset</span>/<span class="part-name">reset</span>
887       when both stderr/stdout are redirected to a file or pipe.</p>
888     </li>
889   </ul>
890
891   <p>Several of the less apparent features deal with translation of
892   terminfo to termcap (and the reverse), with corresponding checks
893   by <span class="part-name">tic</span>:</p>
894
895   <ul>
896     <li>
897       <p>modify check in <code>fmt_entry</code> to handle a
898       cancelled reset string. Make similar fixes in other parts of
899       <code>dump_entry.c</code> and <code>tput.c</code></p>
900     </li>
901
902     <li>
903       <p>correct read of terminfo entry in which all strings are
904       absent or explicitly cancelled. Before this fix, the result
905       was that all were treated as only absent.</p>
906     </li>
907
908     <li>
909       <p>modify <span class="part-name">infocmp</span> to suppress
910       mixture of absent/cancelled capabilities that would only show
911       as &ldquo;<code>NULL, NULL</code>&rdquo;, unless the
912       &ldquo;<code>-q</code>&rdquo; option is used, e.g., to show
913       &ldquo;<code>-, @</code>&rdquo; or &ldquo;<code>@,
914       -</code>&rdquo;.</p>
915     </li>
916
917     <li>
918       <p>correct a warning from <span class="part-name">tic</span>
919       about keys which are the same, to skip over missing/cancelled
920       values.</p>
921     </li>
922
923     <li>
924       <p>add check in <span class="part-name">tic</span> for use of
925       bold, etc., video attributes in the color capabilities,
926       accounting whether the feature is listed in
927       <code>ncv</code>.</p>
928     </li>
929
930     <li>
931       <p>add check in <span class="part-name">tic</span> for
932       unnecessary use of &ldquo;<code>2</code>&rdquo; to denote a
933       shifted special key.</p>
934     </li>
935
936     <li>
937       <p>improve check in <span class="part-name">tic</span> for
938       delays by also warning about beep/flash when a delay is not
939       embedded, or if those use the VT100 reverse video escape
940       without using a delay.</p>
941     </li>
942
943     <li>
944       <p>improve checks in <code>trim_sgr0</code>, comp_parse.c and
945       parse_entry.c, for cancelled string capabilities.</p>
946     </li>
947
948     <li>
949       <p>add check in <span class="part-name">tic</span> for some
950       syntax errors of delays, as well as use of proportional
951       delays for non-line capabilities.</p>
952     </li>
953
954     <li>
955       <p>add check in <span class="part-name">tic</span> for
956       conflict between <code>ritm</code>, <code>rmso</code>,
957       <code>rmul</code> versus <code>sgr0</code>.</p>
958     </li>
959
960     <li>
961       <p>add check in <code>_nc_parse_entry</code> for invalid
962       entry name, setting the name to
963       &ldquo;<code>invalid</code>&rdquo; to avoid problems storing
964       entries.</p>
965     </li>
966
967     <li>
968       <p>improve <code>_nc_tparm_analyze</code>, using that to
969       extend the checks made by <span class="part-name">tic</span>
970       for reporting inconsistencies between the expected number of
971       parameters for a capability and the actual.</p>
972     </li>
973
974     <li>
975       <p>remove <span class="part-name">tic</span> warning about
976       &ldquo;<code>^?</code>&rdquo; in string capabilities, which
977       was marked as an extension; however all Unix implementations
978       support this and X/Open Curses does not address it. On the
979       other hand, <a href=
980       "https://invisible-island.net/ncurses/tctest.html#bsd42-ctl-question">
981       BSD termcap</a> did not support this feature (until the
982       <a href=
983       "https://invisible-island.net/ncurses/tctest.html#freebsd-ctl-question">
984       mid-1990s</a>).</p>
985
986       <p>in <code>_nc_infotocap</code>, added a check to ensure
987       that terminfo &ldquo;<code>^?</code>&rdquo; is not written to
988       termcap.</p>
989     </li>
990
991     <li>
992       <p>modify <code>sscanf</code> calls in
993       <code>_nc_infotocap</code> for patterns
994       &ldquo;<code>%{number}%+%c</code>&rdquo; and
995       &ldquo;<code>%'char'%+%c</code>&rdquo; to check that the
996       final character is really &ldquo;<code>c</code>&rdquo;,
997       avoiding a case in icl6404 which cannot be converted to
998       termcap.</p>
999     </li>
1000
1001     <li>
1002       <p>in <code>_nc_tic_expand</code> and
1003       <code>_nc_infotocap</code>, improved string-length check when
1004       deciding whether to use &ldquo;<code>^X</code>&rdquo; or
1005       &ldquo;<code>\xxx</code>&rdquo; format for control
1006       characters, to make the output of <span class=
1007       "part-name">tic</span>/<span class="part-name">infocmp</span>
1008       more predictable.</p>
1009     </li>
1010
1011     <li>
1012       <p>limited termcap &ldquo;<code>%d</code>&rdquo; width to 2
1013       digits on input, and use &ldquo;<code>%2</code>&rdquo; in
1014       preference to &ldquo;<code>%02</code>&rdquo; on output.</p>
1015     </li>
1016
1017     <li>
1018       <p>correct terminfo/termcap conversion of
1019       &ldquo;<code>%02</code>&rdquo; and
1020       &ldquo;<code>%03</code>&rdquo; into
1021       &ldquo;<code>%2</code>&rdquo; and
1022       &ldquo;<code>%3</code>&rdquo;; the result repeated the last
1023       character.</p>
1024     </li>
1025   </ul>
1026
1027   <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
1028
1029   <p>Along with the library and utilities, many improvements were
1030   made to the <a href=
1031   "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.</p>
1032
1033   <p>These changes were made to demonstrate new extensions in
1034   <span class="main-name">ncurses</span>:</p>
1035
1036   <ul>
1037     <li>
1038       <p>add <span class="part-name">demo_new_pair</span> program,
1039       to demonstrate <a href=
1040       "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-alloc_pair">
1041       <code>alloc_pair</code></a>, <a href=
1042       "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-find_pair">
1043       <code>find_pair</code></a> and <a href=
1044       "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-free_pair">
1045       <code>free_pair</code></a> functions.</p>
1046
1047       <p>This program iterates over the possible color
1048       combinations, allocating or initializing color pairs. For
1049       best results, choose screen-width dividing evenly into the
1050       number of colors. e.g.,</p>
1051
1052       <blockquote>
1053         <table summary="sample layouts for demo_new_pair">
1054           <tr>
1055             <td><code>32x64,32x128</code>&nbsp;&nbsp;</td>
1056
1057             <td>256 colors</td>
1058           </tr>
1059
1060           <tr>
1061             <td><code>24x44,24x88</code></td>
1062
1063             <td>88 colors</td>
1064           </tr>
1065
1066           <tr>
1067             <td><code>32x64,24x128</code></td>
1068
1069             <td>16 colors</td>
1070           </tr>
1071         </table>
1072       </blockquote>
1073     </li>
1074
1075     <li>
1076       <p>add <span class="part-name">extended_color</span> program,
1077       like the older <span class="part-name">color_set</span>
1078       program, but using the extended color functions, with and
1079       without the SP-functions interface.</p>
1080     </li>
1081
1082     <li>
1083       <p>add <span class="part-name">picsmap</span> program to fill
1084       in some testing issues not met by <span class=
1085       "part-name">dots</span>, using this as the third example in a
1086       comparison of the <a href=
1087       "https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap">
1088       ncurses versus slang</a> libraries.</p>
1089
1090       <p>The program can directly read X bitmap and pixmap files,
1091       displaying a picture. It can read other image files using
1092       <span class="part-name">ImageMagick</span>'s <span class=
1093       "part-name">convert</span> program to translate the image
1094       into text.</p>
1095
1096       <p>For 16-, 88- and 256-color terminal descriptions,
1097       <span class="part-name">picsmap</span> can load a palette
1098       file which tells it which color palette entries to use. For
1099       direct-colors, the terminal descriptions use the
1100       <code>RGB</code> extension capability.</p>
1101     </li>
1102   </ul>
1103
1104   <p>There are other new example programs and a few scripts:</p>
1105
1106   <ul>
1107     <li>
1108       <p>add <span class="part-name">dots_xcurses</span> program to
1109       illustrate a different approach used for extended colors
1110       which can be contrasted with <span class=
1111       "part-name">dots_curses</span>.</p>
1112     </li>
1113
1114     <li>
1115       <p>add <span class="part-name">list_keys</span> program show
1116       function keys for one or more terminal descriptions. It uses
1117       <span class="main-name">ncurses'</span>s convention of
1118       modifiers for special keys, based on xterm.</p>
1119     </li>
1120
1121     <li>
1122       <p>add <span class="part-name">padview</span> program, to
1123       compare pads with direct updates in the <span class=
1124       "part-name">view</span> program.</p>
1125     </li>
1126
1127     <li>
1128       <p>add <span class="part-name">sp_tinfo</span> program to
1129       exercise the SP-functions extension of the low-level terminfo
1130       library.</p>
1131     </li>
1132
1133     <li>
1134       <p>add test-programs for <code>termattrs</code> and
1135       <code>term_attrs</code> functions.</p>
1136     </li>
1137
1138     <li>
1139       <p>add <span class="part-name">test_sgr</span> program to
1140       exercise all combinations of the sgr capability.</p>
1141     </li>
1142
1143     <li>
1144       <p>add <span class="part-name">tput-colorcube</span> demo
1145       script, imitating xterm's 88- and 256-color scripts using
1146       <span class="part-name">tput</span>.</p>
1147     </li>
1148
1149     <li>
1150       <p>add <span class="part-name">tput-initc</span> script to
1151       demonstrate how <span class="part-name">tput</span> may be
1152       used to initialize a color palette from a data file.</p>
1153     </li>
1154   </ul>
1155
1156   <p>A variety of improvements were made to existing programs, both
1157   new features as well as options added to make the set of programs
1158   more consistent.</p>
1159
1160   <p>The <span class="part-name">ncurses</span> program is the
1161   largest; a proportionately large number of changes were made to
1162   it:</p>
1163
1164   <ul>
1165     <li>
1166       <p>modify a/A screens to make exiting on an escape character
1167       depend on the start of keypad and timeout modes, to allow
1168       better testing of function-keys.</p>
1169
1170       <p>add &ldquo;<code>t</code>&rdquo; toggle for
1171       <code>notimeout</code> function.</p>
1172     </li>
1173
1174     <li>
1175       <p>modify layout of b/B screens to allow for additional
1176       annotation on the right margin; some terminals with partial
1177       support did not display well.</p>
1178     </li>
1179
1180     <li>
1181       <p>modify c/C screens to allow for extended color pairs.</p>
1182
1183       <p>add z/Z <em>zoom</em> feature to make extended color pairs
1184       easier to test.</p>
1185
1186       <p>modify test-screens to take advantage of wide screens,
1187       reducing the number of lines used for 88- and 256-colors.</p>
1188     </li>
1189
1190     <li>
1191       <p>modify &ldquo;<code>d</code>&rdquo; edit-color screen to
1192       optionally read xterm color palette directly from terminal,
1193       as well as handling <code>KEY_RESIZE</code> and
1194       screen-repainting with control/L and control/R.</p>
1195     </li>
1196
1197     <li>
1198       <p>add examples to &ldquo;<code>F</code>&rdquo; screen for
1199       <code>WACS_D_PLUS</code> and <code>WACS_T_PLUS</code>.</p>
1200     </li>
1201
1202     <li>
1203       <p>improve &ldquo;<code>g</code>&rdquo; screen, correcting
1204       ifdef which made the legend not reflect changes to keypad-
1205       and scroll-modes. Added check for return-value of
1206       <code>putwin</code>.</p>
1207     </li>
1208
1209     <li>
1210       <p>make &ldquo;<code>s</code>&rdquo; test easier to
1211       understand which subtests are available</p>
1212
1213       <p>add a corresponding &ldquo;<code>S</code>&rdquo;
1214       wide-character overlap test-screen.</p>
1215     </li>
1216
1217     <li>
1218       <p>add &ldquo;<code>v</code>&rdquo; screen to show
1219       <code>baudrate</code> and other values.</p>
1220     </li>
1221   </ul>
1222
1223   <p>These changes were made to the other examples:</p>
1224
1225   <ul>
1226     <li>
1227       <p>modify <span class="part-name">blue</span> program to use
1228       Unicode values for card-glyphs when available, as well as
1229       improving the check for CP437 and CP850.</p>
1230     </li>
1231
1232     <li>
1233       <p>improve <span class="part-name">demo_menus</span> program,
1234       allowing mouse-click on the menu-headers to switch the active
1235       menu. This requires a new extension option
1236       <code>O_MOUSE_MENU</code> to tell the menu driver to put
1237       mouse events which do not apply to the active menu back into
1238       the queue so that the application can handle the event.</p>
1239     </li>
1240
1241     <li>
1242       <p>correct logic in <span class=
1243       "part-name">demo_terminfo</span> program for
1244       &ldquo;<code>-f</code>&rdquo; option</p>
1245     </li>
1246
1247     <li>
1248       <p>modify <span class="part-name">ditto</span> program to
1249       allow <code>$XTERM_PROG</code> environment variable to
1250       override "xterm" as the name of the program to run in the
1251       threaded configuration.</p>
1252     </li>
1253
1254     <li>
1255       <p>add several options to the &ldquo;<em>dots</em>&rdquo;
1256       test-programs.</p>
1257     </li>
1258
1259     <li>
1260       <p>modify <span class="part-name">filter</span> program:</p>
1261
1262       <ul>
1263         <li>illustrate an alternative to <code>getnstr</code>, that
1264         polls for input while updating a clock on the right margin
1265         as well as responding to window size-changes.</li>
1266
1267         <li>adapt logic used in <a href=
1268         "https://invisible-island.net/dialog/"><span class=
1269         "main-name">dialog</span></a> <a href=
1270         "https://invisible-island.net/dialog/manpage/dialog.html#h3-Common-Options">
1271         &ldquo;<code>--keep-tite</code>&rdquo; option</a> for
1272         <span class="part-name">filter</span> program as the "-a"
1273         option. When set, <span class="part-name">filter</span>
1274         attempts to suppress the alternate screen.</li>
1275       </ul>
1276     </li>
1277
1278     <li>
1279       <p>modify <span class="part-name">knight</span> program to
1280       provide the "slow" solution for small screens using
1281       &ldquo;<code>R</code>&rdquo;, noting that Warnsdorf's method
1282       is easily done with &ldquo;<code>a</code>&rdquo;.</p>
1283     </li>
1284
1285     <li>
1286       <p>modify the <span class="part-name">savescreen</span>
1287       program to add test patterns that exercise 88-, 256-, etc.,
1288       colors.</p>
1289     </li>
1290
1291     <li>
1292       <p>add options to <span class="part-name">test_arrays</span>,
1293       for selecting termcap vs terminfo, etc.</p>
1294     </li>
1295
1296     <li>
1297       <p>modify the <span class="part-name">view</span>
1298       program:</p>
1299
1300       <ul>
1301         <li>expand tabs using the ncurses library rather than in
1302         the test-program.</li>
1303
1304         <li>eliminate the &ldquo;<code>-n</code>&rdquo; option by
1305         simply reading the whole file.</li>
1306
1307         <li>implement page up/down commands.</li>
1308
1309         <li>remove the very old <code>SIGWINCH</code> example; just
1310         use <code>KEY_RESIZE</code>.</li>
1311       </ul>
1312     </li>
1313
1314     <li>
1315       <p>improve animation in <span class="part-name">xmas</span>
1316       program by adding a time-delay in <code>blinkit</code>.</p>
1317     </li>
1318
1319     <li>
1320       <p>modify several test-programs which call
1321       <code>use_default_colors</code> to consistently do this only
1322       if the &ldquo;<code>-d</code>&rdquo; option is given.</p>
1323     </li>
1324
1325     <li>
1326       <p>modify the install-rule for ncurses-examples to put the
1327       data files in the data directory, e.g.,
1328       <code>/usr/share/ncurses-examples</code>.</p>
1329     </li>
1330
1331     <li>
1332       <p>modify several test programs to use new
1333       <code>popup_msgs</code> function, adapted from the
1334       help-screen used in the <code>edit_field</code> program.</p>
1335     </li>
1336
1337     <li>
1338       <p>modify test data for xterm palettes to use the newer
1339       color4/color12 values.</p>
1340     </li>
1341
1342     <li>
1343       <p>improve the <span class="part-name">tracemunch</span>
1344       script:</p>
1345
1346       <ul>
1347         <li>show screenXX pointers and thread identifiers as
1348         names.</li>
1349
1350         <li>chang address-parameters of <code>add_wch</code>,
1351         <code>color_content</code> and <code>pair_content</code> to
1352         dummy parameters.</li>
1353       </ul>
1354     </li>
1355   </ul>
1356
1357   <h3><a name="h3-database" id="h3-database">Terminal
1358   database</a></h3>
1359
1360   <p>There are several new terminal descriptions:</p>
1361
1362   <blockquote>
1363     <p><code>dumb-emacs-ansi</code>, <code>dvtm</code>,
1364     <code>dvtm-256color</code>, <code>fbterm</code>,
1365     <code>iterm2</code>, <code>linux-m1</code> <em>minitel
1366     entries</em>, <code>putty-noapp</code>, <code>viewdata</code>,
1367     and <code>vt100+4bsd</code> <em>building-block</em>.</p>
1368
1369     <p><code>xterm+noalt</code>, <code>xterm+titlestack</code>,
1370     <code>xterm+alt1049</code>, <code>xterm+alt+title</code>
1371     <em>building blocks</em> and <code>xterm+direct</code>,
1372     <code>xterm+indirect</code>, <code>xterm-direct</code>. from
1373     <a href=
1374     "https://invisible-island.net/xterm/xterm.log.html#xterm_331">xterm
1375     patch #331</a>.</p>
1376
1377     <p>several other &ldquo;<code>-direct</code>&rdquo;
1378     descriptions to address the differences of other terminal
1379     emulators versus <code>xterm-direct</code>.</p>
1380   </blockquote>
1381
1382   <p>There are many changes to existing terminal descriptions. Some
1383   were updates to several descriptions:</p>
1384
1385   <ul>
1386     <li>use <code>xterm+sm+1006</code> in several terminal
1387     descriptions which were validated as supporting the extended
1388     mouse feature for their respective terminal emulators.</li>
1389
1390     <li>corrected <em>sgr</em>/<em>sgr0</em> strings in a few cases
1391     reported by <span class="part-name">tic</span>, making those
1392     correspond to the non-<em>sgr</em> settings where they differ,
1393     but otherwise use ECMA-48 consistently.</li>
1394
1395     <li>add 0.1sec mandatory delay to <em>flash</em> capabilities
1396     using the VT100 reverse-video control</li>
1397   </ul>
1398
1399   <p>while others affected specific descriptions. These were
1400   retested, to take into account new/undocumented changes by their
1401   developers:</p>
1402
1403   <blockquote>
1404     <p><code>iterm</code>, <code>minitel</code>, <code>st</code>,
1405     <code>viewdata</code>, <code>nsterm</code></p>
1406   </blockquote>
1407
1408   <p>while these are specific fixes based on user reports, or
1409   warnings from <span class="part-name">tic</span>:</p>
1410
1411   <dl>
1412     <dt><a href=
1413     "https://invisible-island.net/ncurses/terminfo.src.html#toc-_A_N_S_I__S_Y_S__I_S_O_6429__E_C_M_A-48__Capabilities">
1414     <code>ansi</code> <em>building blocks</em></a></dt>
1415
1416     <dd>
1417       <ul>
1418         <li>restored <em>rmir</em>/<em>smir</em> in
1419         <code>ansi+idc</code> to better match original
1420         <code>ansiterm+idc</code>, add alias
1421         <code>ansiterm</code></li>
1422       </ul>
1423     </dd>
1424
1425     <dt><a href=
1426     "https://invisible-island.net/ncurses/terminfo.src.html#tic-icl6404">
1427     <code>icl6402</code></a></dt>
1428
1429     <dd>
1430       <ul>
1431         <li>corrected missing comma-separator between string
1432         capabilities in <code>icl6402</code> and
1433         <code>m2-nam</code></li>
1434       </ul>
1435     </dd>
1436
1437     <dt><a href=
1438     "https://invisible-island.net/ncurses/terminfo.src.html#tic-interix">
1439     <code>interix</code></a></dt>
1440
1441     <dd>
1442       <ul>
1443         <li>updated using <span class="main-name">tack</span> and
1444         SFU with Windows 7 Ultimate.</li>
1445
1446         <li>used <code>^?</code> for <em>kdch1</em></li>
1447       </ul>
1448     </dd>
1449
1450     <dt><a href=
1451     "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Linux_consoles">
1452     <code>linux</code></a></dt>
1453
1454     <dd>
1455       <ul>
1456         <li>made <code>linux3.0</code> entry the default
1457         <strong><code>linux</code></strong> entry</li>
1458
1459         <li>modify <code>linux2.6</code> entry to improve
1460         line-drawing so that the <code>linux3.0</code> entry can be
1461         used in non-UTF-8 mode</li>
1462
1463         <li>omitted selection of ISO-8859-1 for G0 in enacs
1464         capability from linux2.6 entry, to avoid conflict with the
1465         user-defined mapping. The reset feature uses ISO-8859-1 in
1466         any case.</li>
1467
1468         <li>modify <em>flash</em> capability for <code>linux</code>
1469         and <code>wyse</code> entries to put the delay between the
1470         reverse/normal escapes rather than after</li>
1471
1472         <li>modify <code>linux-16color</code> to not mask dim,
1473         standout or reverse with the <em>ncv</em> capability</li>
1474       </ul>
1475     </dd>
1476
1477     <dt><a href=
1478     "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Open_B_S_D_consoles">
1479     <code>pccon</code> <em>entries</em></a></dt>
1480
1481     <dd>
1482       <ul>
1483         <li>fixed some inconsistencies in the
1484         <code><em>pccon*</em></code> entries</li>
1485
1486         <li>add bold to <code>pccon+sgr+acs</code> and
1487         <code>pccon-base</code></li>
1488
1489         <li>add keys f12-f124 to <code>pccon+keys</code></li>
1490       </ul>
1491     </dd>
1492
1493     <dt><a href=
1494     "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Tmux">
1495     <code>tmux</code></a></dt>
1496
1497     <dd>
1498       <ul>
1499         <li>corrected <em>sgr</em> string, which used
1500         <code>screen</code>'s "standout" code rather than the
1501         standard code.</li>
1502
1503         <li>add settings corresponding to <code>xterm-keys</code>
1504         option to reflect upcoming change to make that option
1505         <em>"on"</em> by default</li>
1506
1507         <li>uncanceled <em>Ms</em></li>
1508       </ul>
1509     </dd>
1510
1511     <dt><a href=
1512     "https://invisible-island.net/ncurses/terminfo.src.html#toc-_D_E_C__V_T100_and_compatibles">
1513     <code>vt100</code></a></dt>
1514
1515     <dd>
1516       <ul>
1517         <li>modify <code>vt100</code> <em>rs2</em> string to reset
1518         vt52 mode and scrolling regions</li>
1519
1520         <li>corrected <em>rs2</em> string for
1521         <code>vt100-nam</code></li>
1522
1523         <li>made minor fixes for <code>vt100+4bsd</code>, e.g.,
1524         delay in <em>sgr</em> for consistency</li>
1525       </ul>
1526     </dd>
1527
1528     <dt><a href=
1529     "https://invisible-island.net/ncurses/terminfo.src.html#toc-_G_N_O_M_E__V_T_E_">
1530     <code>vte</code></a></dt>
1531
1532     <dd>
1533       <ul>
1534         <li>moved SGR 24 and 27 from <code>vte-2014</code> to
1535         <code>vte-2012</code></li>
1536
1537         <li>add a few capabilities fixed in recent <em>VTE</em>
1538         development</li>
1539       </ul>
1540     </dd>
1541
1542     <dt><a href=
1543     "https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M">
1544     <code>xterm</code></a></dt>
1545
1546     <dd>
1547       <ul>
1548         <li>add <em>rep</em> to <code>xterm-new</code>, available
1549         since <a href=
1550         "https://invisible-island.net/xterm/xterm.log.html#xterm_32">
1551         late 1996</a>.</li>
1552
1553         <li>modify <code>xterm+256color</code> and
1554         <code>xterm+256setaf</code> to use correct number of color
1555         pairs.</li>
1556
1557         <li>modify <em>rs1</em> for <code>xterm-16color</code>,
1558         <code>xterm-88color</code> and <code>xterm-256color</code>
1559         to reset palette using <em>oc</em> string as in
1560         <code>linux</code> entry.</li>
1561
1562         <li>add <em>rs1</em> capability to
1563         <code>xterm-256color</code></li>
1564
1565         <li>add <em>oc</em> capability to
1566         <code>xterm+256color</code>, allowing palette reset for
1567         <span class="main-name">xterm</span></li>
1568
1569         <li>add <em>op</em> to <code>xterm+256setaf</code></li>
1570
1571         <li>modify <code>xterm-r5</code>, <code>xterm-r6</code> and
1572         <code>xterm-xf86-v32</code> to use <code>xterm+kbs</code>
1573         to match <a href=
1574         "https://invisible-island.net/xterm/xterm.log.html#xterm_272">
1575         xterm #272</a>, reflecting packager's changes</li>
1576
1577         <li>used ANSI reply for <em>u8</em> in
1578         <code>xterm-new</code>, to reflect vt220-style responses
1579         that could be returned.</li>
1580
1581         <li>made <code>xterm-pcolor</code> <em>sgr</em> consistent
1582         with other capabilities</li>
1583       </ul>
1584     </dd>
1585   </dl>
1586
1587   <p>A few entries use extensions (user-defined terminal
1588   capabilities):</p>
1589
1590   <ul>
1591     <li>add <em>rmxx</em>/<em>smxx</em> ECMA-48 strikeout extension
1592     to <code>tmux</code> and <code>xterm-basic</code></li>
1593
1594     <li>used <em>RGB</em> capability in new <em>*-direct</em>
1595     entries to denote direct-color feature.</li>
1596   </ul>
1597
1598   <h3><a name="h3-documentation" id=
1599   "h3-documentation">Documentation</a></h3>
1600
1601   <p>As usual, this release</p>
1602
1603   <ul>
1604     <li>
1605       <p>improves documentation by describing new features,</p>
1606     </li>
1607
1608     <li>
1609       <p>attempts to improve the description of features which
1610       users have found confusing</p>
1611     </li>
1612
1613     <li>
1614       <p>fills in overlooked descriptions of features which were
1615       described in the <a href=
1616       "https://invisible-island.net/ncurses/NEWS.html">NEWS</a>
1617       file but treated sketchily in manual pages.</p>
1618     </li>
1619   </ul>
1620
1621   <p>In particular,</p>
1622
1623   <ul>
1624     <li>
1625       <p>Since the underlying features for <a href=
1626       "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
1627       <span class="part-name">tset</span></a>, <a href=
1628       "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
1629       <span class="part-name">tput</span></a>, and <a href=
1630       "https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY">
1631       <span class="part-name">clear</span></a> have been better
1632       integrated, the documentation now includes information on how
1633       those tools evolved.</p>
1634
1635       <p>In addition to explaining the improved integration of the
1636       tools, the manual pages made it easier to see how the tools
1637       are similar and how they are different.</p>
1638     </li>
1639
1640     <li>
1641       <p>The <code>addch</code> manual page has additional
1642       information on <a href=
1643       "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h2-PORTABILITY">
1644       portability</a> and differences from other
1645       implementations.</p>
1646     </li>
1647
1648     <li>
1649       <p>The discussion of color-pairs in the <em>attributes</em>
1650       manual page is improved in its <a href=
1651       "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY">
1652       history section</a>.</p>
1653     </li>
1654
1655     <li>
1656       <p>The documentation of the <code>chtype</code>,
1657       <code>cchar_t</code> types and the attribute values which can
1658       be stored in those types, in particular the <a href=
1659       "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY">
1660       history</a> and <a href=
1661       "https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY">
1662       portability</a> sections of the <em>attributes</em> manual
1663       page, has been improved.</p>
1664     </li>
1665
1666     <li>
1667       <p>improve discussion of <a href=
1668       "https://invisible-island.net/ncurses/man/curs_mouse.3x.html#h2-PORTABILITY">
1669       portability</a> in the <em>mouse</em> manual.</p>
1670     </li>
1671
1672     <li>
1673       <p>The <em>pad</em> manual page has a section on the <a href=
1674       "https://invisible-island.net/ncurses/man/curs_pad.3x.html#h2-PORTABILITY">
1675       origin and portability</a> of pads.</p>
1676     </li>
1677
1678     <li>
1679       <p>Differences between SVr4 and X/Open Curses soft-keys are
1680       discussed in a new section on <a href=
1681       "https://invisible-island.net/ncurses/man/curs_slk.3x.html#h2-PORTABILITY">
1682       portability</a>.</p>
1683     </li>
1684
1685     <li>
1686       <p>There are updated/improved notes on portability in the
1687       <a href=
1688       "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-PORTABILITY">
1689       resizeterm</a> and <a href=
1690       "https://invisible-island.net/ncurses/man/wresize.3x.html#h2-PORTABILITY">
1691       wresize</a> manual pages.</p>
1692     </li>
1693   </ul>
1694
1695   <p>In addition to providing background information to explain
1696   these features and show how they evolved, there are corrections,
1697   clarifications, etc.:</p>
1698
1699   <ul>
1700     <li>
1701       <p>add note in the <a href=
1702       "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols">
1703       <em>addch</em></a> manual about line-drawing when it depends
1704       upon UTF-8.</p>
1705     </li>
1706
1707     <li>
1708       <p>improve discussion of line-drawing characters in the
1709       <a href=
1710       "https://invisible-island.net/ncurses/man/curs_add_wch.3x.html">
1711       <em>add_wch</em></a> manual.</p>
1712     </li>
1713
1714     <li>
1715       <p>explain in <a href=
1716       "https://invisible-island.net/ncurses/man/clear.1.html#h2-DESCRIPTION">
1717       <span class="part-name">clear</span></a>'s manual page that
1718       it writes to the standard output.</p>
1719     </li>
1720
1721     <li>
1722       <p>improve description of <a href=
1723       "https://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-endwin">
1724       <em>endwin</em></a>.</p>
1725     </li>
1726
1727     <li>
1728       <p>improve discussion of field validation in the <a href=
1729       "https://invisible-island.net/ncurses/man/form_driver.3x.html">
1730       <em>form driver</em></a> manual page.</p>
1731     </li>
1732
1733     <li>
1734       <p>clarify the use of <code>wint_t</code> vs
1735       <code>wchar_t</code> in <a href=
1736       "https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html#h2-RETURN-VALUE">
1737       <em>get_wstr</em></a> manual page.</p>
1738     </li>
1739
1740     <li>
1741       <p>clarify in the <a href=
1742       "https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Predefined-key-codes">
1743       <em>getch</em></a> manual that the keypad mode affects an
1744       application's ability to read <code>KEY_MOUSE</code> codes,
1745       but does not affect <code>KEY_RESIZE</code>.</p>
1746
1747       <p>trim some obsolete/incorrect wording about
1748       <code>EINTR</code> from the <em>getch</em> manual page</p>
1749
1750       <p>improve manual pages for <a href=
1751       "https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Keypad-Mode">
1752       <em>getch</em></a> and <a href=
1753       "https://invisible-island.net/ncurses/man/curs_get_wch.3x.html#h2-DESCRIPTION">
1754       <em>get_wch</em></a> to point out that they might return
1755       user-defined values which have no predefined names in
1756       <code>&lt;curses.h&gt;</code></p>
1757     </li>
1758
1759     <li>
1760       <p>improve description of the <code>-R</code> option in the
1761       <a href=
1762       "https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class="part-name">
1763       infocmp</span></a> manual page</p>
1764     </li>
1765
1766     <li>
1767       <p>clarify in the <a href=
1768       "https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-NOTES">
1769       <em>resizeterm</em></a> manual page how
1770       <code>KEY_RESIZE</code> is pushed onto the input stream.</p>
1771     </li>
1772
1773     <li>
1774       <p>document return value of <a href=
1775       "https://invisible-island.net/ncurses/man/curs_extend.3x#h2-RETURN-VALUE">
1776       <code>use_extended_names</code></a></p>
1777     </li>
1778
1779     <li>
1780       <p>document differences in <a href=
1781       "https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY">
1782       <code>ESCDELAY</code></a> versus AIX's implementation in the
1783       <em>variables</em> manual page.</p>
1784     </li>
1785
1786     <li>
1787       <p>The <code>_nc_free_tinfo</code> function is now documented
1788       in the <a href=
1789       "https://invisible-island.net/ncurses/man/curs_memleaks.3x.html">
1790       <em>memory-leaks</em></a> manual page, because it could be
1791       used in <span class="main-name">tack</span> for memory-leak
1792       checking.</p>
1793     </li>
1794
1795     <li>
1796       <p>add a note to the <a href=
1797       "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
1798       tic</span></a> manual page about -W versus -f options.</p>
1799     </li>
1800
1801     <li>
1802       <p>improve <em>terminfo manual</em> description of <a href=
1803       "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Terminfo-Capabilities-Syntax">
1804       terminfo syntax</a>.</p>
1805
1806       <p>improve terminfo manual page discussion of <a href=
1807       "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Line-Graphics">
1808       control- and graphics- characters</a>.</p>
1809
1810       <p>improve <a href=
1811       "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Color-Handling">
1812       color-handling</a> section in terminfo manual page</p>
1813     </li>
1814
1815     <li>
1816       <p>clarify description in <a href=
1817       "https://invisible-island.net/ncurses/man/tput.1.html#h2-PORTABILITY">
1818       <span class="part-name">tput</span></a> manual page regarding
1819       support for termcap names</p>
1820
1821       <p>update <a href=
1822       "https://invisible-island.net/ncurses/man/tput.1.html#h3-Aliases">
1823       <span class="part-name">tput</span></a> manual page to
1824       reflect changes to manipulate terminal modes by sharing
1825       functions with <span class="part-name">tset</span>.</p>
1826     </li>
1827
1828     <li>
1829       <p>clarify in manual pages that the optional verbose option
1830       level of <a href=
1831       "https://invisible-island.net/ncurses/man/tic.1m.html#h2-OPTIONS">
1832       <span class="part-name">tic</span></a> and <a href=
1833       "https://invisible-island.net/ncurses/man/infocmp.1m.html#h3-Other-Options">
1834       <span class="part-name">infocmp</span></a> is available only
1835       when <span class="main-name">ncurses</span> is configured for
1836       tracing.</p>
1837     </li>
1838
1839     <li>
1840       <p>improve manual page description of <a href=
1841       "https://invisible-island.net/ncurses/man/tset.1.html"><em>tset/reset</em></a>
1842       versus window-size.</p>
1843     </li>
1844
1845     <li>
1846       <p>improve description of <a href=
1847       "https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h3-FORMATTING-CAPABILITIES">
1848       <em>tgoto</em></a> parameters</p>
1849     </li>
1850   </ul>
1851
1852   <p>There are new manual pages:</p>
1853
1854   <ul>
1855     <li><a href=
1856     "https://invisible-island.net/ncurses/man/user_caps.5.html"><em>
1857     user_caps</em></a> documents the terminfo extensions used by
1858     <span class="main-name">ncurses</span>.</li>
1859
1860     <li>
1861       <p><a href=
1862       "https://invisible-island.net/ncurses/man/scr_dump.5.html"><em>
1863       scr_dump</em></a> documents the screen-dump format.</p>
1864     </li>
1865   </ul>
1866
1867   <p>Some of the improvements are more subtle, relating to the way
1868   the information is presented:</p>
1869
1870   <ul>
1871     <li>
1872       <p>Made minor fixes to manpage <em>NAME/SYNOPSIS</em>
1873       sections to consistently use rule that either all functions
1874       which are prototyped in <em>SYNOPSIS</em> are listed in the
1875       <em>NAME</em> section, or the manual-page name is the sole
1876       item listed in the <em>NAME</em> section. The latter is used
1877       to reduce clutter, e.g., for the top-level library manual
1878       pages as well as for certain feature-pages such as <a href=
1879       "https://invisible-island.net/ncurses/man/curs_sp_funcs.3x.html">
1880       <em>SP-funcs</em></a> and <a href=
1881       "https://invisible-island.net/ncurses/man/curs_threads.3x.html">
1882       <em>threading</em></a>.</p>
1883     </li>
1884
1885     <li>
1886       <p>improve manual pages for utilities with respect to POSIX
1887       versus X/Open Curses.</p>
1888     </li>
1889
1890     <li>
1891       <p>improve organization of the <a href=
1892       "https://invisible-island.net/ncurses/man/curs_attr.3x.html"><em>
1893       attributes</em></a> and <a href=
1894       "/ncurses/man/curs_color.3x.html"><em>color</em></a> manual
1895       pages.</p>
1896     </li>
1897   </ul>
1898
1899   <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
1900   bug-fixes</a></h3>
1901
1902   <ul>
1903     <li>
1904       <p>modify <span class="part-name">toe</span> to not exit if
1905       unable to read a terminal description, e.g., if there is a
1906       permission problem.</p>
1907     </li>
1908
1909     <li>
1910       <p>correct 20100515 change for weak signals versus
1911       sigprocmask</p>
1912     </li>
1913
1914     <li>work around Ada tool-breakage in Debian 9 and later by
1915     invoking <code>gprconfig</code> to specify the C compiler to be
1916     used by <code>gnatmake</code>, and conditionally suppressing
1917     <code>Library_Options</code> line for static libraries.</li>
1918
1919     <li>
1920       <p>There were, as well, several bug-fixes to handle illegal
1921       input for <span class="part-name">tic</span>. Because those
1922       did not correspond to useful terminal descriptions, most
1923       users are unaffected.</p>
1924     </li>
1925   </ul>
1926
1927   <h3><a name="h3-config-config" id=
1928   "h3-config-config">Configuration changes</a></h3>
1929
1930   <h4><a name="h4-config-major" id="h4-config-major">Major
1931   changes</a></h4>
1932
1933   <p>This release provides a new binary format for terminal
1934   descriptions that use extended numeric capabilities. Applications
1935   built with the wide-character <em>ncursesw</em> library can use
1936   these extended numbers.</p>
1937
1938   <ul>
1939     <li>
1940       <p>This includes utilities such as <span class=
1941       "part-name">tic</span> and <span class=
1942       "part-name">infocmp</span>, because (as noted in <a href=
1943       "#h4-new-library"><em>New features</em></a>), the feature
1944       relies upon an extension to the low-level <em>tinfo</em>
1945       library.</p>
1946     </li>
1947
1948     <li>
1949       <p>A few software packagers use a configuration option of
1950       <span class="main-name">ncurses</span> which allows the
1951       low-level <em>tinfo</em> library to be shared between the
1952       high-level <em>ncurses</em> and <em>ncursesw</em> libraries.
1953       This new feature was designed to work in that configuration
1954       as well.</p>
1955     </li>
1956   </ul>
1957
1958   <p>Other applications (i.e., using the 8-bit <em>ncurses</em>
1959   library) which read the extended terminal descriptions see those
1960   numeric capabilities set to the maximum value for a signed 16-bit
1961   number.</p>
1962
1963   <p>Older versions of <span class="main-name">ncurses</span>'
1964   <span class="part-name">tic</span> accept out-of-range numeric
1965   capabilities, storing those as the maximum value for a signed
1966   16-bit number. Other implementations of curses (mentioned in the
1967   discussion of <a href=
1968   "https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap">
1969   <span class="part-name">picsmap</span></a>) give zero for these
1970   out-of-range capabilities.</p>
1971
1972   <h4><a name="h4-config-options" id=
1973   "h4-config-options">Configuration options</a></h4>
1974
1975   <p>These changes provide support for <span class=
1976   "main-name">tack</span> 1.08, released in <a href=
1977   "https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726">
1978   July 2017</a>:</p>
1979
1980   <ul>
1981     <li>
1982       <p>add <code>--without-tack</code> configure option to refine
1983       <code>--with-progs</code> configure option. Normally
1984       <span class="main-name">tack</span> is built outside the
1985       <span class="main-name">ncurses</span> tree, but a few
1986       packagers combine it during the build. If
1987       <code>term_entry.h</code> is installed, there is no advantage
1988       to in-tree builds.</p>
1989     </li>
1990
1991     <li>
1992       <p>adjust configure-script to define
1993       <code>HAVE_CURSES_DATA_BOOLNAMES</code> symbol needed for
1994       <span class="main-name">tack</span> 1.08 when built in-tree.
1995       Rather than relying upon internal "_nc_" functions,
1996       <span class="main-name">tack</span> now uses the boolean,
1997       number and string capability name-arrays provided by
1998       <span class="main-name">ncurses</span> and SVr4 Unix curses.
1999       It still uses <code>term_entry.h</code> for the definitions
2000       of the extended capability arrays.</p>
2001     </li>
2002
2003     <li>
2004       <p>add dependency upon ncurses_cfg.h to <span class=
2005       "part-name">tic</span>'s header-files; any program using
2006       <span class="part-name">tic</span>-library will have to
2007       supply this file. Legacy <span class="main-name">tack</span>
2008       versions supply this file; ongoing <span class=
2009       "main-name">tack</span> development has dropped the
2010       dependency upon <span class="part-name">tic</span>-library
2011       and new releases will not be affected.</p>
2012     </li>
2013   </ul>
2014
2015   <p>Other changes to the configure-script and generated files
2016   include</p>
2017
2018   <ul>
2019     <li>
2020       <p>add configure options to disable checks for form, menu and
2021       panel libraries so that ncurses-examples can be built with
2022       non-SVr4 curses implementations.</p>
2023     </li>
2024
2025     <li>
2026       <p>add configure option <code>--enable-opaque-curses</code>
2027       for <em>ncurses</em> library and similar options for the
2028       other libraries.</p>
2029     </li>
2030
2031     <li>
2032       <p>add configure option <code>--disable-wattr-macros</code>
2033       for use in cases where one wants to use the same headers for
2034       ncurses5/ncurses6 development, by suppressing the
2035       <em>wattr*</em> macros which differ due to the introduction
2036       of extended colors</p>
2037     </li>
2038
2039     <li>
2040       <p>modify configure macro for shared-library rules to use
2041       <code>-Wl,-rpath</code> rather than <code>-rpath</code> to
2042       work around a bug in <span class="part-name">scons</span></p>
2043     </li>
2044
2045     <li>
2046       <p>improve ncurses-examples' configure script to define as
2047       needed <code>NCURSES_WIDECHAR</code> for platforms where
2048       <code>_XOPEN_SOURCE_EXTENDED</code> does not work. Also
2049       modified the test program to ensure that if building with
2050       <span class="main-name">ncurses</span>, that the
2051       <code>cchar_t</code> type is checked, since that is normally
2052       (since <a href=
2053       "https://invisible-island.net/ncurses/NEWS.html#t20111030">20111030</a>)
2054       ifdef'd depending on this test.</p>
2055     </li>
2056
2057     <li>
2058       <p>modify configure script to handle the case where
2059       <span class="part-name">tic</span>-library is renamed, but
2060       the <code>--with-debug</code> option is used by itself
2061       without normal or shared libraries</p>
2062     </li>
2063
2064     <li>
2065       <p>modify editing script which generates resulting.map to
2066       work with the clang configuration on recent FreeBSD, which
2067       gives an error on an empty "local" section.</p>
2068     </li>
2069
2070     <li>
2071       <p>improve configure check for setting the
2072       <code>WILDCARD_SYMS</code> variable; on ppc64 the variable is
2073       in the <strong><em>Data</em></strong> section rather than
2074       <strong><em>Text</em></strong>.</p>
2075     </li>
2076
2077     <li>
2078       <p>correct result of configure option
2079       <code>--without-fallbacks</code>, which caused FALLBACK_LIST
2080       to be set to "no"</p>
2081     </li>
2082
2083     <li>
2084       <p>modify <code>--with-pkg-config-libdir</code> option to
2085       make it possible to install &ldquo;.pc&rdquo; files even if
2086       <span class="part-name">pkg-config</span> is not found. Limit
2087       this change, to suppress the actual install if it is not
2088       overridden to a valid directory at install time.</p>
2089     </li>
2090
2091     <li>
2092       <p>disallow &ldquo;no&rdquo; as a possible value for
2093       <code>--with-shlib-version</code> option, overlooked in
2094       cleanup-changes for <a href=
2095       "https://invisible-island.net/ncurses/NEWS.html#t20000708">20000708</a>.</p>
2096     </li>
2097   </ul>
2098
2099   <h3><a name="h3-portability" id=
2100   "h3-portability">Portability</a></h3>
2101
2102   <p>Many of the portability changes are implemented via the
2103   configure script:</p>
2104
2105   <ul>
2106     <li>
2107       <p>improve configure script's <code>CF_CC_ENV_FLAGS</code>
2108       macro to allow for compiler wrappers such as <span class=
2109       "part-name">ccache</span>. This change moves only the
2110       preprocessor, optimization and warning flags to
2111       <code>CPPFLAGS</code> and <code>CFLAGS</code>, leaving the
2112       residue in <code>CC</code>. That happens to work for
2113       <span class="part-name">gcc</span>'s various
2114       &ldquo;model&rdquo; options, but may require tuning for other
2115       compilers.</p>
2116     </li>
2117
2118     <li>
2119       <p>modify ncurses-examples' configure script to use
2120       <span class="part-name">pkg-config</span> for the extra
2121       form/menu/panel libraries, to be more consistent with the
2122       handling of the curses/ncurses library.</p>
2123     </li>
2124
2125     <li>
2126       <p>add configuration checks to build with <a href=
2127       "https://invisible-island.net/ncurses/ncurses-netbsd.html">NetBSD
2128       curses</a>, which for example lacks <a href=
2129       "https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env">
2130       <code>use_env</code></a>.</p>
2131     </li>
2132
2133     <li>
2134       <p>change ncurses-examples to use <code>attr_t</code> vs
2135       <code>chtype</code> to follow X/Open documentation more
2136       closely since Solaris xpg4-curses uses different values for
2137       <code>WA_<em>xxx</em></code> vs <code>A_<em>xxx</em></code>
2138       that rely on attr_t being an unsigned short. Tru64 aka OSF1,
2139       HPUX, AIX did as <span class="main-name">ncurses</span> does,
2140       equating the two sets.</p>
2141     </li>
2142
2143     <li>
2144       <p>modify several test programs to reflect that <span class=
2145       "main-name">ncurses</span> honors existing signal handlers in
2146       initscr, while other implementations do not.</p>
2147     </li>
2148
2149     <li>
2150       <p>add configure check for <code>openpty</code> to
2151       ncurses-examples' configure script, for <span class=
2152       "part-name">ditto</span>.</p>
2153     </li>
2154
2155     <li>
2156       <p>improve check for working <code>poll</code> function by
2157       using <code>posix_openpt</code> as a fallback in case there
2158       is no valid terminal on the standard input</p>
2159     </li>
2160
2161     <li>
2162       <p>modify ncurses-examples' configure script to check for
2163       <span class="part-name">pthread</span> dependency of
2164       <em>ncursest</em> or <em>ncursestw</em> library when building
2165       the <span class="main-name">ncurses</span> examples, e.g., in
2166       case weak symbols are used.</p>
2167     </li>
2168
2169     <li>
2170       <p>add checks in ncurses-examples' configure script for some
2171       functions neither in 4.3BSD curses, nor based on X/Open
2172       Curses:</p>
2173
2174       <ul>
2175         <li>
2176           <p>modify a loop limit in firework.c to work around
2177           absense of limit checks in some libraries.</p>
2178         </li>
2179
2180         <li>
2181           <p>fill the last row of a window with
2182           &ldquo;<code>?</code>&rdquo; in firstlast if waddch does
2183           not return <code>ERR</code> on the lower-right
2184           corner.</p>
2185         </li>
2186       </ul>
2187     </li>
2188
2189     <li>
2190       <p>build-fixes for the Portland Group (PGI) compilers</p>
2191
2192       <ul>
2193         <li>
2194           <p>accept whitespace in <span class=
2195           "part-name">sed</span> expression for generating
2196           expanded.c</p>
2197         </li>
2198
2199         <li>
2200           <p>modify configure check that g++ compiler warnings are
2201           not used.</p>
2202         </li>
2203
2204         <li>
2205           <p>add configure check for -fPIC option needed for shared
2206           libraries.</p>
2207         </li>
2208       </ul>
2209     </li>
2210
2211     <li>
2212       <p>modify configure script for clang as used on FreeBSD, to
2213       work around clang's differences in exit codes vs gcc.</p>
2214     </li>
2215
2216     <li>
2217       <p>fixes for configure/build using clang on OSX</p>
2218
2219       <ul>
2220         <li>
2221           <p>do not redefine &ldquo;inline&rdquo; in
2222           <code>ncurses_cfg.h</code>; this was originally to solve
2223           a problem with gcc/g++, but is aggravated by clang's
2224           misuse of symbols to pretend it is gcc.</p>
2225         </li>
2226
2227         <li>
2228           <p>add braces to configure script to prevent unwanted
2229           addition of &ldquo;<code>-lstdc++</code>&rdquo; option to
2230           the <code>CXXLIBS</code> symbol.</p>
2231         </li>
2232
2233         <li>
2234           <p>improve/update test-program used for checking
2235           existence of stdc++ library.</p>
2236         </li>
2237
2238         <li>
2239           <p>if <code>$CXXLIBS</code> is set, the linkage test uses
2240           that in addition to <code>$LIBS</code>.</p>
2241         </li>
2242       </ul>
2243     </li>
2244
2245     <li>
2246       <p>fixes for OS/2:</p>
2247
2248       <ul>
2249         <li>
2250           <p>use button instead of <code>kbuf[0]</code> in
2251           EMX-specific part of <code>lib_mouse.c</code></p>
2252         </li>
2253
2254         <li>
2255           <p>support building with <span class=
2256           "part-name">libtool</span> on OS/2</p>
2257         </li>
2258
2259         <li>
2260           <p>use stdc++ library with OS/2 kLIBC</p>
2261         </li>
2262
2263         <li>
2264           <p>clear configure script's <code>cf_XOPEN_SOURCE</code>
2265           for OS/2, to work with its header files</p>
2266         </li>
2267       </ul>
2268     </li>
2269
2270     <li>
2271       <p>add &ldquo;newer&rdquo; baudrate symbols to the <a href=
2272       "https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-baudrate">
2273       <code>baudrate</code></a> function in the ncurses library as
2274       well as to a corresponding table in <span class=
2275       "part-name">tset</span>.</p>
2276     </li>
2277
2278     <li>
2279       <p>modify ncurses-examples <span class=
2280       "part-name">savescreen</span> to work with AIX and HPUX.</p>
2281     </li>
2282
2283     <li>
2284       <p>define <code>WIN32_LEAN_AND_MEAN</code> for MinGW port,
2285       making builds faster.</p>
2286     </li>
2287
2288     <li>
2289       <p>add a configure check for <em>wcwidth</em> versus the
2290       <span class="main-name">ncurses</span> line-drawing
2291       characters, to use in special-casing systems such as Solaris.
2292       Solaris, however, requires a special case that maps Unicode
2293       line-drawing characters into the acsc string for non-Unicode
2294       locales. Solaris also has a misconfigured wcwidth which marks
2295       all of the line drawing characters as double-width.</p>
2296     </li>
2297
2298     <li>
2299       <p>string-hacks (non-standard):</p>
2300
2301       <ul>
2302         <li>
2303           <p>fix configure script to record when
2304           <code>strlcat</code> is found on OpenBSD.</p>
2305         </li>
2306
2307         <li>
2308           <p>add <code>--enable-string-hacks</code> option to
2309           ncurses-examples' configure script.</p>
2310         </li>
2311
2312         <li>
2313           <p>completed string-hacks for <em>sprintf</em>, etc.,
2314           including the ncurses-examples programs.</p>
2315         </li>
2316
2317         <li>
2318           <p>make <code>--enable-string-hacks</code> option work
2319           with Debian by checking for the "bsd" library and its
2320           associated "&lt;bsd/string.h&gt;" header.</p>
2321         </li>
2322       </ul>
2323     </li>
2324
2325     <li>
2326       <p>workaround for Debian's antique/unmaintained version of
2327       mawk:</p>
2328
2329       <ul>
2330         <li>
2331           <p>see Debian #65617, which was fixed in <span class=
2332           "main-name">mawk</span>'s upstream releases in <a href=
2333           "https://invisible-island.net/mawk/CHANGES.html#t20090727">
2334           2009</a>.</p>
2335         </li>
2336
2337         <li>
2338           <p>related fixes when building link_test.</p>
2339         </li>
2340       </ul>
2341     </li>
2342   </ul>
2343   <hr>
2344
2345   <h2><a name="h2-features" id="h2-features">Features of
2346   <span class="main-name">ncurses</span></a></h2>
2347
2348   <p>The <span class="main-name">ncurses</span> package is fully
2349   upward-compatible with SVr4 (System V Release 4) curses:</p>
2350
2351   <ul>
2352     <li>
2353       <p>All of the SVr4 calls have been implemented (and are
2354       documented).</p>
2355     </li>
2356
2357     <li>
2358       <p><span class="main-name">ncurses</span> supports all of the
2359       for SVr4 curses features including keyboard mapping, color,
2360       forms-drawing with ACS characters, and automatic recognition
2361       of keypad and function keys.</p>
2362     </li>
2363
2364     <li>
2365       <p><span class="main-name">ncurses</span> provides these SVr4
2366       add-on libraries (not part of X/Open Curses):</p>
2367
2368       <ul>
2369         <li>
2370           <p>the panels library, supporting a stack of windows with
2371           backing store.</p>
2372         </li>
2373
2374         <li>
2375           <p>the menus library, supporting a uniform but flexible
2376           interface for menu programming.</p>
2377         </li>
2378
2379         <li>
2380           <p>the form library, supporting data collection through
2381           on-screen forms.</p>
2382         </li>
2383       </ul>
2384     </li>
2385
2386     <li>
2387       <p><span class="main-name">ncurses</span>'s terminal database
2388       is fully compatible with that used by SVr4 curses.</p>
2389
2390       <ul>
2391         <li>
2392           <p><span class="main-name">ncurses</span> supports
2393           user-defined capabilities which it can see, but which are
2394           hidden from SVr4 curses applications using the
2395           <em>same</em> terminal database.</p>
2396         </li>
2397
2398         <li>
2399           <p>It can be optionally configured to match the format
2400           used in related systems such as AIX and Tru64.</p>
2401         </li>
2402
2403         <li>
2404           <p>Alternatively, <span class="main-name">ncurses</span>
2405           can be configured to use hashed databases rather than the
2406           directory of files used by SVr4 curses.</p>
2407         </li>
2408       </ul>
2409     </li>
2410
2411     <li>
2412       <p>The <span class="main-name">ncurses</span> utilities have
2413       options to allow you to filter terminfo entries for use with
2414       less capable <em>curses</em>/<em>terminfo</em> versions such
2415       as the HP/UX and AIX ports.</p>
2416     </li>
2417   </ul>
2418
2419   <p>The <span class="main-name">ncurses</span> package also has
2420   many useful extensions over SVr4:</p>
2421
2422   <ul>
2423     <li>
2424       <p>The API is 8-bit clean and base-level conformant with the
2425       X/OPEN curses specification, XSI curses (that is, it
2426       implements all BASE level features, and most EXTENDED
2427       features). It includes many function calls not supported
2428       under SVr4 curses (but portability of all calls is documented
2429       so you can use the SVr4 subset only).</p>
2430     </li>
2431
2432     <li>
2433       <p>Unlike SVr3 curses, <span class="main-name">ncurses</span>
2434       can write to the rightmost-bottommost corner of the screen if
2435       your terminal has an insert-character capability.</p>
2436     </li>
2437
2438     <li>
2439       <p>Ada95 and C++ bindings.</p>
2440     </li>
2441
2442     <li>
2443       <p>Support for mouse event reporting with X Window xterm and
2444       FreeBSD and OS/2 console windows.</p>
2445     </li>
2446
2447     <li>
2448       <p>Extended mouse support via Alessandro Rubini's gpm
2449       package.</p>
2450     </li>
2451
2452     <li>
2453       <p>The function <code>wresize</code> allows you to resize
2454       windows, preserving their data.</p>
2455     </li>
2456
2457     <li>
2458       <p>The function <code>use_default_colors</code> allows you to
2459       use the terminal's default colors for the default color pair,
2460       achieving the effect of transparent colors.</p>
2461     </li>
2462
2463     <li>
2464       <p>The functions <code>keyok</code> and
2465       <code>define_key</code> allow you to better control the use
2466       of function keys, e.g., disabling the <span class=
2467       "main-name">ncurses</span> KEY_MOUSE, or by defining more
2468       than one control sequence to map to a given key code.</p>
2469     </li>
2470
2471     <li>
2472       <p>Support for 256-color terminals, such as modern xterm.</p>
2473     </li>
2474
2475     <li>
2476       <p>Support for 16-color terminals, such as <em>aixterm</em>
2477       and <em>modern xterm</em>.</p>
2478     </li>
2479
2480     <li>
2481       <p>Better cursor-movement optimization. The package now
2482       features a cursor-local-movement computation more efficient
2483       than either BSD's or System V's.</p>
2484     </li>
2485
2486     <li>
2487       <p>Super hardware scrolling support. The screen-update code
2488       incorporates a novel, simple, and cheap algorithm that
2489       enables it to make optimal use of hardware scrolling,
2490       line-insertion, and line-deletion for screen-line movements.
2491       This algorithm is more powerful than the 4.4BSD curses
2492       <code>quickch</code> routine.</p>
2493     </li>
2494
2495     <li>
2496       <p>Real support for terminals with the magic-cookie glitch.
2497       The screen-update code will refrain from drawing a highlight
2498       if the magic- cookie unattributed spaces required just before
2499       the beginning and after the end would step on a non-space
2500       character. It will automatically shift highlight boundaries
2501       when doing so would make it possible to draw the highlight
2502       without changing the visual appearance of the screen.</p>
2503     </li>
2504
2505     <li>
2506       <p>It is possible to generate the library with a list of
2507       pre-loaded fallback entries linked to it so that it can serve
2508       those terminal types even when no terminfo tree or termcap
2509       file is accessible (this may be useful for support of
2510       screen-oriented programs that must run in single-user
2511       mode).</p>
2512     </li>
2513
2514     <li>
2515       <p>The <a href=
2516       "https://invisible-island.net/ncurses/man/tic.1m.html"><span class="part-name">
2517       tic</span></a>/<a href=
2518       "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a>
2519       utility provided with <span class="main-name">ncurses</span>
2520       has the ability to translate many termcaps from the XENIX,
2521       IBM and AT&amp;T extension sets.</p>
2522     </li>
2523
2524     <li>
2525       <p>A BSD-like <a href=
2526       "https://invisible-island.net/ncurses/man/tset.1.html"><span class="part-name">
2527       tset</span></a> utility is provided.</p>
2528     </li>
2529
2530     <li>
2531       <p>The <span class="main-name">ncurses</span> library and
2532       utilities will automatically read terminfo entries from
2533       $HOME/.terminfo if it exists, and compile to that directory
2534       if it exists and the user has no write access to the system
2535       directory. This feature makes it easier for users to have
2536       personal terminfo entries without giving up access to the
2537       system terminfo directory.</p>
2538     </li>
2539
2540     <li>
2541       <p>You may specify a path of directories to search for
2542       compiled descriptions with the environment variable
2543       TERMINFO_DIRS (this generalizes the feature provided by
2544       TERMINFO under stock System V.)</p>
2545     </li>
2546
2547     <li>
2548       <p>In terminfo source files, use capabilities may refer not
2549       just to other entries in the same source file (as in System
2550       V) but also to compiled entries in either the system terminfo
2551       directory or the user's $HOME/.terminfo directory.</p>
2552     </li>
2553
2554     <li>
2555       <p>The table-of-entries utility <a href=
2556       "https://invisible-island.net/ncurses/man/toe.1m.html"><span class="part-name">
2557       toe</span></a> makes it easy for users to see exactly what
2558       terminal types are available on the system.</p>
2559     </li>
2560
2561     <li>
2562       <p>The library meets the XSI requirement that every macro
2563       entry point have a corresponding function which may be linked
2564       (and will be prototype-checked) if the macro definition is
2565       disabled with <code>#undef</code>.</p>
2566     </li>
2567
2568     <li>
2569       <p>Extensive documentation is provided (see the <em><a href=
2570       "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">
2571       Additional Reading</a></em> section of the <em><a href=
2572       "https://invisible-island.net/ncurses/ncurses.faq.html"><span class="main-name">
2573       ncurses</span> FAQ</a></em> for online documentation).</p>
2574     </li>
2575   </ul>
2576
2577   <h2><a name="h2-who-uses" id="h2-who-uses">Applications using
2578   <span class="main-name">ncurses</span></a></h2>
2579
2580   <p>The <span class="main-name">ncurses</span> distribution
2581   includes a selection of test programs (including a few games).
2582   These are available separately as <a href=
2583   "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p>
2584
2585   <p>The ncurses library has been tested with a wide variety of
2586   applications including:</p>
2587
2588   <blockquote>
2589     <dl>
2590       <dt><span class="part-name">aptitude</span></dt>
2591
2592       <dd>
2593         <p>FrontEnd to Apt, the debian package manager</p>
2594
2595         <p><a href=
2596         "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p>
2597       </dd>
2598
2599       <dt><span class="part-name">cdk</span></dt>
2600
2601       <dd>
2602         <p>Curses Development Kit</p>
2603
2604         <p><a href=
2605         "https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br>
2606         </p>
2607       </dd>
2608
2609       <dt><span class="part-name">ded</span></dt>
2610
2611       <dd>
2612         <p>directory-editor</p>
2613
2614         <p><a href=
2615         "https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p>
2616       </dd>
2617
2618       <dt><span class="part-name">dialog</span></dt>
2619
2620       <dd>
2621         <p>the underlying application used in Slackware's setup,
2622         and the basis for similar install/configure applications on
2623         many systems.</p>
2624
2625         <p><a href=
2626         "https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p>
2627       </dd>
2628
2629       <dt><span class="part-name">lynx</span></dt>
2630
2631       <dd>
2632         <p>the text WWW browser</p>
2633
2634         <p><a href=
2635         "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p>
2636       </dd>
2637
2638       <dt><span class="part-name">mutt</span></dt>
2639
2640       <dd>
2641         <p>mail utility</p>
2642
2643         <p><a href=
2644         "http://www.mutt.org/">http://www.mutt.org/</a></p>
2645       </dd>
2646
2647       <dt><span class="part-name">ncftp</span></dt>
2648
2649       <dd>
2650         <p>file-transfer utility</p>
2651
2652         <p><a href=
2653         "https://www.ncftp.com/">https://www.ncftp.com/</a></p>
2654       </dd>
2655
2656       <dt><span class="part-name">nvi</span></dt>
2657
2658       <dd>
2659         <p>New vi uses ncurses.</p>
2660
2661         <p><a href=
2662         "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br>
2663         </p>
2664       </dd>
2665
2666       <dt><span class="part-name">ranger</span></dt>
2667
2668       <dd>
2669         <p>A console file manager with VI key bindings in
2670         <em>Python</em>.</p>
2671
2672         <p><a href=
2673         "https://ranger.github.io/">https://ranger.github.io/</a></p>
2674       </dd>
2675
2676       <dt><span class="part-name">tin</span></dt>
2677
2678       <dd>
2679         <p>newsreader, supporting color, MIME</p>
2680
2681         <p><a href=
2682         "http://www.tin.org/">http://www.tin.org/</a></p>
2683       </dd>
2684
2685       <dt><span class="part-name">vifm</span></dt>
2686
2687       <dd>
2688         <p>File manager with vi like keybindings</p>
2689
2690         <p><a href="https://vifm.info/">https://vifm.info/</a></p>
2691       </dd>
2692     </dl>
2693   </blockquote>
2694
2695   <p>as well as some that use <span class=
2696   "main-name">ncurses</span> for the terminfo support alone:</p>
2697
2698   <blockquote>
2699     <dl>
2700       <dt><span class="part-name">minicom</span></dt>
2701
2702       <dd>
2703         <p>terminal emulator for serial modem connections</p>
2704
2705         <p><a href=
2706         "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p>
2707       </dd>
2708
2709       <dt><span class="part-name">mosh</span></dt>
2710
2711       <dd>
2712         <p>a replacement for <code>ssh</code>.</p>
2713
2714         <p><a href=
2715         "https://mosh.mit.edu/">https://mosh.mit.edu/</a></p>
2716       </dd>
2717
2718       <dt><span class="part-name">tack</span></dt>
2719
2720       <dd>
2721         <p>terminfo action checker</p>
2722
2723         <p><a href=
2724         "https://invisible-island.net/ncurses/tack.html">https://invisible-island.net/ncurses/tack.html</a></p>
2725       </dd>
2726
2727       <dt><span class="part-name">tmux</span></dt>
2728
2729       <dd>
2730         <p>terminal multiplexor</p>
2731
2732         <p><a href=
2733         "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p>
2734       </dd>
2735
2736       <dt><span class="part-name">vile</span></dt>
2737
2738       <dd>
2739         <p>vi-like-emacs may be built to use the terminfo, termcap
2740         or curses interfaces.</p>
2741
2742         <p><a href=
2743         "https://invisible-island.net/vile/">https://invisible-island.net/vile/</a></p>
2744       </dd>
2745     </dl>
2746   </blockquote>
2747
2748   <p>and finally, those which use only the termcap interface:</p>
2749
2750   <blockquote>
2751     <dl>
2752       <dt><span class="part-name">emacs</span></dt>
2753
2754       <dd>
2755         <p>text editor</p>
2756
2757         <p><a href=
2758         "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p>
2759       </dd>
2760
2761       <dt><span class="part-name">less</span></dt>
2762
2763       <dd>
2764         <p>The most commonly used <em>pager</em> (a program that
2765         displays text files).</p>
2766
2767         <p><a href=
2768         "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p>
2769       </dd>
2770
2771       <dt><span class="part-name">screen</span></dt>
2772
2773       <dd>
2774         <p>terminal multiplexor</p>
2775
2776         <p><a href=
2777         "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p>
2778       </dd>
2779
2780       <dt><span class="part-name">vim</span></dt>
2781
2782       <dd>
2783         <p>text editor</p>
2784
2785         <p><a href=
2786         "https://www.vim.org/">https://www.vim.org/</a></p>
2787       </dd>
2788     </dl>
2789   </blockquote>
2790
2791   <h2><a name="h2-development" id="h2-development">Development
2792   activities</a></h2>
2793
2794   <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span>
2795   from a previous package pcurses, written by Pavel Curtis. Eric S.
2796   Raymond continued development. J&uuml;rgen Pfeifer wrote most of
2797   the form and menu libraries. Ongoing development work is done by
2798   <a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
2799   Thomas Dickey also acts as the maintainer for the Free Software
2800   Foundation, which holds the <a href=
2801   "https://invisible-island.net/ncurses/ncurses-license.html">copyright
2802   on ncurses</a>.</p>
2803
2804   <p>Contact the current maintainers at</p>
2805
2806   <blockquote>
2807     <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>
2808   </blockquote>
2809
2810   <p>To join the ncurses mailing list, please write email to</p>
2811
2812   <blockquote>
2813     <a href=
2814     "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a>
2815   </blockquote>containing the line:
2816
2817   <blockquote>
2818     <p><code>subscribe</code>
2819     <em>&lt;name&gt;@&lt;host.domain&gt;</em></p>
2820   </blockquote>
2821
2822   <p>This list is open to anyone interested in helping with the
2823   development and testing of this package.</p>
2824
2825   <p>Beta versions of <span class="main-name">ncurses</span> and
2826   patches to the current release are made available at</p>
2827
2828   <blockquote>
2829     <p><a href=
2830     "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/</a>
2831     and<br>
2832     <a href=
2833     "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a>&nbsp;.</p>
2834   </blockquote>
2835
2836   <p>There is an archive of the mailing list here:</p>
2837
2838   <blockquote>
2839     <p><a href=
2840     "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
2841     (also <a href=
2842     "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
2843   </blockquote>
2844
2845   <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
2846   resources</a></h2>
2847
2848   <p>The release notes make scattered references to these pages,
2849   which may be interesting by themselves:</p>
2850
2851   <ul>
2852     <li><a href=
2853     "https://invisible-island.net/ncurses/ncurses-license.html"><span class="main-name">
2854     ncurses</span> licensing</a></li>
2855
2856     <li><a href=
2857     "https://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol
2858     versioning in <span class="main-name">ncurses</span></a></li>
2859
2860     <li><a href=
2861     "https://invisible-island.net/ncurses/ncurses-slang.html">Comments
2862     on <span class="main-name">ncurses</span> versus <span class=
2863     "main-name">slang</span> (S-Lang)</a></li>
2864
2865     <li><a href=
2866     "https://invisible-island.net/ncurses/tack.html">tack &ndash;
2867     terminfo action checker</a></li>
2868
2869     <li><a href=
2870     "https://invisible-island.net/ncurses/tctest.html">tctest
2871     &ndash; termcap library checker</a></li>
2872
2873     <li><a href=
2874     "https://invisible-island.net/ncurses/ncurses.html#download_database">
2875     Terminal Database</a></li>
2876   </ul>
2877
2878   <h2><a name="h2-other-stuff" id="h2-other-stuff">Other
2879   resources</a></h2>
2880
2881   <p>The distribution provides a newer version of the
2882   terminfo-format terminal description file once maintained by
2883   <a href="http://www.catb.org/~esr/terminfo/">Eric
2884   Raymond</a>&nbsp;. Unlike the older version, the termcap and
2885   terminfo data are provided in the same file, which also provides
2886   several user-definable extensions beyond the X/Open
2887   specification.</p>
2888
2889   <p>You can find lots of information on terminal-related topics
2890   not covered in the terminfo file at <a href=
2891   "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
2892   Richard Shuford's archive</a>&nbsp;.</p>
2893
2894   <div class="nav">
2895     <ul>
2896       <li><a href="#h2-overview">Overview</a></li>
2897
2898       <li>
2899         <a href="#h2-release-notes">Release Notes</a>
2900
2901         <ul>
2902           <li>
2903             <a href="#h3-library">Library improvements</a>
2904
2905             <ul>
2906               <li><a href="#h4-new-library">New features</a></li>
2907
2908               <li><a href="#h4-fixes-library">Other
2909               improvements</a></li>
2910             </ul>
2911           </li>
2912
2913           <li>
2914             <a href="#h3-programs">Program improvements</a>
2915
2916             <ul>
2917               <li><a href="#h4-utilities">Utilities</a></li>
2918
2919               <li><a href="#h4-examples">Examples</a></li>
2920             </ul>
2921           </li>
2922
2923           <li><a href="#h3-database">Terminal database</a></li>
2924
2925           <li><a href="#h3-documentation">Documentation</a></li>
2926
2927           <li><a href="#h3-bug-fixes">Interesting
2928           bug-fixes</a></li>
2929
2930           <li>
2931             <a href="#h3-config-config">Configuration changes</a>
2932
2933             <ul>
2934               <li><a href="#h4-config-major">Major changes</a></li>
2935
2936               <li><a href="#h4-config-options">Configuration
2937               options</a></li>
2938             </ul>
2939           </li>
2940
2941           <li><a href="#h3-portability">Portability</a></li>
2942         </ul>
2943       </li>
2944
2945       <li><a href="#h2-features">Features of <span class=
2946       "main-name">ncurses</span></a></li>
2947
2948       <li><a href="#h2-who-uses">Applications using <span class=
2949       "main-name">ncurses</span></a></li>
2950
2951       <li><a href="#h2-development">Development activities</a></li>
2952
2953       <li><a href="#h2-this-stuff">Related resources</a></li>
2954
2955       <li><a href="#h2-other-stuff">Other resources</a></li>
2956     </ul>
2957   </div>
2958 </body>
2959 </html>