1 2 Announcing ncurses 5.1 3 4 The ncurses (new curses) library is a free software emulation of 5 curses in System V Release 4.0, and more. It uses terminfo format, 6 supports pads and color and multiple highlights and forms characters 7 and function-key mapping, and has all the other SYSV-curses 8 enhancements over BSD curses. 9 10 In mid-June 1995, the maintainer of 4.4BSD curses declared that he 11 considered 4.4BSD curses obsolete, and is encouraging the keepers of 12 Unix releases such as BSD/OS, freeBSD and netBSD to switch over to 13 ncurses. 14 15 The ncurses code was developed under GNU/Linux. It should port easily 16 to any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 17 Warp! 18 19 The distribution includes the library and support utilities, including 20 a terminfo compiler tic(1), a decompiler infocmp(1), clear(1), 21 tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full 22 manual pages are provided for the library and tools. 23 24 The ncurses distribution is available via anonymous FTP at the GNU 25 distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses. It is also 26 available at [2]ftp://dickey.his.com/ncurses. 27 28 Release Notes 29 30 This release is designed to be upward compatible from ncurses 5.0; 31 very few applications will require recompilation, depending on the 32 platform. These are the highlights from the change-log since ncurses 33 5.0 release. 34 35 Interface changes: 36 * made the extended terminal capabilities 37 (configure --enable-tcap-names) a standard feature (though the 38 configure script can disable it, it is built by default). 39 * removed the trace() function and related trace support from the 40 production library. This is the only interface change that may 41 cause problems with existing applications linked to shared 42 libraries, since not all platforms use the minor version number. 43 * explicitly initialized to zero several data items which were 44 implicitly initialized, e.g., cur_term. If not explicitly 45 initialized, their storage type is C (common), and causes problems 46 linking on some platforms. 47 * modified curses.h.in, undef'ing some symbols to avoid conflict 48 with C++ STL. 49 50 New features: 51 * added a new extension, assume_default_colors() to provide better 52 control over the use of default colors. This is the principal 53 visible difference between ncurses 5.1 and preceding versions. The 54 new extension allows an application to specify what colors pair 0 55 uses. It defaults to white on black, unless you have invoked 56 use_default_colors(). 57 * made several fixes to the terminfo-to-termcap conversion, and have 58 been using the generated termcaps without further hand-tuning. 59 This builds on the extension use_extended_names() by adding 60 "obsolete" termcap strings to terminfo.src 61 + modified tic so that if extended names (i.e., 62 configure --enable-tcap-names) are active, then tic -x will 63 also write "obsolete" capabilities that are present in the 64 terminfo source. 65 + added screen's AX capability (for ECMA SGR 39 and 49) to 66 applicable terminfo entries, use presence of this as a check 67 for a small improvement in setting default colors. 68 + add -a option to tic and infocmp, which retains commented-out 69 capabilities during source translation/comparison, e.g., 70 captoinfo and infotocap. 71 * implemented limited support for UTF-8, useful with XFree86 xterm: 72 + if the configure --enable-widec option is given, append 'w' 73 to names of the generated libraries (e.g., libncursesw.so) to 74 avoid conflict with existing ncurses libraries. 75 + add a simple UTF-8 output driver to the experimental 76 wide-character support. If any of the environment variables 77 LC_ALL, LC_CTYPE or LANG contain the string "UTF-8", this 78 driver will be used to translate the output to UTF-8. 79 + modified view.c to make a rudimentary viewer of UTF-8 text. 80 * modify raw() and noraw() to clear/restore IEXTEN flag which 81 affects stty lnext on systems such as FreeBSD 82 * reordered tests during mouse initialization to allow for gpm to 83 run in xterm, or for xterm to be used under OS/2 EMX. Also dropped 84 test for $DISPLAY in favor of kmous=\E[M or $TERM containing 85 "xterm". 86 * added configure option --with-manpage-symlinks, which provides for 87 fully indexing manpage entries by making symbolic links for the 88 aliases. 89 * changed unctrl() to render C1 characters (128-159) as ~@, ~A, etc. 90 * add experimental configure option --enable-colorfgbg to check for 91 $COLORTERM variable as set by rxvt/aterm/Eterm. 92 * made the infocmp -F option less verbose. 93 * dropped support for gnat 3.10 (gnat 3.12 is current). 94 95 Major bug fixes: 96 * modified infocmp -e, -E options to ensure that generated 97 fallback.c type for Booleans agrees with term.h 98 * documented a special case of incompatiblity between ncurses 4.2 99 and 5.0, added a section for this in INSTALL. 100 * corrected tests for file-descriptors in OS/2 EMX mouse support. A 101 negative value could be used by FD_SET, causing the select() call 102 to wait indefinitely. 103 * made 'tput flash' work properly for xterm by flushing output in 104 delay_output() when using napms(), and modifying xterm's terminfo 105 to specify no padding character. Otherwise, xterm's reported baud 106 rate could mislead ncurses into producing too few padding 107 characters. 108 * modified lib_addch.c to allow repeated update to the lower-right 109 corner, rather than displaying only the first character written 110 until the cursor is moved. Recent versions of SVr4 curses can 111 update the lower-right corner, and behave this way. 112 * modified echo() behavior of getch() to match Solaris curses for 113 carriage return and backspace (reported by Neil Zanella). 114 * corrected offsets used for subwindows in wresize() 115 * modified configure script so AC_MSG_ERROR is temporarily defined 116 to a warning in AC_PROG_CXX to make it recover from a missing C++ 117 compiler without requiring user to add --without-cxx option 118 * corrected logic in lib_twait.c as used by lib_mouse.c for GPM 119 mouse support when poll() is used rather than select(). 120 * made several fixes for buffer overflows, unchecked recursion, 121 improvements in performance, etc. See the NEWS file for details. 122 123 Features of Ncurses 124 125 The ncurses package is fully compatible with SVr4 (System V Release 4) 126 curses: 127 * All 257 of the SVr4 calls have been implemented (and are 128 documented). 129 * Full support for SVr4 curses features including keyboard mapping, 130 color, forms-drawing with ACS characters, and automatic 131 recognition of keypad and function keys. 132 * An emulation of the SVr4 panels library, supporting a stack of 133 windows with backing store, is included. 134 * An emulation of the SVr4 menus library, supporting a uniform but 135 flexible interface for menu programming, is included. 136 * An emulation of the SVr4 form library, supporting data collection 137 through on-screen forms, is included. 138 * Binary terminfo entries generated by the ncurses tic(1) 139 implementation are bit-for-bit-compatible with the entry format 140 SVr4 curses uses. 141 * The utilities have options to allow you to filter terminfo entries 142 for use with less capable curses/terminfo versions such as the 143 HP/UX and AIX ports. 144 145 The ncurses package also has many useful extensions over SVr4: 146 * The API is 8-bit clean and base-level conformant with the X/OPEN 147 curses specification, XSI curses (that is, it implements all BASE 148 level features, but not all EXTENDED features). Most 149 EXTENDED-level features not directly concerned with wide-character 150 support are implemented, including many function calls not 151 supported under SVr4 curses (but portability of all calls is 152 documented so you can use the SVr4 subset only). 153 * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost 154 corner of the screen if your terminal has an insert-character 155 capability. 156 * Ada95 and C++ bindings. 157 * Support for mouse event reporting with X Window xterm and OS/2 158 console windows. 159 * Extended mouse support via Alessandro Rubini's gpm package. 160 * The function wresize() allows you to resize windows, preserving 161 their data. 162 * The function use_default_colors() allows you to use the terminal's 163 default colors for the default color pair, achieving the effect of 164 transparent colors. 165 * The functions keyok() and define_key() allow you to better control 166 the use of function keys, e.g., disabling the ncurses KEY_MOUSE, 167 or by defining more than one control sequence to map to a given 168 key code. 169 * Support for 16-color terminals, such as aixterm and XFree86 xterm. 170 * Better cursor-movement optimization. The package now features a 171 cursor-local-movement computation more efficient than either BSD's 172 or System V's. 173 * Super hardware scrolling support. The screen-update code 174 incorporates a novel, simple, and cheap algorithm that enables it 175 to make optimal use of hardware scrolling, line-insertion, and 176 line-deletion for screen-line movements. This algorithm is more 177 powerful than the 4.4BSD curses quickch() routine. 178 * Real support for terminals with the magic-cookie glitch. The 179 screen-update code will refrain from drawing a highlight if the 180 magic- cookie unattributed spaces required just before the 181 beginning and after the end would step on a non-space character. 182 It will automatically shift highlight boundaries when doing so 183 would make it possible to draw the highlight without changing the 184 visual appearance of the screen. 185 * It is possible to generate the library with a list of pre-loaded 186 fallback entries linked to it so that it can serve those terminal 187 types even when no terminfo tree or termcap file is accessible 188 (this may be useful for support of screen-oriented programs that 189 must run in single-user mode). 190 * The tic(1)/captoinfo utility provided with ncurses has the ability 191 to translate many termcaps from the XENIX, IBM and AT&T extension 192 sets. 193 * A BSD-like tset(1) utility is provided. 194 * The ncurses library and utilities will automatically read terminfo 195 entries from $HOME/.terminfo if it exists, and compile to that 196 directory if it exists and the user has no write access to the 197 system directory. This feature makes it easier for users to have 198 personal terminfo entries without giving up access to the system 199 terminfo directory. 200 * You may specify a path of directories to search for compiled 201 descriptions with the environment variable TERMINFO_DIRS (this 202 generalizes the feature provided by TERMINFO under stock System 203 V.) 204 * In terminfo source files, use capabilities may refer not just to 205 other entries in the same source file (as in System V) but also to 206 compiled entries in either the system terminfo directory or the 207 user's $HOME/.terminfo directory. 208 * A script (capconvert) is provided to help BSD users transition 209 from termcap to terminfo. It gathers the information in a TERMCAP 210 environment variable and/or a ~/.termcap local entries file and 211 converts it to an equivalent local terminfo tree under 212 $HOME/.terminfo. 213 * Automatic fallback to the /etc/termcap file can be compiled in 214 when it is not possible to build a terminfo tree. This feature is 215 neither fast nor cheap, you don't want to use it unless you have 216 to, but it's there. 217 * The table-of-entries utility toe makes it easy for users to see 218 exactly what terminal types are available on the system. 219 * The library meets the XSI requirement that every macro entry point 220 have a corresponding function which may be linked (and will be 221 prototype-checked) if the macro definition is disabled with 222 #undef. 223 * An HTML "Introduction to Programming with NCURSES" document 224 provides a narrative introduction to the curses programming 225 interface. 226 227 State of the Package 228 229 Numerous bugs present in earlier versions have been fixed; the library 230 is far more reliable than it used to be. Bounds checking in many 231 `dangerous' entry points has been improved. The code is now type-safe 232 according to gcc -Wall. The library has been checked for malloc leaks 233 and arena corruption by the Purify memory-allocation tester. 234 235 The ncurses code has been tested with a wide variety of applications 236 including (versions starting with those noted): 237 238 cdk 239 Curses Development Kit 240 [3]Curses Development Kit [4]http://dickey.his.com/cdk. 241 242 ded 243 directory-editor 244 [5]http://dickey.his.com/ded. 245 246 dialog 247 the underlying application used in Slackware's setup, and the 248 basis for similar applications on GNU/Linux. 249 [6]http://dickey.his.com/dialog. 250 251 lynx 252 the character-screen WWW browser 253 [7]http://lynx.isc.org/release. 254 255 Midnight Commander 4.1 256 file manager 257 258 mutt 259 mail utility 260 [8]http://www.mutt.org. 261 262 ncftp 263 file-transfer utility 264 265 nvi 266 New vi versions 1.50 are able to use ncurses versions 1.9.7 and 267 later. 268 269 tin 270 newsreader, supporting color, MIME 271 [9]http://www.tin.org. 272 273 taper 274 tape archive utility 275 276 vh-1.6 277 Volks-Hypertext browser for the Jargon File 278 279 as well as some that use ncurses for the terminfo support alone: 280 281 minicom 282 terminal emulator 283 284 vile 285 vi-like-emacs 286 [10]http://dickey.his.com/vile. 287 288 The ncurses distribution includes a selection of test programs 289 (including a few games). 290 291Who's Who and What's What 292 293 The original developers of ncurses are [11]Zeyd Ben-Halim and [12]Eric 294 S. Raymond. Ongoing work is being done by [13]Thomas Dickey and 295 [14]J�rgen Pfeifer. [15]Thomas Dickey acts as the maintainer for the 296 Free Software Foundation, which holds the copyright on ncurses. 297 Contact the current maintainers at [16]bug-ncurses@gnu.org. 298 299 To join the ncurses mailing list, please write email to 300 bug-ncurses-request@gnu.org containing the line: 301 subscribe <name>@<host.domain> 302 303 This list is open to anyone interested in helping with the development 304 and testing of this package. 305 306 Beta versions of ncurses and patches to the current release are made 307 available at [17]ftp://dickey.his.com/ncurses. 308 309Future Plans 310 311 * Extended-level XPG4 conformance, with internationalization 312 support. 313 * Ports to more systems, including DOS and Windows. 314 315 We need people to help with these projects. If you are interested in 316 working on them, please join the ncurses list. 317 318Other Related Resources 319 320 The distribution includes and uses a version of the terminfo-format 321 terminal description file maintained by Eric Raymond. 322 [18]http://earthspace.net/~esr/terminfo. 323 324 You can find lots of information on terminal-related topics not 325 covered in the terminfo file at [19]Richard Shuford's archive. 326 327References 328 329 1. ftp://ftp.gnu.org/pub/gnu/ncurses 330 2. ftp://dickey.his.com/ncurses 331 3. http://www.vexus.ca/CDK.html 332 4. http://dickey.his.com/cdk/cdk.html 333 5. http://dickey.his.com/ded/ded.html 334 6. http://dickey.his.com/dialog/dialog.html 335 7. http://lynx.isc.org/release/ 336 8. http://www.mutt.org/ 337 9. http://www.tin.org/ 338 10. http://dickey.his.com/vile/vile.html 339 11. mailto:zmbenhal@netcom.com 340 12. http://www.ccil.org/~esr/home.html 341 13. mailto:dickey@herndon4.his.com 342 14. mailto:juergen.pfeifer@gmx.net 343 15. mailto:dickey@herndon4.his.com 344 16. mailto:bug-ncurses@gnu.org 345 17. ftp://dickey.his.com/ncurses 346 18. http://earthspace.net/~esr/terminfo 347 19. http://www.cs.utk.edu/~shuford/terminal_index.html 348