+ * [1]captoinfo, a termcap conversion tool
+ * [2]clear, utility for clearing the screen
+ * [3]infocmp, the terminfo decompiler
+ * [4]tabs, set tabs on a terminal
+ * [5]tic, the terminfo compiler
+ * [6]toe, list (table of) terminfo entries
+ * [7]tput, utility for retrieving terminal capabilities in shell
+ scripts
+ * [8]tset, to initialize the terminal
+
+ Full manual pages are provided for the library and tools.
+
+ The ncurses distribution is available at ncurses' [9]homepage:
+
+ [10]ftp://ftp.invisible-island.net/ncurses/ or
+ [11]https://invisible-mirror.net/archives/ncurses/ .
+
+ It is also available via anonymous FTP at the GNU distribution site
+
+ [12]ftp://ftp.gnu.org/gnu/ncurses/ .
+
+Release Notes
+
+ These notes are for ncurses 6.1, released January 27, 2018.
+
+ This release is designed to be source-compatible with ncurses 5.0
+ through 6.0; providing extensions to the application binary interface
+ (ABI). Although the source can still be configured to support the
+ ncurses 5 ABI, the intent of the release is to provide extensions to
+ the ncurses 6 ABI:
+ * improve integration of tput and tset
+ * provide support for extended numeric capabilities.
+
+ There are, of course, numerous other improvements, listed in this
+ announcement.
+
+ The release notes also mention some bug-fixes, but are focused on new
+ features and improvements to existing features since ncurses 6.0
+ release.
+
+ Library improvements
+
+ New features
+
+ The improved integration of tput and tset made only small changes to
+ the libraries. However, supporting extended numeric capabilities
+ required a few changes:
+ * The TERMINAL structure in <term.h> is now opaque. Doing that
+ allowed making the structure larger, to hold the extended numeric
+ data.
+ A few applications required changes during development of
+ ncurses 6.1 because those applications misused the members of that
+ structure, e.g., directly modifying it rather than using
+ [13]def_prog_mode.
+ * Having made TERMINAL opaque (and because none of the library
+ functions use anything except a pointer to TERMINAL), it was
+ possible to increase the size of the structure, adding to the end.
+ Existing applications which were linked to the ncurses 6.0
+ high-level (ncurses, ncursesw) and low-level (tinfo, tinfo)
+ libraries should not require re-linking since the binary interface
+ did not change, nor did the structure offsets with TERMINAL
+ change.
+ A few applications use the inner TERMTYPE structure's offsets to
+ refer to terminfo capabilities within that structure. Again, those
+ do not require modification because their offsets within TERMINAL
+ did not change.
+ * When configured for wide-characters, i.e., "ncursesw" the TERMINAL
+ structure is extended.
+ The new data in TERMINAL holds the same information as TERMTYPE,
+ but with larger numbers ("int" versus "short"). It is named
+ TERMTYPE2.
+ The library uses this structure internally in preference to
+ TERMTYPE, referring to TERMTYPE only to initialize it for
+ applications that use the capabilities defined in <term.h>
+ * When configured for 8-bit (narrow) characters, the TERMTYPE2
+ structure is not used.
+ * The updated application binary interface is 6.1.20171230 (used for
+ new [14]versioned symbols), although the interface changes were
+ developed several months previously.
+
+ The motivation for making this extension came from noticing that
+ [15]termcap applications could (though not [16]realistically) use
+ larger numbers than would fit in 16-bits, and the fact that the number
+ of color pairs for a 256-color xterm could not be expressed in
+ terminfo (i.e., 32767 versus 65536). Also, a few terminals support
+ direct-colors, which could use the extension.
+
+ Generally speaking, applications that use internal details of a
+ library are unsupported. There was exactly one exception for ncurses:
+ the tack program used the internal details of TERMINAL, because it
+ provides an ncurses-specific feature for interactively modifying a
+ terminfo description and writing the updated description to a
+ text-file. It was possible to not only separate tack from these
+ [17]internal details of ncurses, but to generalize it so that the
+ program works with Unix curses (omitting the ncurses-specific
+ feature). That was released as [18]tack 1.08 in July 2017.
+
+ While making changes to tack to eliminate its dependency upon ncurses
+ internals, the publicly-visible details of those internals were
+ reviewed, and some symbols were moved to private header files, while
+ others were marked explicitly as ncurses internals. Future releases of
+ ncurses may eliminate some of those symbols (such as those used by
+ tack 1.07) because they are neither part of the API or the ABI.
+
+ Using the TERMTYPE2 extended numeric capabilities, it is possible to
+ support both color pair values and color values past 32767. Taking
+ compatibility into account, developers readily understand that neither
+ function signatures nor structure offsets change. Also, existing
+ functions have to operate with the extended numbers. Most of that work
+ is internal to the library. For the external interfaces, a hybrid
+ approach was used:
+ * X/Open Curses defined function prototypes such as wattr_set with
+ an unused parameter, for "future" use. After 25 years, the future
+ is here: ncurses uses the parameter to augment color pair values
+ as described in the [19]manual page.
+ * Other functions such as those defining color pairs did not have a
+ corresponding reserved parameter. For those, ncurses defines
+ extended versions such as init_extended_pair (versus init_pair),
+ init_extended_color (versus init_color).
+
+ Additionally, to improve performance other changes (and extensions)
+ are provided in this release:
+ * Several new functions simplify management of large sets of color
+ pairs: reset_color_pairs, alloc_pair, find_pair and free_pair.
+ * New "RGB" extension capability for direct-color support is used to
+ improve performance of color_content.
+ * The internal colorpair_t is now a struct, eliminating an internal
+ 8-bit limit on colors
+ * Allocation for SCREEN's color-pair table starts small, grows on
+ demand up to the limit given in the terminal description.
+ * setcchar and getcchar now treat a negative color-pair as an error.
+
+ Other improvements
+
+ These are new or revised features:
+ * modify c++/etip.h.in to accommodate deprecation of throw and
+ throws in c++17
+ * add new function unfocus_current_field
+ * add option to preserve leading whitespace in form fields
+ * add a macro for is_linetouched and adjust the function's return
+ value to make it possible for most applications to check for an
+ error-return.
+ * add build-time utility report_offsets to help show when the
+ various configurations of tinfo library are compatible or not.
+
+ These were done to limit or ultimately deprecate features:
+ * drop two symbols obsoleted in 2004: _nc_check_termtype, and
+ _nc_resolve_uses
+ * move _nc_tracebits, _tracedump and _tracemouse to curses.priv.h,
+ since they are not part of the suggested ABI6.
+ * mark some structs in form/menu/panel libraries as potentially
+ opaque without modifying API/ABI.
+ * ifdef'd header-file definition of mouse_trafo with
+ NCURSES_NOMACROS
+ * remove initialization-check for calling napms in the term-driver
+ configuration; none is needed.
+ * modify trace to avoid overwriting existing file
+
+ These are improvements to existing features:
+ * modify make_hash to allow building with address-sanitizer,
+ assuming that --disable-leaks is configured.
+ * move SCREEN field for use_tioctl data before the ncursesw fields,
+ and limit that to the sp-funcs configuration to improve termlib
+ compatibility
+ * modify db-iterator:
+ + ignore zero-length files in db-iterator; these are useful for
+ instance to suppress $HOME/.terminfo when not wanted.
+ + modify update_getenv to ensure that environment variables
+ which are not initially set will be checked later if an
+ application happens to set them
+ * modify _nc_outc_wrapper to use the standard output if the screen
+ was not initialized, rather than returning an error.
+ * improve checks for low-level terminfo functions when the terminal
+ has not been initialized.
+ * modify set_curterm to update ttytype[] data used by longname/p>
+ * modify _nc_get_screensize to allow for use_env and use_tioctl
+ state to be per-screen when sp-funcs are configured, better
+ matching the behavior when using the term-driver configuration.
+ * remove an early-return from _nc_do_color, which can interfere with
+ data needed by bkgd when ncurses is configured with extended
+ colors
+ * incorporate A_COLOR mask into COLOR_PAIR, in case user application
+ provides an out-of-range pair number
+ * modify logic for endwin-state to be able to detect the case where
+ the screen was never initialized, using that to trigger a flush of
+ ncurses' buffer for mvcur, e.g., in the sample program dots_mvcur
+ for the term-driver configuration.
+
+ These are corrections to existing features:
+ * fixes for writing extended color pairs in putwin.
+ * modify no-leaks code for lib_cur_term.c to account for the tgetent
+ cache.
+ * amend handling of the repeat_char capability in EmitRange to avoid
+ scope creep: translate the character to the alternate character
+ set when the alternate character set is enabled, and do not use
+ repeat_char for characters past 255.
+ * improve wide-character implementation of myADDNSTR in
+ frm_driver.c, which was inconsistent with the normal
+ implementation.
+ * modify winnstr and winchnstr to return error if the output pointer
+ is null, as well as adding a null pointer check of the window
+ pointer for better compatibility with other implementations.
+ * modify setupterm to save original tty-modes so that erasechar
+ works as expected. Also modify _nc_setupscreen to avoid redundant
+ calls to get original tty-modes.
+ * modify wattr_set and wattr_get to return ERR if win-parameter is
+ null, as documented.
+ * correct order of initialization for traces in use_env and
+ use_tioctl versus first _tracef calls.
+ * correct parameters for copywin call in _nc_Synchronize_Attributes
+ * flush the standard output in _nc_flush for the case where SP is
+ zero, e.g., when called via putp. This fixes a scenario where
+ "tput flash" did not work after changes in 20130112.
+ * amend internal use of tputs to consistently use the number of
+ lines affected, e.g., for insert/delete character operations.
+ While merging terminfo source early in 1995, several descriptions
+ used the "*" proportional delay for these operations, prompting a
+ change in doupdate.
+ * correct return-value of extended putwin.
+ * double-width multibyte characters were not counted properly in
+ winsnstr and wins_nwstr.
+ * amend fix for _nc_ripoffline from 20091031 to make test/ditto.c
+ work in threaded configuration.
+ * modify _nc_viscbuf2 and _tracecchar_t2 to trace wide-characters as
+ a whole rather than their multibyte equivalents.
+ * minor fix in wadd_wchnstr to ensure that each cell has nonzero
+ width.
+ * move PUTC_INIT calls next to wcrtomb calls, to avoid carry-over of
+ error status when processing Unicode values which are not mapped.
+ * add missing assignment in lib_getch.c to make notimeout work
+
+ Program improvements
+
+ While reviewing user feedback, it became apparent that the differences
+ between [20]reset (an alias for tset) and "tput reset" were confusing:
+ * one ([21]tset) updated the terminal modes, but used only part of
+ the terminfo capabilities for initialization, while
+ * the other ([22]tput) used all of the terminal capabilities while
+ neglecting the terminal modes.
+
+ On further investigation, it turned out that the differences were
+ largely an accident due to the way those programs had evolved.
+
+ This release eliminates the unnecessary differences, using the same
+ approach for tput's init (initialization), reset and clear operations
+ as the separate [23]reset and [24]clear programs. Doing this does not
+ change the command-line options; existing scripts are unaffected.
+
+ These are the user-visible changes for the three programs (tput, tset
+ and clear):
+ * add the terminal-mode parts of "reset" (aka tset) to the "tput
+ reset" command, making the two almost the same except for
+ window-size.
+ * improve tput's check for being called as "init" or "reset" to
+ allow for transformed names.
+ * add "clear" as a possible link/alias to tput.
+ * amend changes for tput to reset tty modes to "sane" if the program
+ is run as "reset", like tset. Likewise, ensure that tset sends
+ either reset- or init-strings.
+ * add -x option to clear/tput to make the E3 extension optional
+ * add functionality of "tset -w" to tput, like the "-c" feature this
+ is not optional in tput.
+ * add options -T and -V to clear command for compatibility with
+ tput.
+ * drop long-obsolete "-n" option from tset.
+ * modify tset's assignment to TERM in its output to reflect the name
+ by which the terminal description is found, rather than the
+ primary name. That was an unnecessary part from the initial
+ conversion of tset from termcap to terminfo. The termcap library
+ in 4.3BSD did this to avoid using the short 2-character name
+ * remove a restriction in tput's support for termcap names which
+ omitted capabilities normally not shown in termcap translations
+ * add usage message to clear command
+ * improve usage messages for tset and tput.
+
+ Other user-visible improvements and new features include:
+ * modify tic/infocmp display of numeric values to use hexadecimal
+ when they are "close" to a power of two, making the result more
+ readable.
+ * add "-W" option to tic/infocmp to force long strings to wrap.
+ + This is in addition to the "-w" option which attempts to fit
+ capabilities into a given line-length.
+ + If "-f" option splits line, do not further split it with
+ "-W".
+ + Begin a new line when adding "use=" after a wrapped line.
+ * add "-q" option to infocmp to suppress the "Reconstructed from"
+ comment from the header, and a corresponding option to tic to
+ suppress all comments from the "tic -I" output.
+ * Sorted options in usage message for infocmp, to make it simpler to
+ see unused letters.
+ * Updated usage message for tic, adding "-0" option.
+ * add infocmp/tic "-Q" option, which allows one to dump the compiled
+ form of the terminal entry, in hexadecimal or base64:
+ + A "b64:" prefix in the TERMINFO variable tells the terminfo
+ reader to use base64 according to RFC-3548 as well as
+ RFC-4648 url/filename-safe format.
+ + A "hex:" prefix tells the terminfo reader to accept
+ hexadecimal data as generated by "infocmp -0qQ1".
+
+ Other less-visible improvements and new features include:
+ * modify utility headers such as tic.h to make it clearer which are
+ externals that are used by tack.
+ * add "reset" to list of programs whose names might change in
+ manpages due to program-transformation configure options.
+ * modify "-T" option of clear and tput to call use_tioctl to obtain
+ the operating system's notion of the screensize if possible.
+ * add check in tput for init/reset operands to ensure those use a
+ terminal.
+ * modify programs clear, tabs, tput and tset to pass the actual tty
+ file descriptor to setupterm rather than the standard output or
+ error, making padding work.
+ * change tset's initialization to allow it to get settings from the
+ standard input as well as /dev/tty, to be more effective when
+ output or error are redirected.
+ * amend check in tput, tabs and clear to allow those to use the
+ database-only features in cron if a "-T" option gives a suitable
+ terminal name.
+ * improve error message from tset/reset when both stderr/stdout are
+ redirected to a file or pipe.
+
+ Several of the less apparent features deal with translation of
+ terminfo to termcap (and the reverse), with corresponding checks by
+ tic:
+ * modify check in fmt_entry to handle a cancelled reset string. Make
+ similar fixes in other parts of dump_entry.c and tput.c
+ * 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.
+ * modify infocmp to suppress mixture of absent/cancelled
+ capabilities that would only show as "NULL, NULL", unless the "-q"
+ option is used, e.g., to show "-, @" or "@, -".
+ * correct a warning from tic about keys which are the same, to skip
+ over missing/cancelled values.
+ * add check in tic for use of bold, etc., video attributes in the
+ color capabilities, accounting whether the feature is listed in
+ ncv.
+ * add check in tic for unnecessary use of "2" to denote a shifted
+ special key.
+ * improve check in tic 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.
+ * improve checks in trim_sgr0, comp_parse.c and parse_entry.c, for
+ cancelled string capabilities.
+ * add check in tic for some syntax errors of delays, as well as use
+ of proportional delays for non-line capabilities.
+ * add check in tic for conflict between ritm, rmso, rmul versus
+ sgr0.
+ * add check in _nc_parse_entry for invalid entry name, setting the
+ name to "invalid" to avoid problems storing entries.
+ * improve _nc_tparm_analyze, using that to extend the checks made by
+ tic for reporting inconsistencies between the expected number of
+ parameters for a capability and the actual.
+ * remove tic warning about "^?" 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,
+ [25]BSD termcap did not support this feature (until the
+ [26]mid-1990s).
+ in _nc_infotocap, added a check to ensure that terminfo "^?" is
+ not written to termcap.
+ * modify sscanf calls in _nc_infotocap for patterns "%{number}%+%c"
+ and "%'char'%+%c" to check that the final character is really "c",
+ avoiding a case in icl6404 which cannot be converted to termcap.
+ * in _nc_tic_expand and _nc_infotocap, improved string-length check
+ when deciding whether to use "^X" or "\xxx" format for control
+ characters, to make the output of tic/infocmp more predictable.
+ * limited termcap "%d" width to 2 digits on input, and use "%2" in
+ preference to "%02" on output.
+ * correct terminfo/termcap conversion of "%02" and "%03" into "%2"
+ and "%3"; the result repeated the last character.
+
+ Examples
+
+ Along with the library and utilities, many improvements were made to
+ the [27]ncurses-examples.
+
+ These changes were made to demonstrate new extensions in ncurses:
+ * add demo_new_pair program, to demonstrate [28]alloc_pair,
+ [29]find_pair and [30]free_pair functions.
+ 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.,
+
+ 32x64,32x128 256 colors
+ 24x44,24x88 88 colors
+ 32x64,24x128 16 colors
+
+ * add extended_color program, like the older color_set program, but
+ using the extended color functions, with and without the
+ SP-functions interface.
+ * add picsmap program to fill in some testing issues not met by
+ dots, using this as the third example in a comparison of the
+ [31]ncurses versus slang libraries.
+ The program can directly read X bitmap and pixmap files,
+ displaying a picture. It can read other image files using
+ ImageMagick's convert program to translate the image into text.
+ For 16-, 88- and 256-color terminal descriptions, picsmap can load
+ a palette file which tells it which color palette entries to use.
+ For direct-colors, the terminal descriptions use the RGB extension
+ capability.
+
+ There are other new example programs and a few scripts:
+ * add dots_xcurses program to illustrate a different approach used
+ for extended colors which can be contrasted with dots_curses.
+ * add list_keys program show function keys for one or more terminal
+ descriptions. It uses ncurses's convention of modifiers for
+ special keys, based on xterm.
+ * add padview program, to compare pads with direct updates in the
+ view program.
+ * add sp_tinfo program to exercise the SP-functions extension of the
+ low-level terminfo library.
+ * add test-programs for termattrs and term_attrs functions.
+ * add test_sgr program to exercise all combinations of the sgr
+ capability.
+ * add tput-colorcube demo script, imitating xterm's 88- and
+ 256-color scripts using tput.
+ * add tput-initc script to demonstrate how tput may be used to
+ initialize a color palette from a data file.
+
+ 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.
+
+ The ncurses program is the largest; a proportionately large number of
+ changes were made to it:
+ * 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.
+ add "t" toggle for notimeout function.
+ * modify layout of b/B screens to allow for additional annotation on
+ the right margin; some terminals with partial support did not
+ display well.
+ * modify c/C screens to allow for extended color pairs.
+ add z/Z zoom feature to make extended color pairs easier to test.
+ modify test-screens to take advantage of wide screens, reducing
+ the number of lines used for 88- and 256-colors.
+ * modify "d" edit-color screen to optionally read xterm color
+ palette directly from terminal, as well as handling KEY_RESIZE and
+ screen-repainting with control/L and control/R.
+ * add examples to "F" screen for WACS_D_PLUS and WACS_T_PLUS.
+ * improve "g" screen, correcting ifdef which made the legend not
+ reflect changes to keypad- and scroll-modes. Added check for
+ return-value of putwin.
+ * make "s" test easier to understand which subtests are available
+ add a corresponding "S" wide-character overlap test-screen.
+ * add "v" screen to show baudrate and other values.
+
+ These changes were made to the other examples:
+ * modify blue program to use Unicode values for card-glyphs when
+ available, as well as improving the check for CP437 and CP850.
+ * improve demo_menus program, allowing mouse-click on the
+ menu-headers to switch the active menu. This requires a new
+ extension option O_MOUSE_MENU 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.
+ * correct logic in demo_terminfo program for "-f" option
+ * modify ditto program to allow $XTERM_PROG environment variable to
+ override "xterm" as the name of the program to run in the threaded
+ configuration.
+ * add several options to the "dots" test-programs.
+ * modify filter program:
+ + illustrate an alternative to getnstr, that polls for input
+ while updating a clock on the right margin as well as
+ responding to window size-changes.
+ + adapt logic used in [32]dialog [33]"--keep-tite" option for
+ filter program as the "-a" option. When set, filter attempts
+ to suppress the alternate screen.
+ * modify knight program to provide the "slow" solution for small
+ screens using "R", noting that Warnsdorf's method is easily done
+ with "a".
+ * modify the savescreen program to add test patterns that exercise
+ 88-, 256-, etc., colors.
+ * add options to test_arrays, for selecting termcap vs terminfo,
+ etc.
+ * modify the view program:
+ + expand tabs using the ncurses library rather than in the
+ test-program.
+ + eliminate the "-n" option by simply reading the whole file.
+ + implement page up/down commands.
+ + remove the very old SIGWINCH example; just use KEY_RESIZE.
+ * improve animation in xmas program by adding a time-delay in
+ blinkit.
+ * modify several test-programs which call use_default_colors to
+ consistently do this only if the "-d" option is given.
+ * modify the install-rule for ncurses-examples to put the data files
+ in the data directory, e.g., /usr/share/ncurses-examples.
+ * modify several test programs to use new popup_msgs function,
+ adapted from the help-screen used in the edit_field program.
+ * modify test data for xterm palettes to use the newer
+ color4/color12 values.
+ * improve the tracemunch script:
+ + show screenXX pointers and thread identifiers as names.
+ + chang address-parameters of add_wch, color_content and
+ pair_content to dummy parameters.
+
+ Terminal database
+
+ There are several new terminal descriptions:
+
+ dumb-emacs-ansi, dvtm, dvtm-256color, fbterm, iterm2, linux-m1
+ minitel entries, putty-noapp, viewdata, and vt100+4bsd
+ building-block.
+
+ xterm+noalt, xterm+titlestack, xterm+alt1049, xterm+alt+title
+ building blocks and xterm+direct, xterm+indirect, xterm-direct.
+ from [34]xterm patch #331.
+
+ several other "-direct" descriptions to address the differences of
+ other terminal emulators versus xterm-direct.
+
+ There are many changes to existing terminal descriptions. Some were
+ updates to several descriptions:
+ * use xterm+sm+1006 in several terminal descriptions which were
+ validated as supporting the extended mouse feature for their
+ respective terminal emulators.
+ * corrected sgr/sgr0 strings in a few cases reported by tic, making
+ those correspond to the non-sgr settings where they differ, but
+ otherwise use ECMA-48 consistently.
+ * add 0.1sec mandatory delay to flash capabilities using the VT100
+ reverse-video control
+
+ while others affected specific descriptions. These were retested, to
+ take into account new/undocumented changes by their developers:
+
+ iterm, minitel, st, viewdata, nsterm
+
+ while these are specific fixes based on user reports, or warnings from
+ tic:
+
+ [35]ansi building blocks
+
+ + restored rmir/smir in ansi+idc to better match original
+ ansiterm+idc, add alias ansiterm
+
+ [36]icl6402
+
+ + corrected missing comma-separator between string capabilities
+ in icl6402 and m2-nam
+
+ [37]interix
+
+ + updated using tack and SFU with Windows 7 Ultimate.
+ + used ^? for kdch1
+
+ [38]linux
+
+ + made linux3.0 entry the default linux entry
+ + modify linux2.6 entry to improve line-drawing so that the
+ linux3.0 entry can be used in non-UTF-8 mode
+ + 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.
+ + modify flash capability for linux and wyse entries to put the
+ delay between the reverse/normal escapes rather than after
+ + modify linux-16color to not mask dim, standout or reverse
+ with the ncv capability
+
+ [39]pccon entries
+
+ + fixed some inconsistencies in the pccon* entries
+ + add bold to pccon+sgr+acs and pccon-base
+ + add keys f12-f124 to pccon+keys
+
+ [40]tmux
+
+ + corrected sgr string, which used screen's "standout" code
+ rather than the standard code.
+ + add settings corresponding to xterm-keys option to reflect
+ upcoming change to make that option "on" by default
+ + uncanceled Ms
+
+ [41]vt100
+
+ + modify vt100 rs2 string to reset vt52 mode and scrolling
+ regions
+ + corrected rs2 string for vt100-nam
+ + made minor fixes for vt100+4bsd, e.g., delay in sgr for
+ consistency
+
+ [42]vte
+
+ + moved SGR 24 and 27 from vte-2014 to vte-2012
+ + add a few capabilities fixed in recent VTE development
+
+ [43]xterm
+
+ + add rep to xterm-new, available since [44]late 1996.
+ + modify xterm+256color and xterm+256setaf to use correct
+ number of color pairs.
+ + modify rs1 for xterm-16color, xterm-88color and
+ xterm-256color to reset palette using oc string as in linux
+ entry.
+ + add rs1 capability to xterm-256color
+ + add oc capability to xterm+256color, allowing palette reset
+ for xterm
+ + add op to xterm+256setaf
+ + modify xterm-r5, xterm-r6 and xterm-xf86-v32 to use xterm+kbs
+ to match [45]xterm #272, reflecting packager's changes
+ + used ANSI reply for u8 in xterm-new, to reflect vt220-style
+ responses that could be returned.
+ + made xterm-pcolor sgr consistent with other capabilities
+
+ A few entries use extensions (user-defined terminal capabilities):
+ * add rmxx/smxx ECMA-48 strikeout extension to tmux and xterm-basic
+ * used RGB capability in new *-direct entries to denote direct-color
+ feature.
+
+ Documentation
+
+ As usual, this release
+ * improves documentation by describing new features,
+ * attempts to improve the description of features which users have
+ found confusing
+ * fills in overlooked descriptions of features which were described
+ in the [46]NEWS file but treated sketchily in manual pages.
+
+ In particular,
+ * Since the underlying features for [47]tset, [48]tput, and
+ [49]clear have been better integrated, the documentation now
+ includes information on how those tools evolved.
+ In addition to explaining the improved integration of the tools,
+ the manual pages made it easier to see how the tools are similar
+ and how they are different.
+ * The addch manual page has additional information on
+ [50]portability and differences from other implementations.
+ * The discussion of color-pairs in the attributes manual page is
+ improved in its [51]history section.
+ * The documentation of the chtype, cchar_t types and the attribute
+ values which can be stored in those types, in particular the
+ [52]history and [53]portability sections of the attributes manual
+ page, has been improved.
+ * improve discussion of [54]portability in the mouse manual.
+ * The pad manual page has a section on the [55]origin and
+ portability of pads.
+ * Differences between SVr4 and X/Open Curses soft-keys are discussed
+ in a new section on [56]portability.
+ * There are updated/improved notes on portability in the
+ [57]resizeterm and [58]wresize manual pages.
+
+ In addition to providing background information to explain these
+ features and show how they evolved, there are corrections,
+ clarifications, etc.:
+ * add note in the [59]addch manual about line-drawing when it
+ depends upon UTF-8.
+ * improve discussion of line-drawing characters in the [60]add_wch
+ manual.
+ * explain in [61]clear's manual page that it writes to the standard
+ output.
+ * improve description of [62]endwin.
+ * improve discussion of field validation in the [63]form driver
+ manual page.
+ * clarify the use of wint_t vs wchar_t in [64]get_wstr manual page.
+ * clarify in the [65]getch manual that the keypad mode affects an
+ application's ability to read KEY_MOUSE codes, but does not affect
+ KEY_RESIZE.
+ trim some obsolete/incorrect wording about EINTR from the getch
+ manual page
+ improve manual pages for [66]getch and [67]get_wch to point out
+ that they might return user-defined values which have no
+ predefined names in <curses.h>
+ * improve description of the -R option in the [68]infocmp manual
+ page
+ * clarify in the [69]resizeterm manual page how KEY_RESIZE is pushed
+ onto the input stream.
+ * document return value of [70]use_extended_names
+ * document differences in [71]ESCDELAY versus AIX's implementation
+ in the variables manual page.
+ * The _nc_free_tinfo function is now documented in the
+ [72]memory-leaks manual page, because it could be used in tack for
+ memory-leak checking.
+ * add a note to the [73]tic manual page about -W versus -f options.
+ * improve terminfo manual description of [74]terminfo syntax.
+ improve terminfo manual page discussion of [75]control- and
+ graphics- characters.
+ improve [76]color-handling section in terminfo manual page
+ * clarify description in [77]tput manual page regarding support for
+ termcap names
+ update [78]tput manual page to reflect changes to manipulate
+ terminal modes by sharing functions with tset.
+ * clarify in manual pages that the optional verbose option level of
+ [79]tic and [80]infocmp is available only when ncurses is
+ configured for tracing.
+ * improve manual page description of [81]tset/reset versus
+ window-size.
+ * improve description of [82]tgoto parameters
+
+ There are new manual pages:
+ * [83]user_caps documents the terminfo extensions used by ncurses.
+ * [84]scr_dump documents the screen-dump format.
+
+ Some of the improvements are more subtle, relating to the way the
+ information is presented:
+ * Made minor fixes to manpage NAME/SYNOPSIS sections to consistently
+ use rule that either all functions which are prototyped in
+ SYNOPSIS are listed in the NAME section, or the manual-page name
+ is the sole item listed in the NAME section. The latter is used to
+ reduce clutter, e.g., for the top-level library manual pages as
+ well as for certain feature-pages such as [85]SP-funcs and
+ [86]threading.
+ * improve manual pages for utilities with respect to POSIX versus
+ X/Open Curses.
+ * improve organization of the [87]attributes and [88]color manual
+ pages.
+
+ Interesting bug-fixes
+
+ * modify toe to not exit if unable to read a terminal description,
+ e.g., if there is a permission problem.
+ * correct 20100515 change for weak signals versus sigprocmask
+ * work around Ada tool-breakage in Debian 9 and later by invoking
+ gprconfig to specify the C compiler to be used by gnatmake, and
+ conditionally suppressing Library_Options line for static
+ libraries.
+ * There were, as well, several bug-fixes to handle illegal input for
+ tic. Because those did not correspond to useful terminal
+ descriptions, most users are unaffected.
+
+ Configuration changes
+
+ Major changes
+
+ This release provides a new binary format for terminal descriptions
+ that use extended numeric capabilities. Applications built with the
+ wide-character ncursesw library can use these extended numbers.
+ * This includes utilities such as tic and infocmp, because (as noted
+ in [89]New features), the feature relies upon an extension to the
+ low-level tinfo library.
+ * A few software packagers use a configuration option of ncurses
+ which allows the low-level tinfo library to be shared between the
+ high-level ncurses and ncursesw libraries. This new feature was
+ designed to work in that configuration as well.
+
+ Other applications (i.e., using the 8-bit ncurses library) which read
+ the extended terminal descriptions see those numeric capabilities set
+ to the maximum value for a signed 16-bit number.
+
+ Older versions of ncurses' tic accept out-of-range numeric
+ capabilities, storing those as the maximum value for a signed 16-bit
+ number. Other implementations of curses (mentioned in the discussion
+ of [90]picsmap) give zero for these out-of-range capabilities.
+
+ Configuration options
+
+ These changes provide support for tack 1.08, released in [91]July
+ 2017:
+ * add --without-tack configure option to refine --with-progs
+ configure option. Normally tack is built outside the ncurses tree,
+ but a few packagers combine it during the build. If term_entry.h
+ is installed, there is no advantage to in-tree builds.
+ * adjust configure-script to define HAVE_CURSES_DATA_BOOLNAMES
+ symbol needed for tack 1.08 when built in-tree. Rather than
+ relying upon internal "_nc_" functions, tack now uses the boolean,
+ number and string capability name-arrays provided by ncurses and
+ SVr4 Unix curses. It still uses term_entry.h for the definitions
+ of the extended capability arrays.
+ * add dependency upon ncurses_cfg.h to tic's header-files; any
+ program using tic-library will have to supply this file. Legacy
+ tack versions supply this file; ongoing tack development has
+ dropped the dependency upon tic-library and new releases will not
+ be affected.
+
+ Other changes to the configure-script and generated files include
+ * add configure options to disable checks for form, menu and panel
+ libraries so that ncurses-examples can be built with non-SVr4
+ curses implementations.
+ * add configure option --enable-opaque-curses for ncurses library
+ and similar options for the other libraries.
+ * add configure option --disable-wattr-macros for use in cases where
+ one wants to use the same headers for ncurses5/ncurses6
+ development, by suppressing the wattr* macros which differ due to
+ the introduction of extended colors
+ * modify configure macro for shared-library rules to use -Wl,-rpath
+ rather than -rpath to work around a bug in scons
+ * improve ncurses-examples' configure script to define as needed
+ NCURSES_WIDECHAR for platforms where _XOPEN_SOURCE_EXTENDED does
+ not work. Also modified the test program to ensure that if
+ building with ncurses, that the cchar_t type is checked, since
+ that is normally (since [92]20111030) ifdef'd depending on this
+ test.
+ * modify configure script to handle the case where tic-library is
+ renamed, but the --with-debug option is used by itself without
+ normal or shared libraries
+ * modify editing script which generates resulting.map to work with
+ the clang configuration on recent FreeBSD, which gives an error on
+ an empty "local" section.
+ * improve configure check for setting the WILDCARD_SYMS variable; on
+ ppc64 the variable is in the Data section rather than Text.
+ * correct result of configure option --without-fallbacks, which
+ caused FALLBACK_LIST to be set to "no"
+ * modify --with-pkg-config-libdir option to make it possible to
+ install ".pc" files even if pkg-config is not found. Limit this
+ change, to suppress the actual install if it is not overridden to
+ a valid directory at install time.
+ * disallow "no" as a possible value for --with-shlib-version option,
+ overlooked in cleanup-changes for [93]20000708.
+
+ Portability
+
+ Many of the portability changes are implemented via the configure
+ script:
+ * improve configure script's CF_CC_ENV_FLAGS macro to allow for
+ compiler wrappers such as ccache. This change moves only the
+ preprocessor, optimization and warning flags to CPPFLAGS and
+ CFLAGS, leaving the residue in CC. That happens to work for gcc's
+ various "model" options, but may require tuning for other
+ compilers.
+ * modify ncurses-examples' configure script to use pkg-config for
+ the extra form/menu/panel libraries, to be more consistent with
+ the handling of the curses/ncurses library.
+ * add configuration checks to build with [94]NetBSD curses, which
+ for example lacks [95]use_env.
+ * change ncurses-examples to use attr_t vs chtype to follow X/Open
+ documentation more closely since Solaris xpg4-curses uses
+ different values for WA_xxx vs A_xxx that rely on attr_t being an
+ unsigned short. Tru64 aka OSF1, HPUX, AIX did as ncurses does,
+ equating the two sets.
+ * modify several test programs to reflect that ncurses honors
+ existing signal handlers in initscr, while other implementations
+ do not.
+ * add configure check for openpty to ncurses-examples' configure
+ script, for ditto.
+ * improve check for working poll function by using posix_openpt as a
+ fallback in case there is no valid terminal on the standard input
+ * modify ncurses-examples' configure script to check for pthread
+ dependency of ncursest or ncursestw library when building the
+ ncurses examples, e.g., in case weak symbols are used.
+ * add checks in ncurses-examples' configure script for some
+ functions neither in 4.3BSD curses, nor based on X/Open Curses:
+ + modify a loop limit in firework.c to work around absense of
+ limit checks in some libraries.
+ + fill the last row of a window with "?" in firstlast if waddch
+ does not return ERR on the lower-right corner.
+ * build-fixes for the Portland Group (PGI) compilers
+ + accept whitespace in sed expression for generating expanded.c
+ + modify configure check that g++ compiler warnings are not
+ used.
+ + add configure check for -fPIC option needed for shared
+ libraries.
+ * modify configure script for clang as used on FreeBSD, to work
+ around clang's differences in exit codes vs gcc.
+ * fixes for configure/build using clang on OSX
+ + do not redefine "inline" in ncurses_cfg.h; this was
+ originally to solve a problem with gcc/g++, but is aggravated
+ by clang's misuse of symbols to pretend it is gcc.
+ + add braces to configure script to prevent unwanted addition
+ of "-lstdc++" option to the CXXLIBS symbol.
+ + improve/update test-program used for checking existence of
+ stdc++ library.
+ + if $CXXLIBS is set, the linkage test uses that in addition to
+ $LIBS.
+ * fixes for OS/2:
+ + use button instead of kbuf[0] in EMX-specific part of
+ lib_mouse.c
+ + support building with libtool on OS/2
+ + use stdc++ library with OS/2 kLIBC
+ + clear configure script's cf_XOPEN_SOURCE for OS/2, to work
+ with its header files
+ * add "newer" baudrate symbols to the [96]baudrate function in the
+ ncurses library as well as to a corresponding table in tset.
+ * modify ncurses-examples savescreen to work with AIX and HPUX.
+ * define WIN32_LEAN_AND_MEAN for MinGW port, making builds faster.
+ * add a configure check for wcwidth versus the ncurses line-drawing
+ characters, to use in special-casing systems such as Solaris.
+ Solaris, however, requires a special case that maps Unicode
+ line-drawing characters into the acsc string for non-Unicode
+ locales. Solaris also has a misconfigured wcwidth which marks all
+ of the line drawing characters as double-width.
+ * string-hacks (non-standard):
+ + fix configure script to record when strlcat is found on
+ OpenBSD.
+ + add --enable-string-hacks option to ncurses-examples'
+ configure script.
+ + completed string-hacks for sprintf, etc., including the
+ ncurses-examples programs.
+ + make --enable-string-hacks option work with Debian by
+ checking for the "bsd" library and its associated
+ "<bsd/string.h>" header.
+ * workaround for Debian's antique/unmaintained version of mawk:
+ + see Debian #65617, which was fixed in mawk's upstream
+ releases in [97]2009.
+ + related fixes when building link_test.
+ _________________________________________________________________
+
+Features of ncurses
+
+ The ncurses package is fully upward-compatible with SVr4 (System V
+ Release 4) curses:
+ * All of the SVr4 calls have been implemented (and are documented).
+ * ncurses supports all of the for SVr4 curses features including
+ keyboard mapping, color, forms-drawing with ACS characters, and
+ automatic recognition of keypad and function keys.
+ * ncurses provides these SVr4 add-on libraries (not part of X/Open
+ Curses):
+ + the panels library, supporting a stack of windows with
+ backing store.
+ + the menus library, supporting a uniform but flexible
+ interface for menu programming.
+ + the form library, supporting data collection through
+ on-screen forms.
+ * ncurses's terminal database is fully compatible with that used by
+ SVr4 curses.
+ + ncurses supports user-defined capabilities which it can see,
+ but which are hidden from SVr4 curses applications using the
+ same terminal database.
+ + It can be optionally configured to match the format used in
+ related systems such as AIX and Tru64.
+ + Alternatively, ncurses can be configured to use hashed
+ databases rather than the directory of files used by SVr4
+ curses.
+ * The ncurses utilities have options to allow you to filter terminfo
+ entries for use with less capable curses/terminfo versions such as
+ the HP/UX and AIX ports.
+