1*aae38d10SBaptiste Daroussin Announcing ncurses 6.1 2*aae38d10SBaptiste Daroussin 3*aae38d10SBaptiste DaroussinOverview 40e3d5408SPeter Wemm 50e3d5408SPeter Wemm The ncurses (new curses) library is a free software emulation of 6*aae38d10SBaptiste Daroussin curses in System V Release 4.0 (SVr4), and more. It uses terminfo 7*aae38d10SBaptiste Daroussin format, supports pads and color and multiple highlights and forms 8*aae38d10SBaptiste Daroussin characters and function-key mapping, and has all the other SVr4-curses 9*aae38d10SBaptiste Daroussin enhancements over BSD curses. SVr4 curses became the basis of X/Open 10*aae38d10SBaptiste Daroussin Curses. 110e3d5408SPeter Wemm 120e3d5408SPeter Wemm In mid-June 1995, the maintainer of 4.4BSD curses declared that he 13*aae38d10SBaptiste Daroussin considered 4.4BSD curses obsolete, and encouraged the keepers of unix 144a1a9510SRong-En Fan releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses. 150e3d5408SPeter Wemm 16*aae38d10SBaptiste Daroussin Since 1995, ncurses has been ported to many systems: 17*aae38d10SBaptiste Daroussin * It is used in almost every system based on the Linux kernel (aside 18*aae38d10SBaptiste Daroussin from some embedded applications). 19*aae38d10SBaptiste Daroussin * It is used as the system curses library on OpenBSD, FreeBSD and 20*aae38d10SBaptiste Daroussin OSX. 21*aae38d10SBaptiste Daroussin * It is used in environments such as Cygwin and MinGW. The first of 22*aae38d10SBaptiste Daroussin these was EMX on OS/2 Warp. 23*aae38d10SBaptiste Daroussin * It is used (though usually not as the system curses) on all of the 24*aae38d10SBaptiste Daroussin vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris, 25*aae38d10SBaptiste Daroussin Tru64. 26*aae38d10SBaptiste Daroussin * It should work readily on any ANSI/POSIX-conforming unix. 270e3d5408SPeter Wemm 280e3d5408SPeter Wemm The distribution includes the library and support utilities, including 29*aae38d10SBaptiste Daroussin * [1]captoinfo, a termcap conversion tool 30*aae38d10SBaptiste Daroussin * [2]clear, utility for clearing the screen 31*aae38d10SBaptiste Daroussin * [3]infocmp, the terminfo decompiler 32*aae38d10SBaptiste Daroussin * [4]tabs, set tabs on a terminal 33*aae38d10SBaptiste Daroussin * [5]tic, the terminfo compiler 34*aae38d10SBaptiste Daroussin * [6]toe, list (table of) terminfo entries 35*aae38d10SBaptiste Daroussin * [7]tput, utility for retrieving terminal capabilities in shell 36*aae38d10SBaptiste Daroussin scripts 37*aae38d10SBaptiste Daroussin * [8]tset, to initialize the terminal 380e3d5408SPeter Wemm 39*aae38d10SBaptiste Daroussin Full manual pages are provided for the library and tools. 40*aae38d10SBaptiste Daroussin 41*aae38d10SBaptiste Daroussin The ncurses distribution is available at ncurses' [9]homepage: 42*aae38d10SBaptiste Daroussin 43*aae38d10SBaptiste Daroussin [10]ftp://ftp.invisible-island.net/ncurses/ or 44*aae38d10SBaptiste Daroussin [11]https://invisible-mirror.net/archives/ncurses/ . 45*aae38d10SBaptiste Daroussin 46*aae38d10SBaptiste Daroussin It is also available via anonymous FTP at the GNU distribution site 47*aae38d10SBaptiste Daroussin 48*aae38d10SBaptiste Daroussin [12]ftp://ftp.gnu.org/gnu/ncurses/ . 490e3d5408SPeter Wemm 500e3d5408SPeter WemmRelease Notes 510e3d5408SPeter Wemm 52*aae38d10SBaptiste Daroussin These notes are for ncurses 6.1, released January 27, 2018. 530e3d5408SPeter Wemm 54*aae38d10SBaptiste Daroussin This release is designed to be source-compatible with ncurses 5.0 55*aae38d10SBaptiste Daroussin through 6.0; providing extensions to the application binary interface 56*aae38d10SBaptiste Daroussin (ABI). Although the source can still be configured to support the 57*aae38d10SBaptiste Daroussin ncurses 5 ABI, the intent of the release is to provide extensions to 58*aae38d10SBaptiste Daroussin the ncurses 6 ABI: 59*aae38d10SBaptiste Daroussin * improve integration of tput and tset 60*aae38d10SBaptiste Daroussin * provide support for extended numeric capabilities. 610e3d5408SPeter Wemm 62*aae38d10SBaptiste Daroussin There are, of course, numerous other improvements, listed in this 63*aae38d10SBaptiste Daroussin announcement. 640e3d5408SPeter Wemm 65*aae38d10SBaptiste Daroussin The release notes also mention some bug-fixes, but are focused on new 66*aae38d10SBaptiste Daroussin features and improvements to existing features since ncurses 6.0 67*aae38d10SBaptiste Daroussin release. 680e3d5408SPeter Wemm 69*aae38d10SBaptiste Daroussin Library improvements 70*aae38d10SBaptiste Daroussin 71*aae38d10SBaptiste Daroussin New features 72*aae38d10SBaptiste Daroussin 73*aae38d10SBaptiste Daroussin The improved integration of tput and tset made only small changes to 74*aae38d10SBaptiste Daroussin the libraries. However, supporting extended numeric capabilities 75*aae38d10SBaptiste Daroussin required a few changes: 76*aae38d10SBaptiste Daroussin * The TERMINAL structure in <term.h> is now opaque. Doing that 77*aae38d10SBaptiste Daroussin allowed making the structure larger, to hold the extended numeric 78*aae38d10SBaptiste Daroussin data. 79*aae38d10SBaptiste Daroussin A few applications required changes during development of 80*aae38d10SBaptiste Daroussin ncurses 6.1 because those applications misused the members of that 81*aae38d10SBaptiste Daroussin structure, e.g., directly modifying it rather than using 82*aae38d10SBaptiste Daroussin [13]def_prog_mode. 83*aae38d10SBaptiste Daroussin * Having made TERMINAL opaque (and because none of the library 84*aae38d10SBaptiste Daroussin functions use anything except a pointer to TERMINAL), it was 85*aae38d10SBaptiste Daroussin possible to increase the size of the structure, adding to the end. 86*aae38d10SBaptiste Daroussin Existing applications which were linked to the ncurses 6.0 87*aae38d10SBaptiste Daroussin high-level (ncurses, ncursesw) and low-level (tinfo, tinfo) 88*aae38d10SBaptiste Daroussin libraries should not require re-linking since the binary interface 89*aae38d10SBaptiste Daroussin did not change, nor did the structure offsets with TERMINAL 90*aae38d10SBaptiste Daroussin change. 91*aae38d10SBaptiste Daroussin A few applications use the inner TERMTYPE structure's offsets to 92*aae38d10SBaptiste Daroussin refer to terminfo capabilities within that structure. Again, those 93*aae38d10SBaptiste Daroussin do not require modification because their offsets within TERMINAL 94*aae38d10SBaptiste Daroussin did not change. 95*aae38d10SBaptiste Daroussin * When configured for wide-characters, i.e., "ncursesw" the TERMINAL 96*aae38d10SBaptiste Daroussin structure is extended. 97*aae38d10SBaptiste Daroussin The new data in TERMINAL holds the same information as TERMTYPE, 98*aae38d10SBaptiste Daroussin but with larger numbers ("int" versus "short"). It is named 99*aae38d10SBaptiste Daroussin TERMTYPE2. 100*aae38d10SBaptiste Daroussin The library uses this structure internally in preference to 101*aae38d10SBaptiste Daroussin TERMTYPE, referring to TERMTYPE only to initialize it for 102*aae38d10SBaptiste Daroussin applications that use the capabilities defined in <term.h> 103*aae38d10SBaptiste Daroussin * When configured for 8-bit (narrow) characters, the TERMTYPE2 104*aae38d10SBaptiste Daroussin structure is not used. 105*aae38d10SBaptiste Daroussin * The updated application binary interface is 6.1.20171230 (used for 106*aae38d10SBaptiste Daroussin new [14]versioned symbols), although the interface changes were 107*aae38d10SBaptiste Daroussin developed several months previously. 108*aae38d10SBaptiste Daroussin 109*aae38d10SBaptiste Daroussin The motivation for making this extension came from noticing that 110*aae38d10SBaptiste Daroussin [15]termcap applications could (though not [16]realistically) use 111*aae38d10SBaptiste Daroussin larger numbers than would fit in 16-bits, and the fact that the number 112*aae38d10SBaptiste Daroussin of color pairs for a 256-color xterm could not be expressed in 113*aae38d10SBaptiste Daroussin terminfo (i.e., 32767 versus 65536). Also, a few terminals support 114*aae38d10SBaptiste Daroussin direct-colors, which could use the extension. 115*aae38d10SBaptiste Daroussin 116*aae38d10SBaptiste Daroussin Generally speaking, applications that use internal details of a 117*aae38d10SBaptiste Daroussin library are unsupported. There was exactly one exception for ncurses: 118*aae38d10SBaptiste Daroussin the tack program used the internal details of TERMINAL, because it 119*aae38d10SBaptiste Daroussin provides an ncurses-specific feature for interactively modifying a 120*aae38d10SBaptiste Daroussin terminfo description and writing the updated description to a 121*aae38d10SBaptiste Daroussin text-file. It was possible to not only separate tack from these 122*aae38d10SBaptiste Daroussin [17]internal details of ncurses, but to generalize it so that the 123*aae38d10SBaptiste Daroussin program works with Unix curses (omitting the ncurses-specific 124*aae38d10SBaptiste Daroussin feature). That was released as [18]tack 1.08 in July 2017. 125*aae38d10SBaptiste Daroussin 126*aae38d10SBaptiste Daroussin While making changes to tack to eliminate its dependency upon ncurses 127*aae38d10SBaptiste Daroussin internals, the publicly-visible details of those internals were 128*aae38d10SBaptiste Daroussin reviewed, and some symbols were moved to private header files, while 129*aae38d10SBaptiste Daroussin others were marked explicitly as ncurses internals. Future releases of 130*aae38d10SBaptiste Daroussin ncurses may eliminate some of those symbols (such as those used by 131*aae38d10SBaptiste Daroussin tack 1.07) because they are neither part of the API or the ABI. 132*aae38d10SBaptiste Daroussin 133*aae38d10SBaptiste Daroussin Using the TERMTYPE2 extended numeric capabilities, it is possible to 134*aae38d10SBaptiste Daroussin support both color pair values and color values past 32767. Taking 135*aae38d10SBaptiste Daroussin compatibility into account, developers readily understand that neither 136*aae38d10SBaptiste Daroussin function signatures nor structure offsets change. Also, existing 137*aae38d10SBaptiste Daroussin functions have to operate with the extended numbers. Most of that work 138*aae38d10SBaptiste Daroussin is internal to the library. For the external interfaces, a hybrid 139*aae38d10SBaptiste Daroussin approach was used: 140*aae38d10SBaptiste Daroussin * X/Open Curses defined function prototypes such as wattr_set with 141*aae38d10SBaptiste Daroussin an unused parameter, for "future" use. After 25 years, the future 142*aae38d10SBaptiste Daroussin is here: ncurses uses the parameter to augment color pair values 143*aae38d10SBaptiste Daroussin as described in the [19]manual page. 144*aae38d10SBaptiste Daroussin * Other functions such as those defining color pairs did not have a 145*aae38d10SBaptiste Daroussin corresponding reserved parameter. For those, ncurses defines 146*aae38d10SBaptiste Daroussin extended versions such as init_extended_pair (versus init_pair), 147*aae38d10SBaptiste Daroussin init_extended_color (versus init_color). 148*aae38d10SBaptiste Daroussin 149*aae38d10SBaptiste Daroussin Additionally, to improve performance other changes (and extensions) 150*aae38d10SBaptiste Daroussin are provided in this release: 151*aae38d10SBaptiste Daroussin * Several new functions simplify management of large sets of color 152*aae38d10SBaptiste Daroussin pairs: reset_color_pairs, alloc_pair, find_pair and free_pair. 153*aae38d10SBaptiste Daroussin * New "RGB" extension capability for direct-color support is used to 154*aae38d10SBaptiste Daroussin improve performance of color_content. 155*aae38d10SBaptiste Daroussin * The internal colorpair_t is now a struct, eliminating an internal 156*aae38d10SBaptiste Daroussin 8-bit limit on colors 157*aae38d10SBaptiste Daroussin * Allocation for SCREEN's color-pair table starts small, grows on 158*aae38d10SBaptiste Daroussin demand up to the limit given in the terminal description. 159*aae38d10SBaptiste Daroussin * setcchar and getcchar now treat a negative color-pair as an error. 160*aae38d10SBaptiste Daroussin 161*aae38d10SBaptiste Daroussin Other improvements 162*aae38d10SBaptiste Daroussin 163*aae38d10SBaptiste Daroussin These are new or revised features: 164*aae38d10SBaptiste Daroussin * modify c++/etip.h.in to accommodate deprecation of throw and 165*aae38d10SBaptiste Daroussin throws in c++17 166*aae38d10SBaptiste Daroussin * add new function unfocus_current_field 167*aae38d10SBaptiste Daroussin * add option to preserve leading whitespace in form fields 168*aae38d10SBaptiste Daroussin * add a macro for is_linetouched and adjust the function's return 169*aae38d10SBaptiste Daroussin value to make it possible for most applications to check for an 170*aae38d10SBaptiste Daroussin error-return. 171*aae38d10SBaptiste Daroussin * add build-time utility report_offsets to help show when the 172*aae38d10SBaptiste Daroussin various configurations of tinfo library are compatible or not. 173*aae38d10SBaptiste Daroussin 174*aae38d10SBaptiste Daroussin These were done to limit or ultimately deprecate features: 175*aae38d10SBaptiste Daroussin * drop two symbols obsoleted in 2004: _nc_check_termtype, and 176*aae38d10SBaptiste Daroussin _nc_resolve_uses 177*aae38d10SBaptiste Daroussin * move _nc_tracebits, _tracedump and _tracemouse to curses.priv.h, 178*aae38d10SBaptiste Daroussin since they are not part of the suggested ABI6. 179*aae38d10SBaptiste Daroussin * mark some structs in form/menu/panel libraries as potentially 180*aae38d10SBaptiste Daroussin opaque without modifying API/ABI. 181*aae38d10SBaptiste Daroussin * ifdef'd header-file definition of mouse_trafo with 182*aae38d10SBaptiste Daroussin NCURSES_NOMACROS 183*aae38d10SBaptiste Daroussin * remove initialization-check for calling napms in the term-driver 184*aae38d10SBaptiste Daroussin configuration; none is needed. 185*aae38d10SBaptiste Daroussin * modify trace to avoid overwriting existing file 186*aae38d10SBaptiste Daroussin 187*aae38d10SBaptiste Daroussin These are improvements to existing features: 188*aae38d10SBaptiste Daroussin * modify make_hash to allow building with address-sanitizer, 189*aae38d10SBaptiste Daroussin assuming that --disable-leaks is configured. 190*aae38d10SBaptiste Daroussin * move SCREEN field for use_tioctl data before the ncursesw fields, 191*aae38d10SBaptiste Daroussin and limit that to the sp-funcs configuration to improve termlib 192*aae38d10SBaptiste Daroussin compatibility 193*aae38d10SBaptiste Daroussin * modify db-iterator: 194*aae38d10SBaptiste Daroussin + ignore zero-length files in db-iterator; these are useful for 195*aae38d10SBaptiste Daroussin instance to suppress $HOME/.terminfo when not wanted. 196*aae38d10SBaptiste Daroussin + modify update_getenv to ensure that environment variables 197*aae38d10SBaptiste Daroussin which are not initially set will be checked later if an 198*aae38d10SBaptiste Daroussin application happens to set them 199*aae38d10SBaptiste Daroussin * modify _nc_outc_wrapper to use the standard output if the screen 200*aae38d10SBaptiste Daroussin was not initialized, rather than returning an error. 201*aae38d10SBaptiste Daroussin * improve checks for low-level terminfo functions when the terminal 202*aae38d10SBaptiste Daroussin has not been initialized. 203*aae38d10SBaptiste Daroussin * modify set_curterm to update ttytype[] data used by longname/p> 204*aae38d10SBaptiste Daroussin * modify _nc_get_screensize to allow for use_env and use_tioctl 205*aae38d10SBaptiste Daroussin state to be per-screen when sp-funcs are configured, better 206*aae38d10SBaptiste Daroussin matching the behavior when using the term-driver configuration. 207*aae38d10SBaptiste Daroussin * remove an early-return from _nc_do_color, which can interfere with 208*aae38d10SBaptiste Daroussin data needed by bkgd when ncurses is configured with extended 209*aae38d10SBaptiste Daroussin colors 210*aae38d10SBaptiste Daroussin * incorporate A_COLOR mask into COLOR_PAIR, in case user application 211*aae38d10SBaptiste Daroussin provides an out-of-range pair number 212*aae38d10SBaptiste Daroussin * modify logic for endwin-state to be able to detect the case where 213*aae38d10SBaptiste Daroussin the screen was never initialized, using that to trigger a flush of 214*aae38d10SBaptiste Daroussin ncurses' buffer for mvcur, e.g., in the sample program dots_mvcur 215*aae38d10SBaptiste Daroussin for the term-driver configuration. 216*aae38d10SBaptiste Daroussin 217*aae38d10SBaptiste Daroussin These are corrections to existing features: 218*aae38d10SBaptiste Daroussin * fixes for writing extended color pairs in putwin. 219*aae38d10SBaptiste Daroussin * modify no-leaks code for lib_cur_term.c to account for the tgetent 220*aae38d10SBaptiste Daroussin cache. 221*aae38d10SBaptiste Daroussin * amend handling of the repeat_char capability in EmitRange to avoid 222*aae38d10SBaptiste Daroussin scope creep: translate the character to the alternate character 223*aae38d10SBaptiste Daroussin set when the alternate character set is enabled, and do not use 224*aae38d10SBaptiste Daroussin repeat_char for characters past 255. 225*aae38d10SBaptiste Daroussin * improve wide-character implementation of myADDNSTR in 226*aae38d10SBaptiste Daroussin frm_driver.c, which was inconsistent with the normal 227*aae38d10SBaptiste Daroussin implementation. 228*aae38d10SBaptiste Daroussin * modify winnstr and winchnstr to return error if the output pointer 229*aae38d10SBaptiste Daroussin is null, as well as adding a null pointer check of the window 230*aae38d10SBaptiste Daroussin pointer for better compatibility with other implementations. 231*aae38d10SBaptiste Daroussin * modify setupterm to save original tty-modes so that erasechar 232*aae38d10SBaptiste Daroussin works as expected. Also modify _nc_setupscreen to avoid redundant 233*aae38d10SBaptiste Daroussin calls to get original tty-modes. 234*aae38d10SBaptiste Daroussin * modify wattr_set and wattr_get to return ERR if win-parameter is 235*aae38d10SBaptiste Daroussin null, as documented. 236*aae38d10SBaptiste Daroussin * correct order of initialization for traces in use_env and 237*aae38d10SBaptiste Daroussin use_tioctl versus first _tracef calls. 238*aae38d10SBaptiste Daroussin * correct parameters for copywin call in _nc_Synchronize_Attributes 239*aae38d10SBaptiste Daroussin * flush the standard output in _nc_flush for the case where SP is 240*aae38d10SBaptiste Daroussin zero, e.g., when called via putp. This fixes a scenario where 241*aae38d10SBaptiste Daroussin "tput flash" did not work after changes in 20130112. 242*aae38d10SBaptiste Daroussin * amend internal use of tputs to consistently use the number of 243*aae38d10SBaptiste Daroussin lines affected, e.g., for insert/delete character operations. 244*aae38d10SBaptiste Daroussin While merging terminfo source early in 1995, several descriptions 245*aae38d10SBaptiste Daroussin used the "*" proportional delay for these operations, prompting a 246*aae38d10SBaptiste Daroussin change in doupdate. 247*aae38d10SBaptiste Daroussin * correct return-value of extended putwin. 248*aae38d10SBaptiste Daroussin * double-width multibyte characters were not counted properly in 249*aae38d10SBaptiste Daroussin winsnstr and wins_nwstr. 250*aae38d10SBaptiste Daroussin * amend fix for _nc_ripoffline from 20091031 to make test/ditto.c 251*aae38d10SBaptiste Daroussin work in threaded configuration. 252*aae38d10SBaptiste Daroussin * modify _nc_viscbuf2 and _tracecchar_t2 to trace wide-characters as 253*aae38d10SBaptiste Daroussin a whole rather than their multibyte equivalents. 254*aae38d10SBaptiste Daroussin * minor fix in wadd_wchnstr to ensure that each cell has nonzero 255*aae38d10SBaptiste Daroussin width. 256*aae38d10SBaptiste Daroussin * move PUTC_INIT calls next to wcrtomb calls, to avoid carry-over of 257*aae38d10SBaptiste Daroussin error status when processing Unicode values which are not mapped. 258*aae38d10SBaptiste Daroussin * add missing assignment in lib_getch.c to make notimeout work 259*aae38d10SBaptiste Daroussin 260*aae38d10SBaptiste Daroussin Program improvements 261*aae38d10SBaptiste Daroussin 262*aae38d10SBaptiste Daroussin While reviewing user feedback, it became apparent that the differences 263*aae38d10SBaptiste Daroussin between [20]reset (an alias for tset) and "tput reset" were confusing: 264*aae38d10SBaptiste Daroussin * one ([21]tset) updated the terminal modes, but used only part of 265*aae38d10SBaptiste Daroussin the terminfo capabilities for initialization, while 266*aae38d10SBaptiste Daroussin * the other ([22]tput) used all of the terminal capabilities while 267*aae38d10SBaptiste Daroussin neglecting the terminal modes. 268*aae38d10SBaptiste Daroussin 269*aae38d10SBaptiste Daroussin On further investigation, it turned out that the differences were 270*aae38d10SBaptiste Daroussin largely an accident due to the way those programs had evolved. 271*aae38d10SBaptiste Daroussin 272*aae38d10SBaptiste Daroussin This release eliminates the unnecessary differences, using the same 273*aae38d10SBaptiste Daroussin approach for tput's init (initialization), reset and clear operations 274*aae38d10SBaptiste Daroussin as the separate [23]reset and [24]clear programs. Doing this does not 275*aae38d10SBaptiste Daroussin change the command-line options; existing scripts are unaffected. 276*aae38d10SBaptiste Daroussin 277*aae38d10SBaptiste Daroussin These are the user-visible changes for the three programs (tput, tset 278*aae38d10SBaptiste Daroussin and clear): 279*aae38d10SBaptiste Daroussin * add the terminal-mode parts of "reset" (aka tset) to the "tput 280*aae38d10SBaptiste Daroussin reset" command, making the two almost the same except for 281*aae38d10SBaptiste Daroussin window-size. 282*aae38d10SBaptiste Daroussin * improve tput's check for being called as "init" or "reset" to 283*aae38d10SBaptiste Daroussin allow for transformed names. 284*aae38d10SBaptiste Daroussin * add "clear" as a possible link/alias to tput. 285*aae38d10SBaptiste Daroussin * amend changes for tput to reset tty modes to "sane" if the program 286*aae38d10SBaptiste Daroussin is run as "reset", like tset. Likewise, ensure that tset sends 287*aae38d10SBaptiste Daroussin either reset- or init-strings. 288*aae38d10SBaptiste Daroussin * add -x option to clear/tput to make the E3 extension optional 289*aae38d10SBaptiste Daroussin * add functionality of "tset -w" to tput, like the "-c" feature this 290*aae38d10SBaptiste Daroussin is not optional in tput. 291*aae38d10SBaptiste Daroussin * add options -T and -V to clear command for compatibility with 292*aae38d10SBaptiste Daroussin tput. 293*aae38d10SBaptiste Daroussin * drop long-obsolete "-n" option from tset. 294*aae38d10SBaptiste Daroussin * modify tset's assignment to TERM in its output to reflect the name 295*aae38d10SBaptiste Daroussin by which the terminal description is found, rather than the 296*aae38d10SBaptiste Daroussin primary name. That was an unnecessary part from the initial 297*aae38d10SBaptiste Daroussin conversion of tset from termcap to terminfo. The termcap library 298*aae38d10SBaptiste Daroussin in 4.3BSD did this to avoid using the short 2-character name 299*aae38d10SBaptiste Daroussin * remove a restriction in tput's support for termcap names which 300*aae38d10SBaptiste Daroussin omitted capabilities normally not shown in termcap translations 301*aae38d10SBaptiste Daroussin * add usage message to clear command 302*aae38d10SBaptiste Daroussin * improve usage messages for tset and tput. 303*aae38d10SBaptiste Daroussin 304*aae38d10SBaptiste Daroussin Other user-visible improvements and new features include: 305*aae38d10SBaptiste Daroussin * modify tic/infocmp display of numeric values to use hexadecimal 306*aae38d10SBaptiste Daroussin when they are "close" to a power of two, making the result more 307*aae38d10SBaptiste Daroussin readable. 308*aae38d10SBaptiste Daroussin * add "-W" option to tic/infocmp to force long strings to wrap. 309*aae38d10SBaptiste Daroussin + This is in addition to the "-w" option which attempts to fit 310*aae38d10SBaptiste Daroussin capabilities into a given line-length. 311*aae38d10SBaptiste Daroussin + If "-f" option splits line, do not further split it with 312*aae38d10SBaptiste Daroussin "-W". 313*aae38d10SBaptiste Daroussin + Begin a new line when adding "use=" after a wrapped line. 314*aae38d10SBaptiste Daroussin * add "-q" option to infocmp to suppress the "Reconstructed from" 315*aae38d10SBaptiste Daroussin comment from the header, and a corresponding option to tic to 316*aae38d10SBaptiste Daroussin suppress all comments from the "tic -I" output. 317*aae38d10SBaptiste Daroussin * Sorted options in usage message for infocmp, to make it simpler to 318*aae38d10SBaptiste Daroussin see unused letters. 319*aae38d10SBaptiste Daroussin * Updated usage message for tic, adding "-0" option. 320*aae38d10SBaptiste Daroussin * add infocmp/tic "-Q" option, which allows one to dump the compiled 321*aae38d10SBaptiste Daroussin form of the terminal entry, in hexadecimal or base64: 322*aae38d10SBaptiste Daroussin + A "b64:" prefix in the TERMINFO variable tells the terminfo 323*aae38d10SBaptiste Daroussin reader to use base64 according to RFC-3548 as well as 324*aae38d10SBaptiste Daroussin RFC-4648 url/filename-safe format. 325*aae38d10SBaptiste Daroussin + A "hex:" prefix tells the terminfo reader to accept 326*aae38d10SBaptiste Daroussin hexadecimal data as generated by "infocmp -0qQ1". 327*aae38d10SBaptiste Daroussin 328*aae38d10SBaptiste Daroussin Other less-visible improvements and new features include: 329*aae38d10SBaptiste Daroussin * modify utility headers such as tic.h to make it clearer which are 330*aae38d10SBaptiste Daroussin externals that are used by tack. 331*aae38d10SBaptiste Daroussin * add "reset" to list of programs whose names might change in 332*aae38d10SBaptiste Daroussin manpages due to program-transformation configure options. 333*aae38d10SBaptiste Daroussin * modify "-T" option of clear and tput to call use_tioctl to obtain 334*aae38d10SBaptiste Daroussin the operating system's notion of the screensize if possible. 335*aae38d10SBaptiste Daroussin * add check in tput for init/reset operands to ensure those use a 336*aae38d10SBaptiste Daroussin terminal. 337*aae38d10SBaptiste Daroussin * modify programs clear, tabs, tput and tset to pass the actual tty 338*aae38d10SBaptiste Daroussin file descriptor to setupterm rather than the standard output or 339*aae38d10SBaptiste Daroussin error, making padding work. 340*aae38d10SBaptiste Daroussin * change tset's initialization to allow it to get settings from the 341*aae38d10SBaptiste Daroussin standard input as well as /dev/tty, to be more effective when 342*aae38d10SBaptiste Daroussin output or error are redirected. 343*aae38d10SBaptiste Daroussin * amend check in tput, tabs and clear to allow those to use the 344*aae38d10SBaptiste Daroussin database-only features in cron if a "-T" option gives a suitable 345*aae38d10SBaptiste Daroussin terminal name. 346*aae38d10SBaptiste Daroussin * improve error message from tset/reset when both stderr/stdout are 347*aae38d10SBaptiste Daroussin redirected to a file or pipe. 348*aae38d10SBaptiste Daroussin 349*aae38d10SBaptiste Daroussin Several of the less apparent features deal with translation of 350*aae38d10SBaptiste Daroussin terminfo to termcap (and the reverse), with corresponding checks by 351*aae38d10SBaptiste Daroussin tic: 352*aae38d10SBaptiste Daroussin * modify check in fmt_entry to handle a cancelled reset string. Make 353*aae38d10SBaptiste Daroussin similar fixes in other parts of dump_entry.c and tput.c 354*aae38d10SBaptiste Daroussin * correct read of terminfo entry in which all strings are absent or 355*aae38d10SBaptiste Daroussin explicitly cancelled. Before this fix, the result was that all 356*aae38d10SBaptiste Daroussin were treated as only absent. 357*aae38d10SBaptiste Daroussin * modify infocmp to suppress mixture of absent/cancelled 358*aae38d10SBaptiste Daroussin capabilities that would only show as "NULL, NULL", unless the "-q" 359*aae38d10SBaptiste Daroussin option is used, e.g., to show "-, @" or "@, -". 360*aae38d10SBaptiste Daroussin * correct a warning from tic about keys which are the same, to skip 361*aae38d10SBaptiste Daroussin over missing/cancelled values. 362*aae38d10SBaptiste Daroussin * add check in tic for use of bold, etc., video attributes in the 363*aae38d10SBaptiste Daroussin color capabilities, accounting whether the feature is listed in 364*aae38d10SBaptiste Daroussin ncv. 365*aae38d10SBaptiste Daroussin * add check in tic for unnecessary use of "2" to denote a shifted 366*aae38d10SBaptiste Daroussin special key. 367*aae38d10SBaptiste Daroussin * improve check in tic for delays by also warning about beep/flash 368*aae38d10SBaptiste Daroussin when a delay is not embedded, or if those use the VT100 reverse 369*aae38d10SBaptiste Daroussin video escape without using a delay. 370*aae38d10SBaptiste Daroussin * improve checks in trim_sgr0, comp_parse.c and parse_entry.c, for 371*aae38d10SBaptiste Daroussin cancelled string capabilities. 372*aae38d10SBaptiste Daroussin * add check in tic for some syntax errors of delays, as well as use 373*aae38d10SBaptiste Daroussin of proportional delays for non-line capabilities. 374*aae38d10SBaptiste Daroussin * add check in tic for conflict between ritm, rmso, rmul versus 375*aae38d10SBaptiste Daroussin sgr0. 376*aae38d10SBaptiste Daroussin * add check in _nc_parse_entry for invalid entry name, setting the 377*aae38d10SBaptiste Daroussin name to "invalid" to avoid problems storing entries. 378*aae38d10SBaptiste Daroussin * improve _nc_tparm_analyze, using that to extend the checks made by 379*aae38d10SBaptiste Daroussin tic for reporting inconsistencies between the expected number of 380*aae38d10SBaptiste Daroussin parameters for a capability and the actual. 381*aae38d10SBaptiste Daroussin * remove tic warning about "^?" in string capabilities, which was 382*aae38d10SBaptiste Daroussin marked as an extension; however all Unix implementations support 383*aae38d10SBaptiste Daroussin this and X/Open Curses does not address it. On the other hand, 384*aae38d10SBaptiste Daroussin [25]BSD termcap did not support this feature (until the 385*aae38d10SBaptiste Daroussin [26]mid-1990s). 386*aae38d10SBaptiste Daroussin in _nc_infotocap, added a check to ensure that terminfo "^?" is 387*aae38d10SBaptiste Daroussin not written to termcap. 388*aae38d10SBaptiste Daroussin * modify sscanf calls in _nc_infotocap for patterns "%{number}%+%c" 389*aae38d10SBaptiste Daroussin and "%'char'%+%c" to check that the final character is really "c", 390*aae38d10SBaptiste Daroussin avoiding a case in icl6404 which cannot be converted to termcap. 391*aae38d10SBaptiste Daroussin * in _nc_tic_expand and _nc_infotocap, improved string-length check 392*aae38d10SBaptiste Daroussin when deciding whether to use "^X" or "\xxx" format for control 393*aae38d10SBaptiste Daroussin characters, to make the output of tic/infocmp more predictable. 394*aae38d10SBaptiste Daroussin * limited termcap "%d" width to 2 digits on input, and use "%2" in 395*aae38d10SBaptiste Daroussin preference to "%02" on output. 396*aae38d10SBaptiste Daroussin * correct terminfo/termcap conversion of "%02" and "%03" into "%2" 397*aae38d10SBaptiste Daroussin and "%3"; the result repeated the last character. 398*aae38d10SBaptiste Daroussin 399*aae38d10SBaptiste Daroussin Examples 400*aae38d10SBaptiste Daroussin 401*aae38d10SBaptiste Daroussin Along with the library and utilities, many improvements were made to 402*aae38d10SBaptiste Daroussin the [27]ncurses-examples. 403*aae38d10SBaptiste Daroussin 404*aae38d10SBaptiste Daroussin These changes were made to demonstrate new extensions in ncurses: 405*aae38d10SBaptiste Daroussin * add demo_new_pair program, to demonstrate [28]alloc_pair, 406*aae38d10SBaptiste Daroussin [29]find_pair and [30]free_pair functions. 407*aae38d10SBaptiste Daroussin This program iterates over the possible color combinations, 408*aae38d10SBaptiste Daroussin allocating or initializing color pairs. For best results, choose 409*aae38d10SBaptiste Daroussin screen-width dividing evenly into the number of colors. e.g., 410*aae38d10SBaptiste Daroussin 411*aae38d10SBaptiste Daroussin 32x64,32x128 256 colors 412*aae38d10SBaptiste Daroussin 24x44,24x88 88 colors 413*aae38d10SBaptiste Daroussin 32x64,24x128 16 colors 414*aae38d10SBaptiste Daroussin 415*aae38d10SBaptiste Daroussin * add extended_color program, like the older color_set program, but 416*aae38d10SBaptiste Daroussin using the extended color functions, with and without the 417*aae38d10SBaptiste Daroussin SP-functions interface. 418*aae38d10SBaptiste Daroussin * add picsmap program to fill in some testing issues not met by 419*aae38d10SBaptiste Daroussin dots, using this as the third example in a comparison of the 420*aae38d10SBaptiste Daroussin [31]ncurses versus slang libraries. 421*aae38d10SBaptiste Daroussin The program can directly read X bitmap and pixmap files, 422*aae38d10SBaptiste Daroussin displaying a picture. It can read other image files using 423*aae38d10SBaptiste Daroussin ImageMagick's convert program to translate the image into text. 424*aae38d10SBaptiste Daroussin For 16-, 88- and 256-color terminal descriptions, picsmap can load 425*aae38d10SBaptiste Daroussin a palette file which tells it which color palette entries to use. 426*aae38d10SBaptiste Daroussin For direct-colors, the terminal descriptions use the RGB extension 427*aae38d10SBaptiste Daroussin capability. 428*aae38d10SBaptiste Daroussin 429*aae38d10SBaptiste Daroussin There are other new example programs and a few scripts: 430*aae38d10SBaptiste Daroussin * add dots_xcurses program to illustrate a different approach used 431*aae38d10SBaptiste Daroussin for extended colors which can be contrasted with dots_curses. 432*aae38d10SBaptiste Daroussin * add list_keys program show function keys for one or more terminal 433*aae38d10SBaptiste Daroussin descriptions. It uses ncurses's convention of modifiers for 434*aae38d10SBaptiste Daroussin special keys, based on xterm. 435*aae38d10SBaptiste Daroussin * add padview program, to compare pads with direct updates in the 436*aae38d10SBaptiste Daroussin view program. 437*aae38d10SBaptiste Daroussin * add sp_tinfo program to exercise the SP-functions extension of the 438*aae38d10SBaptiste Daroussin low-level terminfo library. 439*aae38d10SBaptiste Daroussin * add test-programs for termattrs and term_attrs functions. 440*aae38d10SBaptiste Daroussin * add test_sgr program to exercise all combinations of the sgr 441*aae38d10SBaptiste Daroussin capability. 442*aae38d10SBaptiste Daroussin * add tput-colorcube demo script, imitating xterm's 88- and 443*aae38d10SBaptiste Daroussin 256-color scripts using tput. 444*aae38d10SBaptiste Daroussin * add tput-initc script to demonstrate how tput may be used to 445*aae38d10SBaptiste Daroussin initialize a color palette from a data file. 446*aae38d10SBaptiste Daroussin 447*aae38d10SBaptiste Daroussin A variety of improvements were made to existing programs, both new 448*aae38d10SBaptiste Daroussin features as well as options added to make the set of programs more 449*aae38d10SBaptiste Daroussin consistent. 450*aae38d10SBaptiste Daroussin 451*aae38d10SBaptiste Daroussin The ncurses program is the largest; a proportionately large number of 452*aae38d10SBaptiste Daroussin changes were made to it: 453*aae38d10SBaptiste Daroussin * modify a/A screens to make exiting on an escape character depend 454*aae38d10SBaptiste Daroussin on the start of keypad and timeout modes, to allow better testing 455*aae38d10SBaptiste Daroussin of function-keys. 456*aae38d10SBaptiste Daroussin add "t" toggle for notimeout function. 457*aae38d10SBaptiste Daroussin * modify layout of b/B screens to allow for additional annotation on 458*aae38d10SBaptiste Daroussin the right margin; some terminals with partial support did not 459*aae38d10SBaptiste Daroussin display well. 460*aae38d10SBaptiste Daroussin * modify c/C screens to allow for extended color pairs. 461*aae38d10SBaptiste Daroussin add z/Z zoom feature to make extended color pairs easier to test. 462*aae38d10SBaptiste Daroussin modify test-screens to take advantage of wide screens, reducing 463*aae38d10SBaptiste Daroussin the number of lines used for 88- and 256-colors. 464*aae38d10SBaptiste Daroussin * modify "d" edit-color screen to optionally read xterm color 465*aae38d10SBaptiste Daroussin palette directly from terminal, as well as handling KEY_RESIZE and 466*aae38d10SBaptiste Daroussin screen-repainting with control/L and control/R. 467*aae38d10SBaptiste Daroussin * add examples to "F" screen for WACS_D_PLUS and WACS_T_PLUS. 468*aae38d10SBaptiste Daroussin * improve "g" screen, correcting ifdef which made the legend not 469*aae38d10SBaptiste Daroussin reflect changes to keypad- and scroll-modes. Added check for 470*aae38d10SBaptiste Daroussin return-value of putwin. 471*aae38d10SBaptiste Daroussin * make "s" test easier to understand which subtests are available 472*aae38d10SBaptiste Daroussin add a corresponding "S" wide-character overlap test-screen. 473*aae38d10SBaptiste Daroussin * add "v" screen to show baudrate and other values. 474*aae38d10SBaptiste Daroussin 475*aae38d10SBaptiste Daroussin These changes were made to the other examples: 476*aae38d10SBaptiste Daroussin * modify blue program to use Unicode values for card-glyphs when 477*aae38d10SBaptiste Daroussin available, as well as improving the check for CP437 and CP850. 478*aae38d10SBaptiste Daroussin * improve demo_menus program, allowing mouse-click on the 479*aae38d10SBaptiste Daroussin menu-headers to switch the active menu. This requires a new 480*aae38d10SBaptiste Daroussin extension option O_MOUSE_MENU to tell the menu driver to put mouse 481*aae38d10SBaptiste Daroussin events which do not apply to the active menu back into the queue 482*aae38d10SBaptiste Daroussin so that the application can handle the event. 483*aae38d10SBaptiste Daroussin * correct logic in demo_terminfo program for "-f" option 484*aae38d10SBaptiste Daroussin * modify ditto program to allow $XTERM_PROG environment variable to 485*aae38d10SBaptiste Daroussin override "xterm" as the name of the program to run in the threaded 486*aae38d10SBaptiste Daroussin configuration. 487*aae38d10SBaptiste Daroussin * add several options to the "dots" test-programs. 488*aae38d10SBaptiste Daroussin * modify filter program: 489*aae38d10SBaptiste Daroussin + illustrate an alternative to getnstr, that polls for input 490*aae38d10SBaptiste Daroussin while updating a clock on the right margin as well as 491*aae38d10SBaptiste Daroussin responding to window size-changes. 492*aae38d10SBaptiste Daroussin + adapt logic used in [32]dialog [33]"--keep-tite" option for 493*aae38d10SBaptiste Daroussin filter program as the "-a" option. When set, filter attempts 494*aae38d10SBaptiste Daroussin to suppress the alternate screen. 495*aae38d10SBaptiste Daroussin * modify knight program to provide the "slow" solution for small 496*aae38d10SBaptiste Daroussin screens using "R", noting that Warnsdorf's method is easily done 497*aae38d10SBaptiste Daroussin with "a". 498*aae38d10SBaptiste Daroussin * modify the savescreen program to add test patterns that exercise 499*aae38d10SBaptiste Daroussin 88-, 256-, etc., colors. 500*aae38d10SBaptiste Daroussin * add options to test_arrays, for selecting termcap vs terminfo, 501*aae38d10SBaptiste Daroussin etc. 502*aae38d10SBaptiste Daroussin * modify the view program: 503*aae38d10SBaptiste Daroussin + expand tabs using the ncurses library rather than in the 504*aae38d10SBaptiste Daroussin test-program. 505*aae38d10SBaptiste Daroussin + eliminate the "-n" option by simply reading the whole file. 506*aae38d10SBaptiste Daroussin + implement page up/down commands. 507*aae38d10SBaptiste Daroussin + remove the very old SIGWINCH example; just use KEY_RESIZE. 508*aae38d10SBaptiste Daroussin * improve animation in xmas program by adding a time-delay in 509*aae38d10SBaptiste Daroussin blinkit. 510*aae38d10SBaptiste Daroussin * modify several test-programs which call use_default_colors to 511*aae38d10SBaptiste Daroussin consistently do this only if the "-d" option is given. 512*aae38d10SBaptiste Daroussin * modify the install-rule for ncurses-examples to put the data files 513*aae38d10SBaptiste Daroussin in the data directory, e.g., /usr/share/ncurses-examples. 514*aae38d10SBaptiste Daroussin * modify several test programs to use new popup_msgs function, 515*aae38d10SBaptiste Daroussin adapted from the help-screen used in the edit_field program. 516*aae38d10SBaptiste Daroussin * modify test data for xterm palettes to use the newer 517*aae38d10SBaptiste Daroussin color4/color12 values. 518*aae38d10SBaptiste Daroussin * improve the tracemunch script: 519*aae38d10SBaptiste Daroussin + show screenXX pointers and thread identifiers as names. 520*aae38d10SBaptiste Daroussin + chang address-parameters of add_wch, color_content and 521*aae38d10SBaptiste Daroussin pair_content to dummy parameters. 522*aae38d10SBaptiste Daroussin 523*aae38d10SBaptiste Daroussin Terminal database 524*aae38d10SBaptiste Daroussin 525*aae38d10SBaptiste Daroussin There are several new terminal descriptions: 526*aae38d10SBaptiste Daroussin 527*aae38d10SBaptiste Daroussin dumb-emacs-ansi, dvtm, dvtm-256color, fbterm, iterm2, linux-m1 528*aae38d10SBaptiste Daroussin minitel entries, putty-noapp, viewdata, and vt100+4bsd 529*aae38d10SBaptiste Daroussin building-block. 530*aae38d10SBaptiste Daroussin 531*aae38d10SBaptiste Daroussin xterm+noalt, xterm+titlestack, xterm+alt1049, xterm+alt+title 532*aae38d10SBaptiste Daroussin building blocks and xterm+direct, xterm+indirect, xterm-direct. 533*aae38d10SBaptiste Daroussin from [34]xterm patch #331. 534*aae38d10SBaptiste Daroussin 535*aae38d10SBaptiste Daroussin several other "-direct" descriptions to address the differences of 536*aae38d10SBaptiste Daroussin other terminal emulators versus xterm-direct. 537*aae38d10SBaptiste Daroussin 538*aae38d10SBaptiste Daroussin There are many changes to existing terminal descriptions. Some were 539*aae38d10SBaptiste Daroussin updates to several descriptions: 540*aae38d10SBaptiste Daroussin * use xterm+sm+1006 in several terminal descriptions which were 541*aae38d10SBaptiste Daroussin validated as supporting the extended mouse feature for their 542*aae38d10SBaptiste Daroussin respective terminal emulators. 543*aae38d10SBaptiste Daroussin * corrected sgr/sgr0 strings in a few cases reported by tic, making 544*aae38d10SBaptiste Daroussin those correspond to the non-sgr settings where they differ, but 545*aae38d10SBaptiste Daroussin otherwise use ECMA-48 consistently. 546*aae38d10SBaptiste Daroussin * add 0.1sec mandatory delay to flash capabilities using the VT100 547*aae38d10SBaptiste Daroussin reverse-video control 548*aae38d10SBaptiste Daroussin 549*aae38d10SBaptiste Daroussin while others affected specific descriptions. These were retested, to 550*aae38d10SBaptiste Daroussin take into account new/undocumented changes by their developers: 551*aae38d10SBaptiste Daroussin 552*aae38d10SBaptiste Daroussin iterm, minitel, st, viewdata, nsterm 553*aae38d10SBaptiste Daroussin 554*aae38d10SBaptiste Daroussin while these are specific fixes based on user reports, or warnings from 555*aae38d10SBaptiste Daroussin tic: 556*aae38d10SBaptiste Daroussin 557*aae38d10SBaptiste Daroussin [35]ansi building blocks 558*aae38d10SBaptiste Daroussin 559*aae38d10SBaptiste Daroussin + restored rmir/smir in ansi+idc to better match original 560*aae38d10SBaptiste Daroussin ansiterm+idc, add alias ansiterm 561*aae38d10SBaptiste Daroussin 562*aae38d10SBaptiste Daroussin [36]icl6402 563*aae38d10SBaptiste Daroussin 564*aae38d10SBaptiste Daroussin + corrected missing comma-separator between string capabilities 565*aae38d10SBaptiste Daroussin in icl6402 and m2-nam 566*aae38d10SBaptiste Daroussin 567*aae38d10SBaptiste Daroussin [37]interix 568*aae38d10SBaptiste Daroussin 569*aae38d10SBaptiste Daroussin + updated using tack and SFU with Windows 7 Ultimate. 570*aae38d10SBaptiste Daroussin + used ^? for kdch1 571*aae38d10SBaptiste Daroussin 572*aae38d10SBaptiste Daroussin [38]linux 573*aae38d10SBaptiste Daroussin 574*aae38d10SBaptiste Daroussin + made linux3.0 entry the default linux entry 575*aae38d10SBaptiste Daroussin + modify linux2.6 entry to improve line-drawing so that the 576*aae38d10SBaptiste Daroussin linux3.0 entry can be used in non-UTF-8 mode 577*aae38d10SBaptiste Daroussin + omitted selection of ISO-8859-1 for G0 in enacs capability 578*aae38d10SBaptiste Daroussin from linux2.6 entry, to avoid conflict with the user-defined 579*aae38d10SBaptiste Daroussin mapping. The reset feature uses ISO-8859-1 in any case. 580*aae38d10SBaptiste Daroussin + modify flash capability for linux and wyse entries to put the 581*aae38d10SBaptiste Daroussin delay between the reverse/normal escapes rather than after 582*aae38d10SBaptiste Daroussin + modify linux-16color to not mask dim, standout or reverse 583*aae38d10SBaptiste Daroussin with the ncv capability 584*aae38d10SBaptiste Daroussin 585*aae38d10SBaptiste Daroussin [39]pccon entries 586*aae38d10SBaptiste Daroussin 587*aae38d10SBaptiste Daroussin + fixed some inconsistencies in the pccon* entries 588*aae38d10SBaptiste Daroussin + add bold to pccon+sgr+acs and pccon-base 589*aae38d10SBaptiste Daroussin + add keys f12-f124 to pccon+keys 590*aae38d10SBaptiste Daroussin 591*aae38d10SBaptiste Daroussin [40]tmux 592*aae38d10SBaptiste Daroussin 593*aae38d10SBaptiste Daroussin + corrected sgr string, which used screen's "standout" code 594*aae38d10SBaptiste Daroussin rather than the standard code. 595*aae38d10SBaptiste Daroussin + add settings corresponding to xterm-keys option to reflect 596*aae38d10SBaptiste Daroussin upcoming change to make that option "on" by default 597*aae38d10SBaptiste Daroussin + uncanceled Ms 598*aae38d10SBaptiste Daroussin 599*aae38d10SBaptiste Daroussin [41]vt100 600*aae38d10SBaptiste Daroussin 601*aae38d10SBaptiste Daroussin + modify vt100 rs2 string to reset vt52 mode and scrolling 602*aae38d10SBaptiste Daroussin regions 603*aae38d10SBaptiste Daroussin + corrected rs2 string for vt100-nam 604*aae38d10SBaptiste Daroussin + made minor fixes for vt100+4bsd, e.g., delay in sgr for 605*aae38d10SBaptiste Daroussin consistency 606*aae38d10SBaptiste Daroussin 607*aae38d10SBaptiste Daroussin [42]vte 608*aae38d10SBaptiste Daroussin 609*aae38d10SBaptiste Daroussin + moved SGR 24 and 27 from vte-2014 to vte-2012 610*aae38d10SBaptiste Daroussin + add a few capabilities fixed in recent VTE development 611*aae38d10SBaptiste Daroussin 612*aae38d10SBaptiste Daroussin [43]xterm 613*aae38d10SBaptiste Daroussin 614*aae38d10SBaptiste Daroussin + add rep to xterm-new, available since [44]late 1996. 615*aae38d10SBaptiste Daroussin + modify xterm+256color and xterm+256setaf to use correct 616*aae38d10SBaptiste Daroussin number of color pairs. 617*aae38d10SBaptiste Daroussin + modify rs1 for xterm-16color, xterm-88color and 618*aae38d10SBaptiste Daroussin xterm-256color to reset palette using oc string as in linux 619*aae38d10SBaptiste Daroussin entry. 620*aae38d10SBaptiste Daroussin + add rs1 capability to xterm-256color 621*aae38d10SBaptiste Daroussin + add oc capability to xterm+256color, allowing palette reset 622*aae38d10SBaptiste Daroussin for xterm 623*aae38d10SBaptiste Daroussin + add op to xterm+256setaf 624*aae38d10SBaptiste Daroussin + modify xterm-r5, xterm-r6 and xterm-xf86-v32 to use xterm+kbs 625*aae38d10SBaptiste Daroussin to match [45]xterm #272, reflecting packager's changes 626*aae38d10SBaptiste Daroussin + used ANSI reply for u8 in xterm-new, to reflect vt220-style 627*aae38d10SBaptiste Daroussin responses that could be returned. 628*aae38d10SBaptiste Daroussin + made xterm-pcolor sgr consistent with other capabilities 629*aae38d10SBaptiste Daroussin 630*aae38d10SBaptiste Daroussin A few entries use extensions (user-defined terminal capabilities): 631*aae38d10SBaptiste Daroussin * add rmxx/smxx ECMA-48 strikeout extension to tmux and xterm-basic 632*aae38d10SBaptiste Daroussin * used RGB capability in new *-direct entries to denote direct-color 633*aae38d10SBaptiste Daroussin feature. 634*aae38d10SBaptiste Daroussin 635*aae38d10SBaptiste Daroussin Documentation 636*aae38d10SBaptiste Daroussin 637*aae38d10SBaptiste Daroussin As usual, this release 638*aae38d10SBaptiste Daroussin * improves documentation by describing new features, 639*aae38d10SBaptiste Daroussin * attempts to improve the description of features which users have 640*aae38d10SBaptiste Daroussin found confusing 641*aae38d10SBaptiste Daroussin * fills in overlooked descriptions of features which were described 642*aae38d10SBaptiste Daroussin in the [46]NEWS file but treated sketchily in manual pages. 643*aae38d10SBaptiste Daroussin 644*aae38d10SBaptiste Daroussin In particular, 645*aae38d10SBaptiste Daroussin * Since the underlying features for [47]tset, [48]tput, and 646*aae38d10SBaptiste Daroussin [49]clear have been better integrated, the documentation now 647*aae38d10SBaptiste Daroussin includes information on how those tools evolved. 648*aae38d10SBaptiste Daroussin In addition to explaining the improved integration of the tools, 649*aae38d10SBaptiste Daroussin the manual pages made it easier to see how the tools are similar 650*aae38d10SBaptiste Daroussin and how they are different. 651*aae38d10SBaptiste Daroussin * The addch manual page has additional information on 652*aae38d10SBaptiste Daroussin [50]portability and differences from other implementations. 653*aae38d10SBaptiste Daroussin * The discussion of color-pairs in the attributes manual page is 654*aae38d10SBaptiste Daroussin improved in its [51]history section. 655*aae38d10SBaptiste Daroussin * The documentation of the chtype, cchar_t types and the attribute 656*aae38d10SBaptiste Daroussin values which can be stored in those types, in particular the 657*aae38d10SBaptiste Daroussin [52]history and [53]portability sections of the attributes manual 658*aae38d10SBaptiste Daroussin page, has been improved. 659*aae38d10SBaptiste Daroussin * improve discussion of [54]portability in the mouse manual. 660*aae38d10SBaptiste Daroussin * The pad manual page has a section on the [55]origin and 661*aae38d10SBaptiste Daroussin portability of pads. 662*aae38d10SBaptiste Daroussin * Differences between SVr4 and X/Open Curses soft-keys are discussed 663*aae38d10SBaptiste Daroussin in a new section on [56]portability. 664*aae38d10SBaptiste Daroussin * There are updated/improved notes on portability in the 665*aae38d10SBaptiste Daroussin [57]resizeterm and [58]wresize manual pages. 666*aae38d10SBaptiste Daroussin 667*aae38d10SBaptiste Daroussin In addition to providing background information to explain these 668*aae38d10SBaptiste Daroussin features and show how they evolved, there are corrections, 669*aae38d10SBaptiste Daroussin clarifications, etc.: 670*aae38d10SBaptiste Daroussin * add note in the [59]addch manual about line-drawing when it 671*aae38d10SBaptiste Daroussin depends upon UTF-8. 672*aae38d10SBaptiste Daroussin * improve discussion of line-drawing characters in the [60]add_wch 673*aae38d10SBaptiste Daroussin manual. 674*aae38d10SBaptiste Daroussin * explain in [61]clear's manual page that it writes to the standard 675*aae38d10SBaptiste Daroussin output. 676*aae38d10SBaptiste Daroussin * improve description of [62]endwin. 677*aae38d10SBaptiste Daroussin * improve discussion of field validation in the [63]form driver 678*aae38d10SBaptiste Daroussin manual page. 679*aae38d10SBaptiste Daroussin * clarify the use of wint_t vs wchar_t in [64]get_wstr manual page. 680*aae38d10SBaptiste Daroussin * clarify in the [65]getch manual that the keypad mode affects an 681*aae38d10SBaptiste Daroussin application's ability to read KEY_MOUSE codes, but does not affect 682*aae38d10SBaptiste Daroussin KEY_RESIZE. 683*aae38d10SBaptiste Daroussin trim some obsolete/incorrect wording about EINTR from the getch 684*aae38d10SBaptiste Daroussin manual page 685*aae38d10SBaptiste Daroussin improve manual pages for [66]getch and [67]get_wch to point out 686*aae38d10SBaptiste Daroussin that they might return user-defined values which have no 687*aae38d10SBaptiste Daroussin predefined names in <curses.h> 688*aae38d10SBaptiste Daroussin * improve description of the -R option in the [68]infocmp manual 689*aae38d10SBaptiste Daroussin page 690*aae38d10SBaptiste Daroussin * clarify in the [69]resizeterm manual page how KEY_RESIZE is pushed 691*aae38d10SBaptiste Daroussin onto the input stream. 692*aae38d10SBaptiste Daroussin * document return value of [70]use_extended_names 693*aae38d10SBaptiste Daroussin * document differences in [71]ESCDELAY versus AIX's implementation 694*aae38d10SBaptiste Daroussin in the variables manual page. 695*aae38d10SBaptiste Daroussin * The _nc_free_tinfo function is now documented in the 696*aae38d10SBaptiste Daroussin [72]memory-leaks manual page, because it could be used in tack for 697*aae38d10SBaptiste Daroussin memory-leak checking. 698*aae38d10SBaptiste Daroussin * add a note to the [73]tic manual page about -W versus -f options. 699*aae38d10SBaptiste Daroussin * improve terminfo manual description of [74]terminfo syntax. 700*aae38d10SBaptiste Daroussin improve terminfo manual page discussion of [75]control- and 701*aae38d10SBaptiste Daroussin graphics- characters. 702*aae38d10SBaptiste Daroussin improve [76]color-handling section in terminfo manual page 703*aae38d10SBaptiste Daroussin * clarify description in [77]tput manual page regarding support for 704*aae38d10SBaptiste Daroussin termcap names 705*aae38d10SBaptiste Daroussin update [78]tput manual page to reflect changes to manipulate 706*aae38d10SBaptiste Daroussin terminal modes by sharing functions with tset. 707*aae38d10SBaptiste Daroussin * clarify in manual pages that the optional verbose option level of 708*aae38d10SBaptiste Daroussin [79]tic and [80]infocmp is available only when ncurses is 709*aae38d10SBaptiste Daroussin configured for tracing. 710*aae38d10SBaptiste Daroussin * improve manual page description of [81]tset/reset versus 711*aae38d10SBaptiste Daroussin window-size. 712*aae38d10SBaptiste Daroussin * improve description of [82]tgoto parameters 713*aae38d10SBaptiste Daroussin 714*aae38d10SBaptiste Daroussin There are new manual pages: 715*aae38d10SBaptiste Daroussin * [83]user_caps documents the terminfo extensions used by ncurses. 716*aae38d10SBaptiste Daroussin * [84]scr_dump documents the screen-dump format. 717*aae38d10SBaptiste Daroussin 718*aae38d10SBaptiste Daroussin Some of the improvements are more subtle, relating to the way the 719*aae38d10SBaptiste Daroussin information is presented: 720*aae38d10SBaptiste Daroussin * Made minor fixes to manpage NAME/SYNOPSIS sections to consistently 721*aae38d10SBaptiste Daroussin use rule that either all functions which are prototyped in 722*aae38d10SBaptiste Daroussin SYNOPSIS are listed in the NAME section, or the manual-page name 723*aae38d10SBaptiste Daroussin is the sole item listed in the NAME section. The latter is used to 724*aae38d10SBaptiste Daroussin reduce clutter, e.g., for the top-level library manual pages as 725*aae38d10SBaptiste Daroussin well as for certain feature-pages such as [85]SP-funcs and 726*aae38d10SBaptiste Daroussin [86]threading. 727*aae38d10SBaptiste Daroussin * improve manual pages for utilities with respect to POSIX versus 728*aae38d10SBaptiste Daroussin X/Open Curses. 729*aae38d10SBaptiste Daroussin * improve organization of the [87]attributes and [88]color manual 730*aae38d10SBaptiste Daroussin pages. 731*aae38d10SBaptiste Daroussin 732*aae38d10SBaptiste Daroussin Interesting bug-fixes 733*aae38d10SBaptiste Daroussin 734*aae38d10SBaptiste Daroussin * modify toe to not exit if unable to read a terminal description, 735*aae38d10SBaptiste Daroussin e.g., if there is a permission problem. 736*aae38d10SBaptiste Daroussin * correct 20100515 change for weak signals versus sigprocmask 737*aae38d10SBaptiste Daroussin * work around Ada tool-breakage in Debian 9 and later by invoking 738*aae38d10SBaptiste Daroussin gprconfig to specify the C compiler to be used by gnatmake, and 739*aae38d10SBaptiste Daroussin conditionally suppressing Library_Options line for static 740*aae38d10SBaptiste Daroussin libraries. 741*aae38d10SBaptiste Daroussin * There were, as well, several bug-fixes to handle illegal input for 742*aae38d10SBaptiste Daroussin tic. Because those did not correspond to useful terminal 743*aae38d10SBaptiste Daroussin descriptions, most users are unaffected. 744*aae38d10SBaptiste Daroussin 745*aae38d10SBaptiste Daroussin Configuration changes 746*aae38d10SBaptiste Daroussin 747*aae38d10SBaptiste Daroussin Major changes 748*aae38d10SBaptiste Daroussin 749*aae38d10SBaptiste Daroussin This release provides a new binary format for terminal descriptions 750*aae38d10SBaptiste Daroussin that use extended numeric capabilities. Applications built with the 751*aae38d10SBaptiste Daroussin wide-character ncursesw library can use these extended numbers. 752*aae38d10SBaptiste Daroussin * This includes utilities such as tic and infocmp, because (as noted 753*aae38d10SBaptiste Daroussin in [89]New features), the feature relies upon an extension to the 754*aae38d10SBaptiste Daroussin low-level tinfo library. 755*aae38d10SBaptiste Daroussin * A few software packagers use a configuration option of ncurses 756*aae38d10SBaptiste Daroussin which allows the low-level tinfo library to be shared between the 757*aae38d10SBaptiste Daroussin high-level ncurses and ncursesw libraries. This new feature was 758*aae38d10SBaptiste Daroussin designed to work in that configuration as well. 759*aae38d10SBaptiste Daroussin 760*aae38d10SBaptiste Daroussin Other applications (i.e., using the 8-bit ncurses library) which read 761*aae38d10SBaptiste Daroussin the extended terminal descriptions see those numeric capabilities set 762*aae38d10SBaptiste Daroussin to the maximum value for a signed 16-bit number. 763*aae38d10SBaptiste Daroussin 764*aae38d10SBaptiste Daroussin Older versions of ncurses' tic accept out-of-range numeric 765*aae38d10SBaptiste Daroussin capabilities, storing those as the maximum value for a signed 16-bit 766*aae38d10SBaptiste Daroussin number. Other implementations of curses (mentioned in the discussion 767*aae38d10SBaptiste Daroussin of [90]picsmap) give zero for these out-of-range capabilities. 768*aae38d10SBaptiste Daroussin 769*aae38d10SBaptiste Daroussin Configuration options 770*aae38d10SBaptiste Daroussin 771*aae38d10SBaptiste Daroussin These changes provide support for tack 1.08, released in [91]July 772*aae38d10SBaptiste Daroussin 2017: 773*aae38d10SBaptiste Daroussin * add --without-tack configure option to refine --with-progs 774*aae38d10SBaptiste Daroussin configure option. Normally tack is built outside the ncurses tree, 775*aae38d10SBaptiste Daroussin but a few packagers combine it during the build. If term_entry.h 776*aae38d10SBaptiste Daroussin is installed, there is no advantage to in-tree builds. 777*aae38d10SBaptiste Daroussin * adjust configure-script to define HAVE_CURSES_DATA_BOOLNAMES 778*aae38d10SBaptiste Daroussin symbol needed for tack 1.08 when built in-tree. Rather than 779*aae38d10SBaptiste Daroussin relying upon internal "_nc_" functions, tack now uses the boolean, 780*aae38d10SBaptiste Daroussin number and string capability name-arrays provided by ncurses and 781*aae38d10SBaptiste Daroussin SVr4 Unix curses. It still uses term_entry.h for the definitions 782*aae38d10SBaptiste Daroussin of the extended capability arrays. 783*aae38d10SBaptiste Daroussin * add dependency upon ncurses_cfg.h to tic's header-files; any 784*aae38d10SBaptiste Daroussin program using tic-library will have to supply this file. Legacy 785*aae38d10SBaptiste Daroussin tack versions supply this file; ongoing tack development has 786*aae38d10SBaptiste Daroussin dropped the dependency upon tic-library and new releases will not 787*aae38d10SBaptiste Daroussin be affected. 788*aae38d10SBaptiste Daroussin 789*aae38d10SBaptiste Daroussin Other changes to the configure-script and generated files include 790*aae38d10SBaptiste Daroussin * add configure options to disable checks for form, menu and panel 791*aae38d10SBaptiste Daroussin libraries so that ncurses-examples can be built with non-SVr4 792*aae38d10SBaptiste Daroussin curses implementations. 793*aae38d10SBaptiste Daroussin * add configure option --enable-opaque-curses for ncurses library 794*aae38d10SBaptiste Daroussin and similar options for the other libraries. 795*aae38d10SBaptiste Daroussin * add configure option --disable-wattr-macros for use in cases where 796*aae38d10SBaptiste Daroussin one wants to use the same headers for ncurses5/ncurses6 797*aae38d10SBaptiste Daroussin development, by suppressing the wattr* macros which differ due to 798*aae38d10SBaptiste Daroussin the introduction of extended colors 799*aae38d10SBaptiste Daroussin * modify configure macro for shared-library rules to use -Wl,-rpath 800*aae38d10SBaptiste Daroussin rather than -rpath to work around a bug in scons 801*aae38d10SBaptiste Daroussin * improve ncurses-examples' configure script to define as needed 802*aae38d10SBaptiste Daroussin NCURSES_WIDECHAR for platforms where _XOPEN_SOURCE_EXTENDED does 803*aae38d10SBaptiste Daroussin not work. Also modified the test program to ensure that if 804*aae38d10SBaptiste Daroussin building with ncurses, that the cchar_t type is checked, since 805*aae38d10SBaptiste Daroussin that is normally (since [92]20111030) ifdef'd depending on this 806*aae38d10SBaptiste Daroussin test. 807*aae38d10SBaptiste Daroussin * modify configure script to handle the case where tic-library is 808*aae38d10SBaptiste Daroussin renamed, but the --with-debug option is used by itself without 809*aae38d10SBaptiste Daroussin normal or shared libraries 810*aae38d10SBaptiste Daroussin * modify editing script which generates resulting.map to work with 811*aae38d10SBaptiste Daroussin the clang configuration on recent FreeBSD, which gives an error on 812*aae38d10SBaptiste Daroussin an empty "local" section. 813*aae38d10SBaptiste Daroussin * improve configure check for setting the WILDCARD_SYMS variable; on 814*aae38d10SBaptiste Daroussin ppc64 the variable is in the Data section rather than Text. 815*aae38d10SBaptiste Daroussin * correct result of configure option --without-fallbacks, which 816*aae38d10SBaptiste Daroussin caused FALLBACK_LIST to be set to "no" 817*aae38d10SBaptiste Daroussin * modify --with-pkg-config-libdir option to make it possible to 818*aae38d10SBaptiste Daroussin install ".pc" files even if pkg-config is not found. Limit this 819*aae38d10SBaptiste Daroussin change, to suppress the actual install if it is not overridden to 820*aae38d10SBaptiste Daroussin a valid directory at install time. 821*aae38d10SBaptiste Daroussin * disallow "no" as a possible value for --with-shlib-version option, 822*aae38d10SBaptiste Daroussin overlooked in cleanup-changes for [93]20000708. 823*aae38d10SBaptiste Daroussin 824*aae38d10SBaptiste Daroussin Portability 825*aae38d10SBaptiste Daroussin 826*aae38d10SBaptiste Daroussin Many of the portability changes are implemented via the configure 827*aae38d10SBaptiste Daroussin script: 828*aae38d10SBaptiste Daroussin * improve configure script's CF_CC_ENV_FLAGS macro to allow for 829*aae38d10SBaptiste Daroussin compiler wrappers such as ccache. This change moves only the 830*aae38d10SBaptiste Daroussin preprocessor, optimization and warning flags to CPPFLAGS and 831*aae38d10SBaptiste Daroussin CFLAGS, leaving the residue in CC. That happens to work for gcc's 832*aae38d10SBaptiste Daroussin various "model" options, but may require tuning for other 833*aae38d10SBaptiste Daroussin compilers. 834*aae38d10SBaptiste Daroussin * modify ncurses-examples' configure script to use pkg-config for 835*aae38d10SBaptiste Daroussin the extra form/menu/panel libraries, to be more consistent with 836*aae38d10SBaptiste Daroussin the handling of the curses/ncurses library. 837*aae38d10SBaptiste Daroussin * add configuration checks to build with [94]NetBSD curses, which 838*aae38d10SBaptiste Daroussin for example lacks [95]use_env. 839*aae38d10SBaptiste Daroussin * change ncurses-examples to use attr_t vs chtype to follow X/Open 840*aae38d10SBaptiste Daroussin documentation more closely since Solaris xpg4-curses uses 841*aae38d10SBaptiste Daroussin different values for WA_xxx vs A_xxx that rely on attr_t being an 842*aae38d10SBaptiste Daroussin unsigned short. Tru64 aka OSF1, HPUX, AIX did as ncurses does, 843*aae38d10SBaptiste Daroussin equating the two sets. 844*aae38d10SBaptiste Daroussin * modify several test programs to reflect that ncurses honors 845*aae38d10SBaptiste Daroussin existing signal handlers in initscr, while other implementations 846*aae38d10SBaptiste Daroussin do not. 847*aae38d10SBaptiste Daroussin * add configure check for openpty to ncurses-examples' configure 848*aae38d10SBaptiste Daroussin script, for ditto. 849*aae38d10SBaptiste Daroussin * improve check for working poll function by using posix_openpt as a 850*aae38d10SBaptiste Daroussin fallback in case there is no valid terminal on the standard input 851*aae38d10SBaptiste Daroussin * modify ncurses-examples' configure script to check for pthread 852*aae38d10SBaptiste Daroussin dependency of ncursest or ncursestw library when building the 853*aae38d10SBaptiste Daroussin ncurses examples, e.g., in case weak symbols are used. 854*aae38d10SBaptiste Daroussin * add checks in ncurses-examples' configure script for some 855*aae38d10SBaptiste Daroussin functions neither in 4.3BSD curses, nor based on X/Open Curses: 856*aae38d10SBaptiste Daroussin + modify a loop limit in firework.c to work around absense of 857*aae38d10SBaptiste Daroussin limit checks in some libraries. 858*aae38d10SBaptiste Daroussin + fill the last row of a window with "?" in firstlast if waddch 859*aae38d10SBaptiste Daroussin does not return ERR on the lower-right corner. 860*aae38d10SBaptiste Daroussin * build-fixes for the Portland Group (PGI) compilers 861*aae38d10SBaptiste Daroussin + accept whitespace in sed expression for generating expanded.c 862*aae38d10SBaptiste Daroussin + modify configure check that g++ compiler warnings are not 863*aae38d10SBaptiste Daroussin used. 864*aae38d10SBaptiste Daroussin + add configure check for -fPIC option needed for shared 865*aae38d10SBaptiste Daroussin libraries. 866*aae38d10SBaptiste Daroussin * modify configure script for clang as used on FreeBSD, to work 867*aae38d10SBaptiste Daroussin around clang's differences in exit codes vs gcc. 868*aae38d10SBaptiste Daroussin * fixes for configure/build using clang on OSX 869*aae38d10SBaptiste Daroussin + do not redefine "inline" in ncurses_cfg.h; this was 870*aae38d10SBaptiste Daroussin originally to solve a problem with gcc/g++, but is aggravated 871*aae38d10SBaptiste Daroussin by clang's misuse of symbols to pretend it is gcc. 872*aae38d10SBaptiste Daroussin + add braces to configure script to prevent unwanted addition 873*aae38d10SBaptiste Daroussin of "-lstdc++" option to the CXXLIBS symbol. 874*aae38d10SBaptiste Daroussin + improve/update test-program used for checking existence of 875*aae38d10SBaptiste Daroussin stdc++ library. 876*aae38d10SBaptiste Daroussin + if $CXXLIBS is set, the linkage test uses that in addition to 877*aae38d10SBaptiste Daroussin $LIBS. 878*aae38d10SBaptiste Daroussin * fixes for OS/2: 879*aae38d10SBaptiste Daroussin + use button instead of kbuf[0] in EMX-specific part of 880*aae38d10SBaptiste Daroussin lib_mouse.c 881*aae38d10SBaptiste Daroussin + support building with libtool on OS/2 882*aae38d10SBaptiste Daroussin + use stdc++ library with OS/2 kLIBC 883*aae38d10SBaptiste Daroussin + clear configure script's cf_XOPEN_SOURCE for OS/2, to work 884*aae38d10SBaptiste Daroussin with its header files 885*aae38d10SBaptiste Daroussin * add "newer" baudrate symbols to the [96]baudrate function in the 886*aae38d10SBaptiste Daroussin ncurses library as well as to a corresponding table in tset. 887*aae38d10SBaptiste Daroussin * modify ncurses-examples savescreen to work with AIX and HPUX. 888*aae38d10SBaptiste Daroussin * define WIN32_LEAN_AND_MEAN for MinGW port, making builds faster. 889*aae38d10SBaptiste Daroussin * add a configure check for wcwidth versus the ncurses line-drawing 890*aae38d10SBaptiste Daroussin characters, to use in special-casing systems such as Solaris. 891*aae38d10SBaptiste Daroussin Solaris, however, requires a special case that maps Unicode 892*aae38d10SBaptiste Daroussin line-drawing characters into the acsc string for non-Unicode 893*aae38d10SBaptiste Daroussin locales. Solaris also has a misconfigured wcwidth which marks all 894*aae38d10SBaptiste Daroussin of the line drawing characters as double-width. 895*aae38d10SBaptiste Daroussin * string-hacks (non-standard): 896*aae38d10SBaptiste Daroussin + fix configure script to record when strlcat is found on 897*aae38d10SBaptiste Daroussin OpenBSD. 898*aae38d10SBaptiste Daroussin + add --enable-string-hacks option to ncurses-examples' 899*aae38d10SBaptiste Daroussin configure script. 900*aae38d10SBaptiste Daroussin + completed string-hacks for sprintf, etc., including the 901*aae38d10SBaptiste Daroussin ncurses-examples programs. 902*aae38d10SBaptiste Daroussin + make --enable-string-hacks option work with Debian by 903*aae38d10SBaptiste Daroussin checking for the "bsd" library and its associated 904*aae38d10SBaptiste Daroussin "<bsd/string.h>" header. 905*aae38d10SBaptiste Daroussin * workaround for Debian's antique/unmaintained version of mawk: 906*aae38d10SBaptiste Daroussin + see Debian #65617, which was fixed in mawk's upstream 907*aae38d10SBaptiste Daroussin releases in [97]2009. 908*aae38d10SBaptiste Daroussin + related fixes when building link_test. 909*aae38d10SBaptiste Daroussin _________________________________________________________________ 910*aae38d10SBaptiste Daroussin 911*aae38d10SBaptiste DaroussinFeatures of ncurses 912*aae38d10SBaptiste Daroussin 913*aae38d10SBaptiste Daroussin The ncurses package is fully upward-compatible with SVr4 (System V 914*aae38d10SBaptiste Daroussin Release 4) curses: 915*aae38d10SBaptiste Daroussin * All of the SVr4 calls have been implemented (and are documented). 916*aae38d10SBaptiste Daroussin * ncurses supports all of the for SVr4 curses features including 917*aae38d10SBaptiste Daroussin keyboard mapping, color, forms-drawing with ACS characters, and 918*aae38d10SBaptiste Daroussin automatic recognition of keypad and function keys. 919*aae38d10SBaptiste Daroussin * ncurses provides these SVr4 add-on libraries (not part of X/Open 920*aae38d10SBaptiste Daroussin Curses): 921*aae38d10SBaptiste Daroussin + the panels library, supporting a stack of windows with 922*aae38d10SBaptiste Daroussin backing store. 923*aae38d10SBaptiste Daroussin + the menus library, supporting a uniform but flexible 924*aae38d10SBaptiste Daroussin interface for menu programming. 925*aae38d10SBaptiste Daroussin + the form library, supporting data collection through 926*aae38d10SBaptiste Daroussin on-screen forms. 927*aae38d10SBaptiste Daroussin * ncurses's terminal database is fully compatible with that used by 928*aae38d10SBaptiste Daroussin SVr4 curses. 929*aae38d10SBaptiste Daroussin + ncurses supports user-defined capabilities which it can see, 930*aae38d10SBaptiste Daroussin but which are hidden from SVr4 curses applications using the 931*aae38d10SBaptiste Daroussin same terminal database. 932*aae38d10SBaptiste Daroussin + It can be optionally configured to match the format used in 933*aae38d10SBaptiste Daroussin related systems such as AIX and Tru64. 934*aae38d10SBaptiste Daroussin + Alternatively, ncurses can be configured to use hashed 935*aae38d10SBaptiste Daroussin databases rather than the directory of files used by SVr4 936*aae38d10SBaptiste Daroussin curses. 937*aae38d10SBaptiste Daroussin * The ncurses utilities have options to allow you to filter terminfo 938*aae38d10SBaptiste Daroussin entries for use with less capable curses/terminfo versions such as 939*aae38d10SBaptiste Daroussin the HP/UX and AIX ports. 9400e3d5408SPeter Wemm 9410e3d5408SPeter Wemm The ncurses package also has many useful extensions over SVr4: 9420e3d5408SPeter Wemm * The API is 8-bit clean and base-level conformant with the X/OPEN 9430e3d5408SPeter Wemm curses specification, XSI curses (that is, it implements all BASE 9444a1a9510SRong-En Fan level features, and most EXTENDED features). It includes many 9454a1a9510SRong-En Fan function calls not supported under SVr4 curses (but portability of 9464a1a9510SRong-En Fan all calls is documented so you can use the SVr4 subset only). 9471759abf3SPeter Wemm * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost 9480e3d5408SPeter Wemm corner of the screen if your terminal has an insert-character 9490e3d5408SPeter Wemm capability. 9500e3d5408SPeter Wemm * Ada95 and C++ bindings. 9514a1a9510SRong-En Fan * Support for mouse event reporting with X Window xterm and FreeBSD 9524a1a9510SRong-En Fan and OS/2 console windows. 9530e3d5408SPeter Wemm * Extended mouse support via Alessandro Rubini's gpm package. 95406bfebdeSXin LI * The function wresize allows you to resize windows, preserving 9550e3d5408SPeter Wemm their data. 95606bfebdeSXin LI * The function use_default_colors allows you to use the terminal's 9570e3d5408SPeter Wemm default colors for the default color pair, achieving the effect of 9580e3d5408SPeter Wemm transparent colors. 95906bfebdeSXin LI * The functions keyok and define_key allow you to better control the 96006bfebdeSXin LI use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by 96106bfebdeSXin LI defining more than one control sequence to map to a given key 96206bfebdeSXin LI code. 963*aae38d10SBaptiste Daroussin * Support for 256-color terminals, such as modern xterm. 9644a1a9510SRong-En Fan * Support for 16-color terminals, such as aixterm and modern xterm. 9650e3d5408SPeter Wemm * Better cursor-movement optimization. The package now features a 9660e3d5408SPeter Wemm cursor-local-movement computation more efficient than either BSD's 9670e3d5408SPeter Wemm or System V's. 9680e3d5408SPeter Wemm * Super hardware scrolling support. The screen-update code 9690e3d5408SPeter Wemm incorporates a novel, simple, and cheap algorithm that enables it 9700e3d5408SPeter Wemm to make optimal use of hardware scrolling, line-insertion, and 9710e3d5408SPeter Wemm line-deletion for screen-line movements. This algorithm is more 97206bfebdeSXin LI powerful than the 4.4BSD curses quickch routine. 9730e3d5408SPeter Wemm * Real support for terminals with the magic-cookie glitch. The 9740e3d5408SPeter Wemm screen-update code will refrain from drawing a highlight if the 9750e3d5408SPeter Wemm magic- cookie unattributed spaces required just before the 9760e3d5408SPeter Wemm beginning and after the end would step on a non-space character. 9770e3d5408SPeter Wemm It will automatically shift highlight boundaries when doing so 9780e3d5408SPeter Wemm would make it possible to draw the highlight without changing the 9790e3d5408SPeter Wemm visual appearance of the screen. 9800e3d5408SPeter Wemm * It is possible to generate the library with a list of pre-loaded 9810e3d5408SPeter Wemm fallback entries linked to it so that it can serve those terminal 9820e3d5408SPeter Wemm types even when no terminfo tree or termcap file is accessible 9830e3d5408SPeter Wemm (this may be useful for support of screen-oriented programs that 9840e3d5408SPeter Wemm must run in single-user mode). 985*aae38d10SBaptiste Daroussin * The [98]tic/[99]captoinfo utility provided with ncurses has the 986*aae38d10SBaptiste Daroussin ability to translate many termcaps from the XENIX, IBM and AT&T 987*aae38d10SBaptiste Daroussin extension sets. 988*aae38d10SBaptiste Daroussin * A BSD-like [100]tset utility is provided. 9890e3d5408SPeter Wemm * The ncurses library and utilities will automatically read terminfo 9900e3d5408SPeter Wemm entries from $HOME/.terminfo if it exists, and compile to that 9910e3d5408SPeter Wemm directory if it exists and the user has no write access to the 9920e3d5408SPeter Wemm system directory. This feature makes it easier for users to have 9930e3d5408SPeter Wemm personal terminfo entries without giving up access to the system 9940e3d5408SPeter Wemm terminfo directory. 9950e3d5408SPeter Wemm * You may specify a path of directories to search for compiled 9960e3d5408SPeter Wemm descriptions with the environment variable TERMINFO_DIRS (this 9970e3d5408SPeter Wemm generalizes the feature provided by TERMINFO under stock System 9980e3d5408SPeter Wemm V.) 9990e3d5408SPeter Wemm * In terminfo source files, use capabilities may refer not just to 10000e3d5408SPeter Wemm other entries in the same source file (as in System V) but also to 10010e3d5408SPeter Wemm compiled entries in either the system terminfo directory or the 10020e3d5408SPeter Wemm user's $HOME/.terminfo directory. 1003*aae38d10SBaptiste Daroussin * The table-of-entries utility [101]toe makes it easy for users to 1004*aae38d10SBaptiste Daroussin see exactly what terminal types are available on the system. 10050e3d5408SPeter Wemm * The library meets the XSI requirement that every macro entry point 10060e3d5408SPeter Wemm have a corresponding function which may be linked (and will be 10070e3d5408SPeter Wemm prototype-checked) if the macro definition is disabled with 10080e3d5408SPeter Wemm #undef. 1009*aae38d10SBaptiste Daroussin * Extensive documentation is provided (see the [102]Additional 1010*aae38d10SBaptiste Daroussin Reading section of the [103]ncurses FAQ for online documentation). 10110e3d5408SPeter Wemm 1012*aae38d10SBaptiste DaroussinApplications using ncurses 10130e3d5408SPeter Wemm 1014*aae38d10SBaptiste Daroussin The ncurses distribution includes a selection of test programs 1015*aae38d10SBaptiste Daroussin (including a few games). These are available separately as 1016*aae38d10SBaptiste Daroussin [104]ncurses-examples 10170e3d5408SPeter Wemm 1018*aae38d10SBaptiste Daroussin The ncurses library has been tested with a wide variety of 1019*aae38d10SBaptiste Daroussin applications including: 1020*aae38d10SBaptiste Daroussin 1021*aae38d10SBaptiste Daroussin aptitude 1022*aae38d10SBaptiste Daroussin FrontEnd to Apt, the debian package manager 1023*aae38d10SBaptiste Daroussin 1024*aae38d10SBaptiste Daroussin [105]https://wiki.debian.org/Aptitude 10250e3d5408SPeter Wemm 10261759abf3SPeter Wemm cdk 102715589c42SPeter Wemm Curses Development Kit 1028*aae38d10SBaptiste Daroussin 1029*aae38d10SBaptiste Daroussin [106]https://invisible-island.net/cdk/ 10301759abf3SPeter Wemm 10310e3d5408SPeter Wemm ded 103215589c42SPeter Wemm directory-editor 1033*aae38d10SBaptiste Daroussin 1034*aae38d10SBaptiste Daroussin [107]https://invisible-island.net/ded/ 10350e3d5408SPeter Wemm 10360e3d5408SPeter Wemm dialog 10370e3d5408SPeter Wemm the underlying application used in Slackware's setup, and the 1038*aae38d10SBaptiste Daroussin basis for similar install/configure applications on many 1039*aae38d10SBaptiste Daroussin systems. 1040*aae38d10SBaptiste Daroussin 1041*aae38d10SBaptiste Daroussin [108]https://invisible-island.net/dialog/ 10420e3d5408SPeter Wemm 10431759abf3SPeter Wemm lynx 1044*aae38d10SBaptiste Daroussin the text WWW browser 10450e3d5408SPeter Wemm 1046*aae38d10SBaptiste Daroussin [109]https://lynx.invisible-island.net/ 10470e3d5408SPeter Wemm 10481759abf3SPeter Wemm mutt 10490e3d5408SPeter Wemm mail utility 1050*aae38d10SBaptiste Daroussin 1051*aae38d10SBaptiste Daroussin [110]http://www.mutt.org/ 10520e3d5408SPeter Wemm 10531759abf3SPeter Wemm ncftp 10540e3d5408SPeter Wemm file-transfer utility 1055*aae38d10SBaptiste Daroussin 1056*aae38d10SBaptiste Daroussin [111]https://www.ncftp.com/ 10570e3d5408SPeter Wemm 10580e3d5408SPeter Wemm nvi 1059*aae38d10SBaptiste Daroussin New vi uses ncurses. 10604a1a9510SRong-En Fan 1061*aae38d10SBaptiste Daroussin [112]https://sites.google.com/a/bostic.com/keithbostic/vi 1062*aae38d10SBaptiste Daroussin 1063*aae38d10SBaptiste Daroussin ranger 1064*aae38d10SBaptiste Daroussin A console file manager with VI key bindings in Python. 1065*aae38d10SBaptiste Daroussin 1066*aae38d10SBaptiste Daroussin [113]https://ranger.github.io/ 10670e3d5408SPeter Wemm 10681759abf3SPeter Wemm tin 1069*aae38d10SBaptiste Daroussin newsreader, supporting color, MIME 1070*aae38d10SBaptiste Daroussin 1071*aae38d10SBaptiste Daroussin [114]http://www.tin.org/ 1072*aae38d10SBaptiste Daroussin 1073*aae38d10SBaptiste Daroussin vifm 1074*aae38d10SBaptiste Daroussin File manager with vi like keybindings 1075*aae38d10SBaptiste Daroussin 1076*aae38d10SBaptiste Daroussin [115]https://vifm.info/ 10770e3d5408SPeter Wemm 10780e3d5408SPeter Wemm as well as some that use ncurses for the terminfo support alone: 10790e3d5408SPeter Wemm 10801759abf3SPeter Wemm minicom 1081*aae38d10SBaptiste Daroussin terminal emulator for serial modem connections 1082*aae38d10SBaptiste Daroussin 1083*aae38d10SBaptiste Daroussin [116]https://alioth.debian.org/projects/minicom/ 1084*aae38d10SBaptiste Daroussin 1085*aae38d10SBaptiste Daroussin mosh 1086*aae38d10SBaptiste Daroussin a replacement for ssh. 1087*aae38d10SBaptiste Daroussin 1088*aae38d10SBaptiste Daroussin [117]https://mosh.mit.edu/ 1089*aae38d10SBaptiste Daroussin 1090*aae38d10SBaptiste Daroussin tack 1091*aae38d10SBaptiste Daroussin terminfo action checker 1092*aae38d10SBaptiste Daroussin 1093*aae38d10SBaptiste Daroussin [118]https://invisible-island.net/ncurses/tack.html 1094*aae38d10SBaptiste Daroussin 1095*aae38d10SBaptiste Daroussin tmux 1096*aae38d10SBaptiste Daroussin terminal multiplexor 1097*aae38d10SBaptiste Daroussin 1098*aae38d10SBaptiste Daroussin [119]https://github.com/tmux/tmux/wiki 10990e3d5408SPeter Wemm 11000e3d5408SPeter Wemm vile 1101*aae38d10SBaptiste Daroussin vi-like-emacs may be built to use the terminfo, termcap or 1102*aae38d10SBaptiste Daroussin curses interfaces. 11030e3d5408SPeter Wemm 1104*aae38d10SBaptiste Daroussin [120]https://invisible-island.net/vile/ 11050e3d5408SPeter Wemm 1106*aae38d10SBaptiste Daroussin and finally, those which use only the termcap interface: 11070e3d5408SPeter Wemm 1108*aae38d10SBaptiste Daroussin emacs 1109*aae38d10SBaptiste Daroussin text editor 1110*aae38d10SBaptiste Daroussin 1111*aae38d10SBaptiste Daroussin [121]https://www.gnu.org/software/emacs/ 1112*aae38d10SBaptiste Daroussin 1113*aae38d10SBaptiste Daroussin less 1114*aae38d10SBaptiste Daroussin The most commonly used pager (a program that displays text 1115*aae38d10SBaptiste Daroussin files). 1116*aae38d10SBaptiste Daroussin 1117*aae38d10SBaptiste Daroussin [122]http://www.greenwoodsoftware.com/less/ 1118*aae38d10SBaptiste Daroussin 1119*aae38d10SBaptiste Daroussin screen 1120*aae38d10SBaptiste Daroussin terminal multiplexor 1121*aae38d10SBaptiste Daroussin 1122*aae38d10SBaptiste Daroussin [123]https://www.gnu.org/software/screen/ 1123*aae38d10SBaptiste Daroussin 1124*aae38d10SBaptiste Daroussin vim 1125*aae38d10SBaptiste Daroussin text editor 1126*aae38d10SBaptiste Daroussin 1127*aae38d10SBaptiste Daroussin [124]https://www.vim.org/ 1128*aae38d10SBaptiste Daroussin 1129*aae38d10SBaptiste DaroussinDevelopment activities 1130*aae38d10SBaptiste Daroussin 1131*aae38d10SBaptiste Daroussin Zeyd Ben-Halim started ncurses from a previous package pcurses, 1132*aae38d10SBaptiste Daroussin written by Pavel Curtis. Eric S. Raymond continued development. 1133*aae38d10SBaptiste Daroussin Juergen Pfeifer wrote most of the form and menu libraries. Ongoing 1134*aae38d10SBaptiste Daroussin development work is done by [125]Thomas Dickey. Thomas Dickey also 1135*aae38d10SBaptiste Daroussin acts as the maintainer for the Free Software Foundation, which holds 1136*aae38d10SBaptiste Daroussin the [126]copyright on ncurses. 1137*aae38d10SBaptiste Daroussin 1138*aae38d10SBaptiste Daroussin Contact the current maintainers at 1139*aae38d10SBaptiste Daroussin 1140*aae38d10SBaptiste Daroussin [127]bug-ncurses@gnu.org 11410e3d5408SPeter Wemm 11420e3d5408SPeter Wemm To join the ncurses mailing list, please write email to 1143*aae38d10SBaptiste Daroussin 1144*aae38d10SBaptiste Daroussin [128]bug-ncurses-request@gnu.org 1145*aae38d10SBaptiste Daroussin 1146*aae38d10SBaptiste Daroussin containing the line: 1147*aae38d10SBaptiste Daroussin 11480e3d5408SPeter Wemm subscribe <name>@<host.domain> 11490e3d5408SPeter Wemm 11500e3d5408SPeter Wemm This list is open to anyone interested in helping with the development 11510e3d5408SPeter Wemm and testing of this package. 11520e3d5408SPeter Wemm 11530e3d5408SPeter Wemm Beta versions of ncurses and patches to the current release are made 1154*aae38d10SBaptiste Daroussin available at 11550e3d5408SPeter Wemm 1156*aae38d10SBaptiste Daroussin [129]ftp://ftp.invisible-island.net/ncurses/ and 1157*aae38d10SBaptiste Daroussin [130]https://invisible-mirror.net/archives/ncurses/ . 11580e3d5408SPeter Wemm 1159*aae38d10SBaptiste Daroussin There is an archive of the mailing list here: 11600e3d5408SPeter Wemm 1161*aae38d10SBaptiste Daroussin [131]http://lists.gnu.org/archive/html/bug-ncurses (also 1162*aae38d10SBaptiste Daroussin [132]https) 11630e3d5408SPeter Wemm 1164*aae38d10SBaptiste DaroussinRelated resources 1165*aae38d10SBaptiste Daroussin 1166*aae38d10SBaptiste Daroussin The release notes make scattered references to these pages, which may 1167*aae38d10SBaptiste Daroussin be interesting by themselves: 1168*aae38d10SBaptiste Daroussin * [133]ncurses licensing 1169*aae38d10SBaptiste Daroussin * [134]Symbol versioning in ncurses 1170*aae38d10SBaptiste Daroussin * [135]Comments on ncurses versus slang (S-Lang) 1171*aae38d10SBaptiste Daroussin * [136]tack - terminfo action checker 1172*aae38d10SBaptiste Daroussin * [137]tctest - termcap library checker 1173*aae38d10SBaptiste Daroussin * [138]Terminal Database 1174*aae38d10SBaptiste Daroussin 1175*aae38d10SBaptiste DaroussinOther resources 11760e3d5408SPeter Wemm 11774a1a9510SRong-En Fan The distribution provides a newer version of the terminfo-format 1178*aae38d10SBaptiste Daroussin terminal description file once maintained by [139]Eric Raymond . 1179*aae38d10SBaptiste Daroussin Unlike the older version, the termcap and terminfo data are provided 1180*aae38d10SBaptiste Daroussin in the same file, which also provides several user-definable 1181*aae38d10SBaptiste Daroussin extensions beyond the X/Open specification. 11820e3d5408SPeter Wemm 11830e3d5408SPeter Wemm You can find lots of information on terminal-related topics not 1184*aae38d10SBaptiste Daroussin covered in the terminfo file at [140]Richard Shuford's archive . 1185*aae38d10SBaptiste Daroussin 1186*aae38d10SBaptiste Daroussin * [141]Overview 1187*aae38d10SBaptiste Daroussin * [142]Release Notes 1188*aae38d10SBaptiste Daroussin + [143]Library improvements 1189*aae38d10SBaptiste Daroussin o [144]New features 1190*aae38d10SBaptiste Daroussin o [145]Other improvements 1191*aae38d10SBaptiste Daroussin + [146]Program improvements 1192*aae38d10SBaptiste Daroussin o [147]Utilities 1193*aae38d10SBaptiste Daroussin o [148]Examples 1194*aae38d10SBaptiste Daroussin + [149]Terminal database 1195*aae38d10SBaptiste Daroussin + [150]Documentation 1196*aae38d10SBaptiste Daroussin + [151]Interesting bug-fixes 1197*aae38d10SBaptiste Daroussin + [152]Configuration changes 1198*aae38d10SBaptiste Daroussin o [153]Major changes 1199*aae38d10SBaptiste Daroussin o [154]Configuration options 1200*aae38d10SBaptiste Daroussin + [155]Portability 1201*aae38d10SBaptiste Daroussin * [156]Features of ncurses 1202*aae38d10SBaptiste Daroussin * [157]Applications using ncurses 1203*aae38d10SBaptiste Daroussin * [158]Development activities 1204*aae38d10SBaptiste Daroussin * [159]Related resources 1205*aae38d10SBaptiste Daroussin * [160]Other resources 12060e3d5408SPeter Wemm 12070e3d5408SPeter WemmReferences 12080e3d5408SPeter Wemm 1209*aae38d10SBaptiste Daroussin 1. https://invisible-island.net/ncurses/man/captoinfo.1m.html 1210*aae38d10SBaptiste Daroussin 2. https://invisible-island.net/ncurses/man/clear.1.html 1211*aae38d10SBaptiste Daroussin 3. https://invisible-island.net/ncurses/man/infocmp.1m.html 1212*aae38d10SBaptiste Daroussin 4. https://invisible-island.net/ncurses/man/tabs.1.html 1213*aae38d10SBaptiste Daroussin 5. https://invisible-island.net/ncurses/man/tic.1m.html 1214*aae38d10SBaptiste Daroussin 6. https://invisible-island.net/ncurses/man/toe.1m.html 1215*aae38d10SBaptiste Daroussin 7. https://invisible-island.net/ncurses/man/tput.1.html 1216*aae38d10SBaptiste Daroussin 8. https://invisible-island.net/ncurses/man/tset.1.html 1217*aae38d10SBaptiste Daroussin 9. https://invisible-island.net/ncurses/ 1218*aae38d10SBaptiste Daroussin 10. ftp://ftp.invisible-island.net/ncurses/ 1219*aae38d10SBaptiste Daroussin 11. https://invisible-mirror.net/archives/ncurses/ 1220*aae38d10SBaptiste Daroussin 12. ftp://ftp.gnu.org/gnu/ncurses/ 1221*aae38d10SBaptiste Daroussin 13. https://invisible-island.net/ncurses/man/curs_kernel.3x.html#h3-def_prog_mode_-def_shell_mode 1222*aae38d10SBaptiste Daroussin 14. https://invisible-island.net/ncurses/ncurses-mapsyms.html 1223*aae38d10SBaptiste Daroussin 15. https://invisible-island.net/ncurses/tctest.html#bsd42-numeric-caps 1224*aae38d10SBaptiste Daroussin 16. https://invisible-island.net/ncurses/ncurses-slang.html#cause_numbers 1225*aae38d10SBaptiste Daroussin 17. https://invisible-island.net/ncurses/tack.html#portable 1226*aae38d10SBaptiste Daroussin 18. https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726 1227*aae38d10SBaptiste Daroussin 19. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-EXTENSIONS 1228*aae38d10SBaptiste Daroussin 20. https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization 1229*aae38d10SBaptiste Daroussin 21. https://invisible-island.net/ncurses/man/tset.1.html 1230*aae38d10SBaptiste Daroussin 22. https://invisible-island.net/ncurses/man/tput.1.html 1231*aae38d10SBaptiste Daroussin 23. https://invisible-island.net/ncurses/man/tset.1.html#h3-reset---reinitialization 1232*aae38d10SBaptiste Daroussin 24. https://invisible-island.net/ncurses/man/clear.1.html 1233*aae38d10SBaptiste Daroussin 25. https://invisible-island.net/ncurses/tctest.html#bsd42-ctl-question 1234*aae38d10SBaptiste Daroussin 26. https://invisible-island.net/ncurses/tctest.html#freebsd-ctl-question 1235*aae38d10SBaptiste Daroussin 27. https://invisible-island.net/ncurses/ncurses-examples.html 1236*aae38d10SBaptiste Daroussin 28. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-alloc_pair 1237*aae38d10SBaptiste Daroussin 29. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-find_pair 1238*aae38d10SBaptiste Daroussin 30. https://invisible-island.net/ncurses/man/new_pair.3x.html#h3-free_pair 1239*aae38d10SBaptiste Daroussin 31. https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap 1240*aae38d10SBaptiste Daroussin 32. https://invisible-island.net/dialog/ 1241*aae38d10SBaptiste Daroussin 33. https://invisible-island.net/dialog/manpage/dialog.html#h3-Common-Options 1242*aae38d10SBaptiste Daroussin 34. https://invisible-island.net/xterm/xterm.log.html#xterm_331 1243*aae38d10SBaptiste Daroussin 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 1244*aae38d10SBaptiste Daroussin 36. https://invisible-island.net/ncurses/terminfo.src.html#tic-icl6404 1245*aae38d10SBaptiste Daroussin 37. https://invisible-island.net/ncurses/terminfo.src.html#tic-interix 1246*aae38d10SBaptiste Daroussin 38. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Linux_consoles 1247*aae38d10SBaptiste Daroussin 39. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Open_B_S_D_consoles 1248*aae38d10SBaptiste Daroussin 40. https://invisible-island.net/ncurses/terminfo.src.html#toc-_Tmux 1249*aae38d10SBaptiste Daroussin 41. https://invisible-island.net/ncurses/terminfo.src.html#toc-_D_E_C__V_T100_and_compatibles 1250*aae38d10SBaptiste Daroussin 42. https://invisible-island.net/ncurses/terminfo.src.html#toc-_G_N_O_M_E__V_T_E_ 1251*aae38d10SBaptiste Daroussin 43. https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M 1252*aae38d10SBaptiste Daroussin 44. https://invisible-island.net/xterm/xterm.log.html#xterm_32 1253*aae38d10SBaptiste Daroussin 45. https://invisible-island.net/xterm/xterm.log.html#xterm_272 1254*aae38d10SBaptiste Daroussin 46. https://invisible-island.net/ncurses/NEWS.html 1255*aae38d10SBaptiste Daroussin 47. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY 1256*aae38d10SBaptiste Daroussin 48. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY 1257*aae38d10SBaptiste Daroussin 49. https://invisible-island.net/ncurses/man/clear.1.html#h2-HISTORY 1258*aae38d10SBaptiste Daroussin 50. https://invisible-island.net/ncurses/man/curs_addch.3x.html#h2-PORTABILITY 1259*aae38d10SBaptiste Daroussin 51. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY 1260*aae38d10SBaptiste Daroussin 52. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-HISTORY 1261*aae38d10SBaptiste Daroussin 53. https://invisible-island.net/ncurses/man/curs_attr.3x.html#h2-PORTABILITY 1262*aae38d10SBaptiste Daroussin 54. https://invisible-island.net/ncurses/man/curs_mouse.3x.html#h2-PORTABILITY 1263*aae38d10SBaptiste Daroussin 55. https://invisible-island.net/ncurses/man/curs_pad.3x.html#h2-PORTABILITY 1264*aae38d10SBaptiste Daroussin 56. https://invisible-island.net/ncurses/man/curs_slk.3x.html#h2-PORTABILITY 1265*aae38d10SBaptiste Daroussin 57. https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-PORTABILITY 1266*aae38d10SBaptiste Daroussin 58. https://invisible-island.net/ncurses/man/wresize.3x.html#h2-PORTABILITY 1267*aae38d10SBaptiste Daroussin 59. https://invisible-island.net/ncurses/man/curs_addch.3x.html#h3-ACS-Symbols 1268*aae38d10SBaptiste Daroussin 60. https://invisible-island.net/ncurses/man/curs_add_wch.3x.html 1269*aae38d10SBaptiste Daroussin 61. https://invisible-island.net/ncurses/man/clear.1.html#h2-DESCRIPTION 1270*aae38d10SBaptiste Daroussin 62. https://invisible-island.net/ncurses/man/curs_initscr.3x.html#h3-endwin 1271*aae38d10SBaptiste Daroussin 63. https://invisible-island.net/ncurses/man/form_driver.3x.html 1272*aae38d10SBaptiste Daroussin 64. https://invisible-island.net/ncurses/man/curs_get_wstr.3x.html#h2-RETURN-VALUE 1273*aae38d10SBaptiste Daroussin 65. https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Predefined-key-codes 1274*aae38d10SBaptiste Daroussin 66. https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Keypad-Mode 1275*aae38d10SBaptiste Daroussin 67. https://invisible-island.net/ncurses/man/curs_get_wch.3x.html#h2-DESCRIPTION 1276*aae38d10SBaptiste Daroussin 68. https://invisible-island.net/ncurses/man/infocmp.1m.html 1277*aae38d10SBaptiste Daroussin 69. https://invisible-island.net/ncurses/man/resizeterm.3x.html#h2-NOTES 1278*aae38d10SBaptiste Daroussin 70. https://invisible-island.net/ncurses/man/curs_extend.3x#h2-RETURN-VALUE 1279*aae38d10SBaptiste Daroussin 71. https://invisible-island.net/ncurses/man/curs_variables.3x.html#h2-PORTABILITY 1280*aae38d10SBaptiste Daroussin 72. https://invisible-island.net/ncurses/man/curs_memleaks.3x.html 1281*aae38d10SBaptiste Daroussin 73. https://invisible-island.net/ncurses/man/tic.1m.html 1282*aae38d10SBaptiste Daroussin 74. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Terminfo-Capabilities-Syntax 1283*aae38d10SBaptiste Daroussin 75. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Line-Graphics 1284*aae38d10SBaptiste Daroussin 76. https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Color-Handling 1285*aae38d10SBaptiste Daroussin 77. https://invisible-island.net/ncurses/man/tput.1.html#h2-PORTABILITY 1286*aae38d10SBaptiste Daroussin 78. https://invisible-island.net/ncurses/man/tput.1.html#h3-Aliases 1287*aae38d10SBaptiste Daroussin 79. https://invisible-island.net/ncurses/man/tic.1m.html#h2-OPTIONS 1288*aae38d10SBaptiste Daroussin 80. https://invisible-island.net/ncurses/man/infocmp.1m.html#h3-Other-Options 1289*aae38d10SBaptiste Daroussin 81. https://invisible-island.net/ncurses/man/tset.1.html 1290*aae38d10SBaptiste Daroussin 82. https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h3-FORMATTING-CAPABILITIES 1291*aae38d10SBaptiste Daroussin 83. https://invisible-island.net/ncurses/man/user_caps.5.html 1292*aae38d10SBaptiste Daroussin 84. https://invisible-island.net/ncurses/man/scr_dump.5.html 1293*aae38d10SBaptiste Daroussin 85. https://invisible-island.net/ncurses/man/curs_sp_funcs.3x.html 1294*aae38d10SBaptiste Daroussin 86. https://invisible-island.net/ncurses/man/curs_threads.3x.html 1295*aae38d10SBaptiste Daroussin 87. https://invisible-island.net/ncurses/man/curs_attr.3x.html 1296*aae38d10SBaptiste Daroussin 88. file:///ncurses/man/curs_color.3x.html 1297*aae38d10SBaptiste Daroussin 89. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-new-library 1298*aae38d10SBaptiste Daroussin 90. https://invisible-island.net/ncurses/ncurses-slang.html#compare_picsmap 1299*aae38d10SBaptiste Daroussin 91. https://invisible-island.net/ncurses/tack/CHANGES.html#index-t20170726 1300*aae38d10SBaptiste Daroussin 92. https://invisible-island.net/ncurses/NEWS.html#t20111030 1301*aae38d10SBaptiste Daroussin 93. https://invisible-island.net/ncurses/NEWS.html#t20000708 1302*aae38d10SBaptiste Daroussin 94. https://invisible-island.net/ncurses/ncurses-netbsd.html 1303*aae38d10SBaptiste Daroussin 95. https://invisible-island.net/ncurses/man/curs_util.3x.html#h3-use_env 1304*aae38d10SBaptiste Daroussin 96. https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-baudrate 1305*aae38d10SBaptiste Daroussin 97. https://invisible-island.net/mawk/CHANGES.html#t20090727 1306*aae38d10SBaptiste Daroussin 98. https://invisible-island.net/ncurses/man/tic.1m.html 1307*aae38d10SBaptiste Daroussin 99. https://invisible-island.net/ncurses/man/captoinfo.1m.html 1308*aae38d10SBaptiste Daroussin 100. https://invisible-island.net/ncurses/man/tset.1.html 1309*aae38d10SBaptiste Daroussin 101. https://invisible-island.net/ncurses/man/toe.1m.html 1310*aae38d10SBaptiste Daroussin 102. https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading 1311*aae38d10SBaptiste Daroussin 103. https://invisible-island.net/ncurses/ncurses.faq.html 1312*aae38d10SBaptiste Daroussin 104. https://invisible-island.net/ncurses/ncurses-examples.html 1313*aae38d10SBaptiste Daroussin 105. https://wiki.debian.org/Aptitude 1314*aae38d10SBaptiste Daroussin 106. https://invisible-island.net/cdk/ 1315*aae38d10SBaptiste Daroussin 107. https://invisible-island.net/ded/ 1316*aae38d10SBaptiste Daroussin 108. https://invisible-island.net/dialog/ 1317*aae38d10SBaptiste Daroussin 109. https://lynx.invisible-island.net/ 1318*aae38d10SBaptiste Daroussin 110. http://www.mutt.org/ 1319*aae38d10SBaptiste Daroussin 111. https://www.ncftp.com/ 1320*aae38d10SBaptiste Daroussin 112. https://sites.google.com/a/bostic.com/keithbostic/vi 1321*aae38d10SBaptiste Daroussin 113. https://ranger.github.io/ 1322*aae38d10SBaptiste Daroussin 114. http://www.tin.org/ 1323*aae38d10SBaptiste Daroussin 115. https://vifm.info/ 1324*aae38d10SBaptiste Daroussin 116. https://alioth.debian.org/projects/minicom/ 1325*aae38d10SBaptiste Daroussin 117. https://mosh.mit.edu/ 1326*aae38d10SBaptiste Daroussin 118. https://invisible-island.net/ncurses/tack.html 1327*aae38d10SBaptiste Daroussin 119. https://github.com/tmux/tmux/wiki 1328*aae38d10SBaptiste Daroussin 120. https://invisible-island.net/vile/ 1329*aae38d10SBaptiste Daroussin 121. https://www.gnu.org/software/emacs/ 1330*aae38d10SBaptiste Daroussin 122. http://www.greenwoodsoftware.com/less/ 1331*aae38d10SBaptiste Daroussin 123. https://www.gnu.org/software/screen/ 1332*aae38d10SBaptiste Daroussin 124. https://www.vim.org/ 1333*aae38d10SBaptiste Daroussin 125. mailto:dickey@invisible-island.net 1334*aae38d10SBaptiste Daroussin 126. https://invisible-island.net/ncurses/ncurses-license.html 1335*aae38d10SBaptiste Daroussin 127. mailto:bug-ncurses@gnu.org 1336*aae38d10SBaptiste Daroussin 128. mailto:bug-ncurses-request@gnu.org 1337*aae38d10SBaptiste Daroussin 129. ftp://ftp.invisible-island.net/ncurses/ 1338*aae38d10SBaptiste Daroussin 130. https://invisible-mirror.net/archives/ncurses/ 1339*aae38d10SBaptiste Daroussin 131. http://lists.gnu.org/archive/html/bug-ncurses 1340*aae38d10SBaptiste Daroussin 132. https://lists.gnu.org/archive/html/bug-ncurses 1341*aae38d10SBaptiste Daroussin 133. https://invisible-island.net/ncurses/ncurses-license.html 1342*aae38d10SBaptiste Daroussin 134. https://invisible-island.net/ncurses/ncurses-mapsyms.html 1343*aae38d10SBaptiste Daroussin 135. https://invisible-island.net/ncurses/ncurses-slang.html 1344*aae38d10SBaptiste Daroussin 136. https://invisible-island.net/ncurses/tack.html 1345*aae38d10SBaptiste Daroussin 137. https://invisible-island.net/ncurses/tctest.html 1346*aae38d10SBaptiste Daroussin 138. https://invisible-island.net/ncurses/ncurses.html#download_database 1347*aae38d10SBaptiste Daroussin 139. http://www.catb.org/~esr/terminfo/ 1348*aae38d10SBaptiste Daroussin 140. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal 1349*aae38d10SBaptiste Daroussin 141. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-overview 1350*aae38d10SBaptiste Daroussin 142. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-release-notes 1351*aae38d10SBaptiste Daroussin 143. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-library 1352*aae38d10SBaptiste Daroussin 144. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-new-library 1353*aae38d10SBaptiste Daroussin 145. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-fixes-library 1354*aae38d10SBaptiste Daroussin 146. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-programs 1355*aae38d10SBaptiste Daroussin 147. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-utilities 1356*aae38d10SBaptiste Daroussin 148. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-examples 1357*aae38d10SBaptiste Daroussin 149. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-database 1358*aae38d10SBaptiste Daroussin 150. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-documentation 1359*aae38d10SBaptiste Daroussin 151. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-bug-fixes 1360*aae38d10SBaptiste Daroussin 152. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-config-config 1361*aae38d10SBaptiste Daroussin 153. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-config-major 1362*aae38d10SBaptiste Daroussin 154. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h4-config-options 1363*aae38d10SBaptiste Daroussin 155. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h3-portability 1364*aae38d10SBaptiste Daroussin 156. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-features 1365*aae38d10SBaptiste Daroussin 157. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-who-uses 1366*aae38d10SBaptiste Daroussin 158. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-development 1367*aae38d10SBaptiste Daroussin 159. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-this-stuff 1368*aae38d10SBaptiste Daroussin 160. file:///usr/build/ncurses/ncurses-6.1-20180127/doc/html/announce.html#h2-other-stuff 1369