mirror of
https://github.com/Aigor44/ncursesw-morphos.git
synced 2024-12-27 07:49:06 +08:00
d66080c210
+ updated release notes + amend a warning message from tic which should have flagged misuse of "XT" capability in "screen" terminal description. > terminfo changes: + trim "XT" from screen entry, add comments to explain why it was not suitable -TD + modify iterm to use xterm+sl-twm building block -TD + mark konsole-420pc, konsole-vt100, konsole-xf3x obsolete reflecting konsole's removal in 2008 -TD + expanded the history section of konsole to explain its flawed imitation of xterm's keyboard -TD + use xterm+x11mouse in screen.* entries because screen does not yet support xterm's 1006 mode -TD + add nsterm-build400 for macOS 10.13 -TD + add ansi+idc1, use that in ansi+idc adding dch for consistency -TD + update vte to vte-2017 -TD + add ecma+strikeout to vte-2017 -TD + add iterm2-direct -TD + updated teraterm, added teraterm-256color -TD + add mlterm-direct -TD + add descriptions for ANSI building-blocks -TD
1369 lines
69 KiB
Plaintext
1369 lines
69 KiB
Plaintext
Announcing ncurses 6.1
|
|
|
|
Overview
|
|
|
|
The ncurses (new curses) library is a free software emulation of
|
|
curses in System V Release 4.0 (SVr4), and more. It uses terminfo
|
|
format, supports pads and color and multiple highlights and forms
|
|
characters and function-key mapping, and has all the other SVr4-curses
|
|
enhancements over BSD curses. SVr4 curses became the basis of X/Open
|
|
Curses.
|
|
|
|
In mid-June 1995, the maintainer of 4.4BSD curses declared that he
|
|
considered 4.4BSD curses obsolete, and encouraged the keepers of unix
|
|
releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses.
|
|
|
|
Since 1995, ncurses has been ported to many systems:
|
|
* It is used in almost every system based on the Linux kernel (aside
|
|
from some embedded applications).
|
|
* It is used as the system curses library on OpenBSD, FreeBSD and
|
|
OSX.
|
|
* It is used in environments such as Cygwin and MinGW. The first of
|
|
these was EMX on OS/2 Warp.
|
|
* It is used (though usually not as the system curses) on all of the
|
|
vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris,
|
|
Tru64.
|
|
* It should work readily on any ANSI/POSIX-conforming unix.
|
|
|
|
The distribution includes the library and support utilities, including
|
|
* [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.
|
|
|
|
The ncurses package also has many useful extensions over SVr4:
|
|
* The API is 8-bit clean and base-level conformant with the X/OPEN
|
|
curses specification, XSI curses (that is, it implements all BASE
|
|
level features, and most EXTENDED features). It includes many
|
|
function calls not supported under SVr4 curses (but portability of
|
|
all calls is documented so you can use the SVr4 subset only).
|
|
* Unlike SVr3 curses, ncurses can write to the rightmost-bottommost
|
|
corner of the screen if your terminal has an insert-character
|
|
capability.
|
|
* Ada95 and C++ bindings.
|
|
* Support for mouse event reporting with X Window xterm and FreeBSD
|
|
and OS/2 console windows.
|
|
* Extended mouse support via Alessandro Rubini's gpm package.
|
|
* The function wresize allows you to resize windows, preserving
|
|
their data.
|
|
* The function use_default_colors allows you to use the terminal's
|
|
default colors for the default color pair, achieving the effect of
|
|
transparent colors.
|
|
* The functions keyok and define_key allow you to better control the
|
|
use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by
|
|
defining more than one control sequence to map to a given key
|
|
code.
|
|
* Support for 256-color terminals, such as modern xterm.
|
|
* Support for 16-color terminals, such as aixterm and modern xterm.
|
|
* Better cursor-movement optimization. The package now features a
|
|
cursor-local-movement computation more efficient than either BSD's
|
|
or System V's.
|
|
* Super hardware scrolling support. The screen-update code
|
|
incorporates a novel, simple, and cheap algorithm that enables it
|
|
to make optimal use of hardware scrolling, line-insertion, and
|
|
line-deletion for screen-line movements. This algorithm is more
|
|
powerful than the 4.4BSD curses quickch routine.
|
|
* Real support for terminals with the magic-cookie glitch. The
|
|
screen-update code will refrain from drawing a highlight if the
|
|
magic- cookie unattributed spaces required just before the
|
|
beginning and after the end would step on a non-space character.
|
|
It will automatically shift highlight boundaries when doing so
|
|
would make it possible to draw the highlight without changing the
|
|
visual appearance of the screen.
|
|
* It is possible to generate the library with a list of pre-loaded
|
|
fallback entries linked to it so that it can serve those terminal
|
|
types even when no terminfo tree or termcap file is accessible
|
|
(this may be useful for support of screen-oriented programs that
|
|
must run in single-user mode).
|
|
* The [98]tic/[99]captoinfo utility provided with ncurses has the
|
|
ability to translate many termcaps from the XENIX, IBM and AT&T
|
|
extension sets.
|
|
* A BSD-like [100]tset utility is provided.
|
|
* The ncurses library and utilities will automatically read terminfo
|
|
entries from $HOME/.terminfo if it exists, and compile to that
|
|
directory if it exists and the user has no write access to the
|
|
system directory. This feature makes it easier for users to have
|
|
personal terminfo entries without giving up access to the system
|
|
terminfo directory.
|
|
* You may specify a path of directories to search for compiled
|
|
descriptions with the environment variable TERMINFO_DIRS (this
|
|
generalizes the feature provided by TERMINFO under stock System
|
|
V.)
|
|
* In terminfo source files, use capabilities may refer not just to
|
|
other entries in the same source file (as in System V) but also to
|
|
compiled entries in either the system terminfo directory or the
|
|
user's $HOME/.terminfo directory.
|
|
* The table-of-entries utility [101]toe makes it easy for users to
|
|
see exactly what terminal types are available on the system.
|
|
* The library meets the XSI requirement that every macro entry point
|
|
have a corresponding function which may be linked (and will be
|
|
prototype-checked) if the macro definition is disabled with
|
|
#undef.
|
|
* Extensive documentation is provided (see the [102]Additional
|
|
Reading section of the [103]ncurses FAQ for online documentation).
|
|
|
|
Applications using ncurses
|
|
|
|
The ncurses distribution includes a selection of test programs
|
|
(including a few games). These are available separately as
|
|
[104]ncurses-examples
|
|
|
|
The ncurses library has been tested with a wide variety of
|
|
applications including:
|
|
|
|
aptitude
|
|
FrontEnd to Apt, the debian package manager
|
|
|
|
[105]https://wiki.debian.org/Aptitude
|
|
|
|
cdk
|
|
Curses Development Kit
|
|
|
|
[106]https://invisible-island.net/cdk/
|
|
|
|
ded
|
|
directory-editor
|
|
|
|
[107]https://invisible-island.net/ded/
|
|
|
|
dialog
|
|
the underlying application used in Slackware's setup, and the
|
|
basis for similar install/configure applications on many
|
|
systems.
|
|
|
|
[108]https://invisible-island.net/dialog/
|
|
|
|
lynx
|
|
the text WWW browser
|
|
|
|
[109]https://lynx.invisible-island.net/
|
|
|
|
mutt
|
|
mail utility
|
|
|
|
[110]http://www.mutt.org/
|
|
|
|
ncftp
|
|
file-transfer utility
|
|
|
|
[111]https://www.ncftp.com/
|
|
|
|
nvi
|
|
New vi uses ncurses.
|
|
|
|
[112]https://sites.google.com/a/bostic.com/keithbostic/vi
|
|
|
|
ranger
|
|
A console file manager with VI key bindings in Python.
|
|
|
|
[113]https://ranger.github.io/
|
|
|
|
tin
|
|
newsreader, supporting color, MIME
|
|
|
|
[114]http://www.tin.org/
|
|
|
|
vifm
|
|
File manager with vi like keybindings
|
|
|
|
[115]https://vifm.info/
|
|
|
|
as well as some that use ncurses for the terminfo support alone:
|
|
|
|
minicom
|
|
terminal emulator for serial modem connections
|
|
|
|
[116]https://alioth.debian.org/projects/minicom/
|
|
|
|
mosh
|
|
a replacement for ssh.
|
|
|
|
[117]https://mosh.mit.edu/
|
|
|
|
tack
|
|
terminfo action checker
|
|
|
|
[118]https://invisible-island.net/ncurses/tack.html
|
|
|
|
tmux
|
|
terminal multiplexor
|
|
|
|
[119]https://github.com/tmux/tmux/wiki
|
|
|
|
vile
|
|
vi-like-emacs may be built to use the terminfo, termcap or
|
|
curses interfaces.
|
|
|
|
[120]https://invisible-island.net/vile/
|
|
|
|
and finally, those which use only the termcap interface:
|
|
|
|
emacs
|
|
text editor
|
|
|
|
[121]https://www.gnu.org/software/emacs/
|
|
|
|
less
|
|
The most commonly used pager (a program that displays text
|
|
files).
|
|
|
|
[122]http://www.greenwoodsoftware.com/less/
|
|
|
|
screen
|
|
terminal multiplexor
|
|
|
|
[123]https://www.gnu.org/software/screen/
|
|
|
|
vim
|
|
text editor
|
|
|
|
[124]https://www.vim.org/
|
|
|
|
Development activities
|
|
|
|
Zeyd Ben-Halim started ncurses from a previous package pcurses,
|
|
written by Pavel Curtis. Eric S. Raymond continued development.
|
|
Juergen Pfeifer wrote most of the form and menu libraries. Ongoing
|
|
development work is done by [125]Thomas Dickey. Thomas Dickey also
|
|
acts as the maintainer for the Free Software Foundation, which holds
|
|
the [126]copyright on ncurses.
|
|
|
|
Contact the current maintainers at
|
|
|
|
[127]bug-ncurses@gnu.org
|
|
|
|
To join the ncurses mailing list, please write email to
|
|
|
|
[128]bug-ncurses-request@gnu.org
|
|
|
|
containing the line:
|
|
|
|
subscribe <name>@<host.domain>
|
|
|
|
This list is open to anyone interested in helping with the development
|
|
and testing of this package.
|
|
|
|
Beta versions of ncurses and patches to the current release are made
|
|
available at
|
|
|
|
[129]ftp://ftp.invisible-island.net/ncurses/ and
|
|
[130]https://invisible-mirror.net/archives/ncurses/ .
|
|
|
|
There is an archive of the mailing list here:
|
|
|
|
[131]http://lists.gnu.org/archive/html/bug-ncurses (also
|
|
[132]https)
|
|
|
|
Related resources
|
|
|
|
The release notes make scattered references to these pages, which may
|
|
be interesting by themselves:
|
|
* [133]ncurses licensing
|
|
* [134]Symbol versioning in ncurses
|
|
* [135]Comments on ncurses versus slang (S-Lang)
|
|
* [136]tack - terminfo action checker
|
|
* [137]tctest - termcap library checker
|
|
* [138]Terminal Database
|
|
|
|
Other resources
|
|
|
|
The distribution provides a newer version of the terminfo-format
|
|
terminal description file once maintained by [139]Eric Raymond .
|
|
Unlike the older version, the termcap and terminfo data are provided
|
|
in the same file, which also provides several user-definable
|
|
extensions beyond the X/Open specification.
|
|
|
|
You can find lots of information on terminal-related topics not
|
|
covered in the terminfo file at [140]Richard Shuford's archive .
|
|
|
|
* [141]Overview
|
|
* [142]Release Notes
|
|
+ [143]Library improvements
|
|
o [144]New features
|
|
o [145]Other improvements
|
|
+ [146]Program improvements
|
|
o [147]Utilities
|
|
o [148]Examples
|
|
+ [149]Terminal database
|
|
+ [150]Documentation
|
|
+ [151]Interesting bug-fixes
|
|
+ [152]Configuration changes
|
|
o [153]Major changes
|
|
o [154]Configuration options
|
|
+ [155]Portability
|
|
* [156]Features of ncurses
|
|
* [157]Applications using ncurses
|
|
* [158]Development activities
|
|
* [159]Related resources
|
|
* [160]Other resources
|
|
|
|
References
|
|
|
|
1. https://invisible-island.net/ncurses/man/captoinfo.1m.html
|
|
2. https://invisible-island.net/ncurses/man/clear.1.html
|
|
3. https://invisible-island.net/ncurses/man/infocmp.1m.html
|
|
4. https://invisible-island.net/ncurses/man/tabs.1.html
|
|
5. https://invisible-island.net/ncurses/man/tic.1m.html
|
|
6. https://invisible-island.net/ncurses/man/toe.1m.html
|
|
7. https://invisible-island.net/ncurses/man/tput.1.html
|
|
8. https://invisible-island.net/ncurses/man/tset.1.html
|
|
9. https://invisible-island.net/ncurses/
|
|
10. ftp://ftp.invisible-island.net/ncurses/
|
|
11. https://invisible-mirror.net/archives/ncurses/
|
|
12. ftp://ftp.gnu.org/gnu/ncurses/
|
|
13. https://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-def_prog_mode_-def_shell_mode
|
|
14. https://invisible-island.net/ncurses/ncurses-mapsyms.html
|
|
15. https://invisible-island.net/ncurses/tctest.html#bsd42-numeric-caps
|
|
16. https://invisible-island.net/ncurses/ncurses-slang.html#cause_numbers
|
|
17. https://invisible-island.net/ncurses/tack.html#portable
|
|
18. https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726
|
|
19. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-EXTENSIONS
|
|
20. https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization
|
|
21. https://invisible-island.net/ncurses/man/tset.1.html
|
|
22. https://invisible-island.net/ncurses/man/tput.1.html
|
|
23. https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization
|
|
24. https://invisible-island.net/ncurses/man/clear.1.html
|
|
25. https://invisible-island.net/ncurses/tctest.html#bsd42-ctl-question
|
|
26. https://invisible-island.net/ncurses/tctest.html#freebsd-ctl-question
|
|
27. https://invisible-island.net/ncurses/ncurses-examples.html
|
|
28. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-alloc_pair
|
|
29. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-find_pair
|
|
30. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-free_pair
|
|
31. https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap
|
|
32. https://invisible-island.net/dialog/
|
|
33. https://invisible-island.net/dialog/manpage/dialog.html#h3-Common-Options
|
|
34. https://invisible-island.net/xterm/xterm.log.html#xterm_331
|
|
35. 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
|
|
36. https://invisible-island.net/ncurses/terminfo.src.html#tic-icl6404
|
|
37. https://invisible-island.net/ncurses/terminfo.src.html#tic-interix
|
|
38. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Linux_consoles
|
|
39. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Open_B_S_D_consoles
|
|
40. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Tmux
|
|
41. https://invisible-island.net/ncurses/terminfo.src.html#toc-_D_E_C__V_T100_and_compatibles
|
|
42. https://invisible-island.net/ncurses/terminfo.src.html#toc-_G_N_O_M_E__V_T_E_
|
|
43. https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M
|
|
44. https://invisible-island.net/xterm/xterm.log.html#xterm_32
|
|
45. https://invisible-island.net/xterm/xterm.log.html#xterm_272
|
|
46. https://invisible-island.net/ncurses/NEWS.html
|
|
47. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY
|
|
48. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY
|
|
49. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY
|
|
50. https://invisible-island.net/ncurses/man/curs_addch.3x.html#h2-PORTABILITY
|
|
51. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY
|
|
52. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY
|
|
53. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY
|
|
54. https://invisible-island.net/ncurses/man/curs_mouse.3x.html#h2-PORTABILITY
|
|
55. https://invisible-island.net/ncurses/man/curs_pad.3x.html#h2-PORTABILITY
|
|
56. https://invisible-island.net/ncurses/man/curs_slk.3x.html#h2-PORTABILITY
|
|
57. https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-PORTABILITY
|
|
58. https://invisible-island.net/ncurses/man/wresize.3x.html#h2-PORTABILITY
|
|
59. https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols
|
|
60. https://invisible-island.net/ncurses/man/curs_add_wch.3x.html
|
|
61. https://invisible-island.net/ncurses/man/clear.1.html#h2-DESCRIPTION
|
|
62. https://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-endwin
|
|
63. https://invisible-island.net/ncurses/man/form_driver.3x.html
|
|
64. https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html#h2-RETURN-VALUE
|
|
65. https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Predefined-key-codes
|
|
66. https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Keypad-Mode
|
|
67. https://invisible-island.net/ncurses/man/curs_get_wch.3x.html#h2-DESCRIPTION
|
|
68. https://invisible-island.net/ncurses/man/infocmp.1m.html
|
|
69. https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-NOTES
|
|
70. https://invisible-island.net/ncurses/man/curs_extend.3x#h2-RETURN-VALUE
|
|
71. https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY
|
|
72. https://invisible-island.net/ncurses/man/curs_memleaks.3x.html
|
|
73. https://invisible-island.net/ncurses/man/tic.1m.html
|
|
74. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Terminfo-Capabilities-Syntax
|
|
75. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Line-Graphics
|
|
76. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Color-Handling
|
|
77. https://invisible-island.net/ncurses/man/tput.1.html#h2-PORTABILITY
|
|
78. https://invisible-island.net/ncurses/man/tput.1.html#h3-Aliases
|
|
79. https://invisible-island.net/ncurses/man/tic.1m.html#h2-OPTIONS
|
|
80. https://invisible-island.net/ncurses/man/infocmp.1m.html#h3-Other-Options
|
|
81. https://invisible-island.net/ncurses/man/tset.1.html
|
|
82. https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h3-FORMATTING-CAPABILITIES
|
|
83. https://invisible-island.net/ncurses/man/user_caps.5.html
|
|
84. https://invisible-island.net/ncurses/man/scr_dump.5.html
|
|
85. https://invisible-island.net/ncurses/man/curs_sp_funcs.3x.html
|
|
86. https://invisible-island.net/ncurses/man/curs_threads.3x.html
|
|
87. https://invisible-island.net/ncurses/man/curs_attr.3x.html
|
|
88. file:///ncurses/man/curs_color.3x.html
|
|
89. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-new-library
|
|
90. https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap
|
|
91. https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726
|
|
92. https://invisible-island.net/ncurses/NEWS.html#t20111030
|
|
93. https://invisible-island.net/ncurses/NEWS.html#t20000708
|
|
94. https://invisible-island.net/ncurses/ncurses-netbsd.html
|
|
95. https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env
|
|
96. https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-baudrate
|
|
97. https://invisible-island.net/mawk/CHANGES.html#t20090727
|
|
98. https://invisible-island.net/ncurses/man/tic.1m.html
|
|
99. https://invisible-island.net/ncurses/man/captoinfo.1m.html
|
|
100. https://invisible-island.net/ncurses/man/tset.1.html
|
|
101. https://invisible-island.net/ncurses/man/toe.1m.html
|
|
102. https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading
|
|
103. https://invisible-island.net/ncurses/ncurses.faq.html
|
|
104. https://invisible-island.net/ncurses/ncurses-examples.html
|
|
105. https://wiki.debian.org/Aptitude
|
|
106. https://invisible-island.net/cdk/
|
|
107. https://invisible-island.net/ded/
|
|
108. https://invisible-island.net/dialog/
|
|
109. https://lynx.invisible-island.net/
|
|
110. http://www.mutt.org/
|
|
111. https://www.ncftp.com/
|
|
112. https://sites.google.com/a/bostic.com/keithbostic/vi
|
|
113. https://ranger.github.io/
|
|
114. http://www.tin.org/
|
|
115. https://vifm.info/
|
|
116. https://alioth.debian.org/projects/minicom/
|
|
117. https://mosh.mit.edu/
|
|
118. https://invisible-island.net/ncurses/tack.html
|
|
119. https://github.com/tmux/tmux/wiki
|
|
120. https://invisible-island.net/vile/
|
|
121. https://www.gnu.org/software/emacs/
|
|
122. http://www.greenwoodsoftware.com/less/
|
|
123. https://www.gnu.org/software/screen/
|
|
124. https://www.vim.org/
|
|
125. mailto:dickey@invisible-island.net
|
|
126. https://invisible-island.net/ncurses/ncurses-license.html
|
|
127. mailto:bug-ncurses@gnu.org
|
|
128. mailto:bug-ncurses-request@gnu.org
|
|
129. ftp://ftp.invisible-island.net/ncurses/
|
|
130. https://invisible-mirror.net/archives/ncurses/
|
|
131. http://lists.gnu.org/archive/html/bug-ncurses
|
|
132. https://lists.gnu.org/archive/html/bug-ncurses
|
|
133. https://invisible-island.net/ncurses/ncurses-license.html
|
|
134. https://invisible-island.net/ncurses/ncurses-mapsyms.html
|
|
135. https://invisible-island.net/ncurses/ncurses-slang.html
|
|
136. https://invisible-island.net/ncurses/tack.html
|
|
137. https://invisible-island.net/ncurses/tctest.html
|
|
138. https://invisible-island.net/ncurses/ncurses.html#download_database
|
|
139. http://www.catb.org/~esr/terminfo/
|
|
140. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
|
|
141. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-overview
|
|
142. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-release-notes
|
|
143. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-library
|
|
144. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-new-library
|
|
145. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-fixes-library
|
|
146. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-programs
|
|
147. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-utilities
|
|
148. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-examples
|
|
149. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-database
|
|
150. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-documentation
|
|
151. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-bug-fixes
|
|
152. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-config-config
|
|
153. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-config-major
|
|
154. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-config-options
|
|
155. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-portability
|
|
156. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-features
|
|
157. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-who-uses
|
|
158. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-development
|
|
159. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-this-stuff
|
|
160. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-other-stuff
|