- <ul>
- <li>A “<code>b64:</code>” prefix in the
- <code>TERMINFO</code> variable tells the terminfo reader to
- use base64 according to RFC-3548 as well as RFC-4648
- url/filename-safe format.</li>
-
- <li>A “<code>hex:</code>” prefix tells the
- terminfo reader to accept hexadecimal data as generated by
- “<code>infocmp -0qQ1</code>”.</li>
- </ul>
- </li>
- </ul>
-
- <p>Other less-visible improvements and new features include:</p>
-
- <ul>
- <li>
- <p>modify utility headers such as <code>tic.h</code> to make
- it clearer which are externals that are used by <span class=
- "main-name">tack</span>.</p>
- </li>
-
- <li>
- <p>add “<code>reset</code>” to list of programs
- whose names might change in manpages due to
- program-transformation configure options.</p>
- </li>
-
- <li>
- <p>modify “<code>-T</code>” option of
- <span class="part-name">clear</span> and <span class=
- "part-name">tput</span> to call <code>use_tioctl</code> to
- obtain the operating system's notion of the screensize if
- possible.</p>
- </li>
-
- <li>
- <p>add check in <span class="part-name">tput</span> for
- init/reset operands to ensure those use a terminal.</p>
- </li>
-
- <li>
- <p>modify programs <span class="part-name">clear</span>,
- <span class="part-name">tabs</span>, <span class=
- "part-name">tput</span> and <span class=
- "part-name">tset</span> to pass the actual tty file
- descriptor to setupterm rather than the standard output or
- error, making padding work.</p>
- </li>
-
- <li>
- <p>change <span class="part-name">tset</span>'s
- initialization to allow it to get settings from the standard
- input as well as <code>/dev/tty</code>, to be more effective
- when output or error are redirected.</p>
- </li>
-
- <li>
- <p>amend check in <span class="part-name">tput</span>,
- <span class="part-name">tabs</span> and <span class=
- "part-name">clear</span> to allow those to use the
- database-only features in <span class="part-name">cron</span>
- if a “<code>-T</code>” option gives a suitable
- terminal name.</p>
- </li>
-
- <li>
- <p>improve error message from <span class=
- "part-name">tset</span>/<span class="part-name">reset</span>
- when both stderr/stdout are redirected to a file or pipe.</p>
- </li>
- </ul>
-
- <p>Several of the less apparent features deal with translation of
- terminfo to termcap (and the reverse), with corresponding checks
- by <span class="part-name">tic</span>:</p>
-
- <ul>
- <li>
- <p>modify check in <code>fmt_entry</code> to handle a
- cancelled reset string. Make similar fixes in other parts of
- <code>dump_entry.c</code> and <code>tput.c</code></p>
- </li>
-
- <li>
- <p>correct read of terminfo entry in which all strings are
- absent or explicitly cancelled. Before this fix, the result
- was that all were treated as only absent.</p>
- </li>
-
- <li>
- <p>modify <span class="part-name">infocmp</span> to suppress
- mixture of absent/cancelled capabilities that would only show
- as “<code>NULL, NULL</code>”, unless the
- “<code>-q</code>” option is used, e.g., to show
- “<code>-, @</code>” or “<code>@,
- -</code>”.</p>
- </li>
-
- <li>
- <p>correct a warning from <span class="part-name">tic</span>
- about keys which are the same, to skip over missing/cancelled
- values.</p>
- </li>
-
- <li>
- <p>add check in <span class="part-name">tic</span> for use of
- bold, etc., video attributes in the color capabilities,
- accounting whether the feature is listed in
- <code>ncv</code>.</p>
- </li>
-
- <li>
- <p>add check in <span class="part-name">tic</span> for
- unnecessary use of “<code>2</code>” to denote a
- shifted special key.</p>
- </li>
-
- <li>
- <p>improve check in <span class="part-name">tic</span> for
- delays by also warning about beep/flash when a delay is not
- embedded, or if those use the VT100 reverse video escape
- without using a delay.</p>
- </li>
-
- <li>
- <p>improve checks in <code>trim_sgr0</code>, comp_parse.c and
- parse_entry.c, for cancelled string capabilities.</p>
- </li>
-
- <li>
- <p>add check in <span class="part-name">tic</span> for some
- syntax errors of delays, as well as use of proportional
- delays for non-line capabilities.</p>
- </li>
-
- <li>
- <p>add check in <span class="part-name">tic</span> for
- conflict between <code>ritm</code>, <code>rmso</code>,
- <code>rmul</code> versus <code>sgr0</code>.</p>
- </li>
-
- <li>
- <p>add check in <code>_nc_parse_entry</code> for invalid
- entry name, setting the name to
- “<code>invalid</code>” to avoid problems storing
- entries.</p>
- </li>
-
- <li>
- <p>improve <code>_nc_tparm_analyze</code>, using that to
- extend the checks made by <span class="part-name">tic</span>
- for reporting inconsistencies between the expected number of
- parameters for a capability and the actual.</p>
- </li>
-
- <li>
- <p>remove <span class="part-name">tic</span> warning about
- “<code>^?</code>” in string capabilities, which
- was marked as an extension; however all Unix implementations
- support this and X/Open Curses does not address it. On the
- other hand, <a href=
- "https://invisible-island.net/ncurses/tctest.html#bsd42-ctl-question">
- BSD termcap</a> did not support this feature (until the
- <a href=
- "https://invisible-island.net/ncurses/tctest.html#freebsd-ctl-question">
- mid-1990s</a>).</p>
-
- <p>in <code>_nc_infotocap</code>, added a check to ensure
- that terminfo “<code>^?</code>” is not written to
- termcap.</p>
- </li>
-
- <li>
- <p>modify <code>sscanf</code> calls in
- <code>_nc_infotocap</code> for patterns
- “<code>%{number}%+%c</code>” and
- “<code>%'char'%+%c</code>” to check that the
- final character is really “<code>c</code>”,
- avoiding a case in icl6404 which cannot be converted to
- termcap.</p>
- </li>
-
- <li>
- <p>in <code>_nc_tic_expand</code> and
- <code>_nc_infotocap</code>, improved string-length check when
- deciding whether to use “<code>^X</code>” or
- “<code>\xxx</code>” format for control
- characters, to make the output of <span class=
- "part-name">tic</span>/<span class="part-name">infocmp</span>
- more predictable.</p>
- </li>
-
- <li>
- <p>limited termcap “<code>%d</code>” width to 2
- digits on input, and use “<code>%2</code>” in
- preference to “<code>%02</code>” on output.</p>
- </li>
-
- <li>
- <p>correct terminfo/termcap conversion of
- “<code>%02</code>” and
- “<code>%03</code>” into
- “<code>%2</code>” and
- “<code>%3</code>”; the result repeated the last
- character.</p>
- </li>
- </ul>
-
- <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
-
- <p>Along with the library and utilities, many improvements were
- made to the <a href=
- "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>.</p>
-
- <p>These changes were made to demonstrate new extensions in
- <span class="main-name">ncurses</span>:</p>
-
- <ul>
- <li>
- <p>add <span class="part-name">demo_new_pair</span> program,
- to demonstrate <a href=
- "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-alloc_pair">
- <code>alloc_pair</code></a>, <a href=
- "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-find_pair">
- <code>find_pair</code></a> and <a href=
- "https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-free_pair">
- <code>free_pair</code></a> functions.</p>
-
- <p>This program iterates over the possible color
- combinations, allocating or initializing color pairs. For
- best results, choose screen-width dividing evenly into the
- number of colors. e.g.,</p>
-
- <blockquote>
- <table summary="sample layouts for demo_new_pair">
- <tr>
- <td><code>32x64,32x128</code> </td>
-
- <td>256 colors</td>
- </tr>
-
- <tr>
- <td><code>24x44,24x88</code></td>
-
- <td>88 colors</td>
- </tr>
-
- <tr>
- <td><code>32x64,24x128</code></td>
-
- <td>16 colors</td>
- </tr>
- </table>
- </blockquote>
- </li>
-
- <li>
- <p>add <span class="part-name">extended_color</span> program,
- like the older <span class="part-name">color_set</span>
- program, but using the extended color functions, with and
- without the SP-functions interface.</p>
- </li>
-
- <li>
- <p>add <span class="part-name">picsmap</span> program to fill
- in some testing issues not met by <span class=
- "part-name">dots</span>, using this as the third example in a
- comparison of the <a href=
- "https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap">
- ncurses versus slang</a> libraries.</p>
-
- <p>The program can directly read X bitmap and pixmap files,
- displaying a picture. It can read other image files using
- <span class="part-name">ImageMagick</span>'s <span class=
- "part-name">convert</span> program to translate the image
- into text.</p>
-
- <p>For 16-, 88- and 256-color terminal descriptions,
- <span class="part-name">picsmap</span> can load a palette
- file which tells it which color palette entries to use. For
- direct-colors, the terminal descriptions use the
- <code>RGB</code> extension capability.</p>
- </li>
- </ul>
-
- <p>There are other new example programs and a few scripts:</p>
-
- <ul>
- <li>
- <p>add <span class="part-name">dots_xcurses</span> program to
- illustrate a different approach used for extended colors
- which can be contrasted with <span class=
- "part-name">dots_curses</span>.</p>
- </li>
-
- <li>
- <p>add <span class="part-name">list_keys</span> program show
- function keys for one or more terminal descriptions. It uses
- <span class="main-name">ncurses'</span>s convention of
- modifiers for special keys, based on xterm.</p>
- </li>
-
- <li>
- <p>add <span class="part-name">padview</span> program, to
- compare pads with direct updates in the <span class=
- "part-name">view</span> program.</p>
- </li>
-
- <li>
- <p>add <span class="part-name">sp_tinfo</span> program to
- exercise the SP-functions extension of the low-level terminfo
- library.</p>
- </li>
-
- <li>
- <p>add test-programs for <code>termattrs</code> and
- <code>term_attrs</code> functions.</p>
- </li>
-
- <li>
- <p>add <span class="part-name">test_sgr</span> program to
- exercise all combinations of the sgr capability.</p>
- </li>
-
- <li>
- <p>add <span class="part-name">tput-colorcube</span> demo
- script, imitating xterm's 88- and 256-color scripts using
- <span class="part-name">tput</span>.</p>
- </li>
-
- <li>
- <p>add <span class="part-name">tput-initc</span> script to
- demonstrate how <span class="part-name">tput</span> may be
- used to initialize a color palette from a data file.</p>
- </li>
- </ul>
-
- <p>A variety of improvements were made to existing programs, both
- new features as well as options added to make the set of programs
- more consistent.</p>
-
- <p>The <span class="part-name">ncurses</span> program is the
- largest; a proportionately large number of changes were made to
- it:</p>
-
- <ul>
- <li>
- <p>modify a/A screens to make exiting on an escape character
- depend on the start of keypad and timeout modes, to allow
- better testing of function-keys.</p>
-
- <p>add “<code>t</code>” toggle for
- <code>notimeout</code> function.</p>
- </li>
-
- <li>
- <p>modify layout of b/B screens to allow for additional
- annotation on the right margin; some terminals with partial
- support did not display well.</p>
- </li>
-
- <li>
- <p>modify c/C screens to allow for extended color pairs.</p>
-
- <p>add z/Z <em>zoom</em> feature to make extended color pairs
- easier to test.</p>
-
- <p>modify test-screens to take advantage of wide screens,
- reducing the number of lines used for 88- and 256-colors.</p>
- </li>
-
- <li>
- <p>modify “<code>d</code>” edit-color screen to
- optionally read xterm color palette directly from terminal,
- as well as handling <code>KEY_RESIZE</code> and
- screen-repainting with control/L and control/R.</p>
- </li>
-
- <li>
- <p>add examples to “<code>F</code>” screen for
- <code>WACS_D_PLUS</code> and <code>WACS_T_PLUS</code>.</p>
- </li>
-
- <li>
- <p>improve “<code>g</code>” screen, correcting
- ifdef which made the legend not reflect changes to keypad-
- and scroll-modes. Added check for return-value of
- <code>putwin</code>.</p>
- </li>
-
- <li>
- <p>make “<code>s</code>” test easier to
- understand which subtests are available</p>
-
- <p>add a corresponding “<code>S</code>”
- wide-character overlap test-screen.</p>
- </li>
-
- <li>
- <p>add “<code>v</code>” screen to show
- <code>baudrate</code> and other values.</p>
- </li>
- </ul>
-
- <p>These changes were made to the other examples:</p>
-
- <ul>
- <li>
- <p>modify <span class="part-name">blue</span> program to use
- Unicode values for card-glyphs when available, as well as
- improving the check for CP437 and CP850.</p>
- </li>
-
- <li>
- <p>improve <span class="part-name">demo_menus</span> program,
- allowing mouse-click on the menu-headers to switch the active
- menu. This requires a new extension option
- <code>O_MOUSE_MENU</code> to tell the menu driver to put
- mouse events which do not apply to the active menu back into
- the queue so that the application can handle the event.</p>
- </li>
-
- <li>
- <p>correct logic in <span class=
- "part-name">demo_terminfo</span> program for
- “<code>-f</code>” option</p>
- </li>
-
- <li>
- <p>modify <span class="part-name">ditto</span> program to
- allow <code>$XTERM_PROG</code> environment variable to
- override "xterm" as the name of the program to run in the
- threaded configuration.</p>
- </li>
-
- <li>
- <p>add several options to the “<em>dots</em>”
- test-programs.</p>
- </li>
-
- <li>
- <p>modify <span class="part-name">filter</span> program:</p>
-
- <ul>
- <li>illustrate an alternative to <code>getnstr</code>, that
- polls for input while updating a clock on the right margin
- as well as responding to window size-changes.</li>
-
- <li>adapt logic used in <a href=
- "https://invisible-island.net/dialog/"><span class=
- "main-name">dialog</span></a> <a href=
- "https://invisible-island.net/dialog/manpage/dialog.html#h3-Common-Options">
- “<code>--keep-tite</code>” option</a> for
- <span class="part-name">filter</span> program as the "-a"
- option. When set, <span class="part-name">filter</span>
- attempts to suppress the alternate screen.</li>
- </ul>
- </li>
-
- <li>
- <p>modify <span class="part-name">knight</span> program to
- provide the "slow" solution for small screens using
- “<code>R</code>”, noting that Warnsdorf's method
- is easily done with “<code>a</code>”.</p>
- </li>
-
- <li>
- <p>modify the <span class="part-name">savescreen</span>
- program to add test patterns that exercise 88-, 256-, etc.,
- colors.</p>
- </li>
-
- <li>
- <p>add options to <span class="part-name">test_arrays</span>,
- for selecting termcap vs terminfo, etc.</p>
- </li>
-
- <li>
- <p>modify the <span class="part-name">view</span>
- program:</p>
-
- <ul>
- <li>expand tabs using the ncurses library rather than in
- the test-program.</li>
-
- <li>eliminate the “<code>-n</code>” option by
- simply reading the whole file.</li>
-
- <li>implement page up/down commands.</li>
-
- <li>remove the very old <code>SIGWINCH</code> example; just
- use <code>KEY_RESIZE</code>.</li>
- </ul>
- </li>
-
- <li>
- <p>improve animation in <span class="part-name">xmas</span>
- program by adding a time-delay in <code>blinkit</code>.</p>
- </li>
-
- <li>
- <p>modify several test-programs which call
- <code>use_default_colors</code> to consistently do this only
- if the “<code>-d</code>” option is given.</p>
- </li>
-
- <li>
- <p>modify the install-rule for ncurses-examples to put the
- data files in the data directory, e.g.,
- <code>/usr/share/ncurses-examples</code>.</p>
- </li>
-
- <li>
- <p>modify several test programs to use new
- <code>popup_msgs</code> function, adapted from the
- help-screen used in the <code>edit_field</code> program.</p>
- </li>
-
- <li>
- <p>modify test data for xterm palettes to use the newer
- color4/color12 values.</p>
- </li>
-
- <li>
- <p>improve the <span class="part-name">tracemunch</span>
- script:</p>
-
- <ul>
- <li>show screenXX pointers and thread identifiers as
- names.</li>
-
- <li>chang address-parameters of <code>add_wch</code>,
- <code>color_content</code> and <code>pair_content</code> to
- dummy parameters.</li>
- </ul>
- </li>
- </ul>
-
- <h3><a name="h3-database" id="h3-database">Terminal
- database</a></h3>
-
- <p>There are several new terminal descriptions:</p>
-
- <blockquote>
- <p><code>dumb-emacs-ansi</code>, <code>dvtm</code>,
- <code>dvtm-256color</code>, <code>fbterm</code>,
- <code>iterm2</code>, <code>linux-m1</code> <em>minitel
- entries</em>, <code>putty-noapp</code>, <code>viewdata</code>,
- and <code>vt100+4bsd</code> <em>building-block</em>.</p>
-
- <p><code>xterm+noalt</code>, <code>xterm+titlestack</code>,
- <code>xterm+alt1049</code>, <code>xterm+alt+title</code>
- <em>building blocks</em> and <code>xterm+direct</code>,
- <code>xterm+indirect</code>, <code>xterm-direct</code>. from
- <a href=
- "https://invisible-island.net/xterm/xterm.log.html#xterm_331">xterm
- patch #331</a>.</p>
-
- <p>several other “<code>-direct</code>”
- descriptions to address the differences of other terminal
- emulators versus <code>xterm-direct</code>.</p>
- </blockquote>
-
- <p>There are many changes to existing terminal descriptions. Some
- were updates to several descriptions:</p>
-
- <ul>
- <li>use <code>xterm+sm+1006</code> in several terminal
- descriptions which were validated as supporting the extended
- mouse feature for their respective terminal emulators.</li>
-
- <li>corrected <em>sgr</em>/<em>sgr0</em> strings in a few cases
- reported by <span class="part-name">tic</span>, making those
- correspond to the non-<em>sgr</em> settings where they differ,
- but otherwise use ECMA-48 consistently.</li>
-
- <li>add 0.1sec mandatory delay to <em>flash</em> capabilities
- using the VT100 reverse-video control</li>
- </ul>
-
- <p>while others affected specific descriptions. These were
- retested, to take into account new/undocumented changes by their
- developers:</p>
-
- <blockquote>
- <p><code>iterm</code>, <code>minitel</code>, <code>st</code>,
- <code>viewdata</code>, <code>nsterm</code></p>
- </blockquote>
-
- <p>while these are specific fixes based on user reports, or
- warnings from <span class="part-name">tic</span>:</p>
-
- <dl>
- <dt><a href=
- "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">
- <code>ansi</code> <em>building blocks</em></a></dt>
-
- <dd>
- <ul>
- <li>restored <em>rmir</em>/<em>smir</em> in
- <code>ansi+idc</code> to better match original
- <code>ansiterm+idc</code>, add alias
- <code>ansiterm</code></li>
- </ul>
- </dd>
-
- <dt><a href=
- "https://invisible-island.net/ncurses/terminfo.src.html#tic-icl6404">
- <code>icl6402</code></a></dt>
-
- <dd>
- <ul>
- <li>corrected missing comma-separator between string
- capabilities in <code>icl6402</code> and
- <code>m2-nam</code></li>
- </ul>
- </dd>
-
- <dt><a href=
- "https://invisible-island.net/ncurses/terminfo.src.html#tic-interix">
- <code>interix</code></a></dt>
-
- <dd>
- <ul>
- <li>updated using <span class="main-name">tack</span> and
- SFU with Windows 7 Ultimate.</li>
-
- <li>used <code>^?</code> for <em>kdch1</em></li>
- </ul>
- </dd>
-
- <dt><a href=
- "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Linux_consoles">
- <code>linux</code></a></dt>
-
- <dd>
- <ul>
- <li>made <code>linux3.0</code> entry the default
- <strong><code>linux</code></strong> entry</li>
-
- <li>modify <code>linux2.6</code> entry to improve
- line-drawing so that the <code>linux3.0</code> entry can be
- used in non-UTF-8 mode</li>
-
- <li>omitted selection of ISO-8859-1 for G0 in enacs
- capability from linux2.6 entry, to avoid conflict with the
- user-defined mapping. The reset feature uses ISO-8859-1 in
- any case.</li>
-
- <li>modify <em>flash</em> capability for <code>linux</code>
- and <code>wyse</code> entries to put the delay between the
- reverse/normal escapes rather than after</li>
-
- <li>modify <code>linux-16color</code> to not mask dim,
- standout or reverse with the <em>ncv</em> capability</li>
- </ul>
- </dd>
-
- <dt><a href=
- "https://invisible-island.net/ncurses/terminfo.src.html#toc-_Open_B_S_D_consoles">
- <code>pccon</code> <em>entries</em></a></dt>