======================================================================== * AUTHORS ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 2006 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: AUTHORS,v 1.2 2006/10/28 21:44:52 tom Exp $ ------------------------------------------------------------------------------- These are the principal authors/contributors of ncurses since 1.9.9e, in decreasing order of their contribution: TD Thomas E. Dickey JPF Juergen Pfeifer ESR Eric S Raymond AVL Alexander V Lukyanov PB Philippe Blain SV Sven Verdoolaege ======================================================================== * Ada95/README ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 1998 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- Author: Juergen Pfeifer, 1996 The documentation is provided in HTML format in the ./html subdirectory. The main document is named index.html ======================================================================== * Ada95/samples/README ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: README,v 1.2 2006/04/22 22:24:12 tom Exp $ ------------------------------------------------------------------------------- The intention of the demo at this point in time is not to demonstrate all the features of (n)curses and its subsystems, but to give some sample sources how to use the binding at all. Ideally in the future we can combine both goals. ======================================================================== * README ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: README,v 1.23 2006/04/22 22:19:37 tom Exp $ ------------------------------------------------------------------------------- README file for the ncurses package See the file ANNOUNCE for a summary of ncurses features and ports. See the file INSTALL for instructions on how to build and install ncurses. See the file NEWS for a release history and bug-fix notes. See the file TO-DO for things that still need doing, including known bugs. Browse the file misc/ncurses-intro.html for narrative descriptions of how to use ncurses and the panel, menu, and form libraries. Browse the file doc/html/hackguide.html for a tour of the package internals. ROADMAP AND PACKAGE OVERVIEW: You should be reading this file in a directory called: ncurses-d.d, where d.d is the current version number (see the dist.mk file in this directory for that). There should be a number of subdirectories, including `c++', `form', `man', `menu', `misc', `ncurses', `panel', `progs', `test', 'tack' and `Ada95'. (The 'tack' program may be distributed separately). A full build/install of this package typically installs several libraries, a handful of utilities, and a database hierarchy. Here is an inventory of the pieces: The libraries are: libncurses.a (normal) libncurses.so (shared) libncurses_g.a (debug and trace code enabled) libncurses_p.a (profiling enabled) libpanel.a (normal) libpanel.so (shared) libpanel_g.a (debug and trace code enabled) libmenu.a (normal) libmenu.so (shared) libmenu_g.a (debug enabled) libform.a (normal) libform.so (shared) libform_g.a (debug enabled) If you configure using the --enable-widec option, a "w" is appended to the library names (e.g., libncursesw.a), and the resulting libraries support wide-characters, e.g., via a UTF-8 locale. The corresponding header files are compatible with the non-wide-character configuration; wide-character features are provided by ifdef's in the header files. The wide-character library interfaces are not binary-compatible with the non-wide-character version. The ncurses libraries implement the curses API. The panel, menu and forms libraries implement clones of the SVr4 panel, menu and forms APIs. The source code for these lives in the `ncurses', `panel', `menu', and `form' directories respectively. In the `c++' directory, you'll find code that defines an interface to the curses, forms, menus and panels library packaged as C++ classes, and a demo program in C++ to test it. These class definition modules are not installed by the 'make install.libs' rule as libncurses++. In the `Ada95' directory, you'll find code and documentation for an Ada95 binding of the curses API, to be used with the GNAT compiler. This binding is built by a normal top-level `make' if configure detects an usable version of GNAT (3.11 or above). It is not installed automatically. See the Ada95 directory for more build and installation instructions and for documentation of the binding. To do its job, the ncurses code needs your terminal type to be set in the environment variable TERM (normally set by your OS; under UNIX, getty(1) typically does this, but you can override it in your .profile); and, it needs a database of terminal descriptions in which to look up your terminal type's capabilities. In older (V7/BSD) versions of curses, the database was a flat text file, /etc/termcap; in newer (USG/USL) versions, the database is a hierarchy of fast-loading binary description blocks under /usr/lib/terminfo. These binary blocks are compiled from an improved editable text representation called `terminfo' format (documented in man/terminfo.5). The ncurses library can use either /etc/termcap or the compiled binary terminfo blocks, but prefers the second form. In the `misc' directory, there is a text file terminfo.src, in editable terminfo format, which can be used to generate the terminfo binaries (that's what make install.data does). If the package was built with the --enable-termcap option enabled, and the ncurses library cannot find a terminfo description for your terminal, it will fall back to the termcap file supplied with your system (which the ncurses package installation leaves strictly alone). The utilities are as follows: tic -- terminfo source to binary compiler infocmp -- terminfo binary to source decompiler/comparator clear -- emits clear-screen for current terminal tput -- shell-script access to terminal capabilities. toe -- table of entries utility tset -- terminal-initialization utility The first two (tic and infocmp) are used for manipulating terminfo descriptions; the next two (clear and tput) are for use in shell scripts. The last (tset) is provided for 4.4BSD compatibility. The source code for all of these lives in the `progs' directory. Detailed documentation for all libraries and utilities can be found in the `man' and `doc' directories. An HTML introduction to ncurses, panels, and menus programming lives in the `doc/html' directory. Manpages in HTML format are under `doc/html/man'. The `test' directory contains programs that can be used to verify or demonstrate the functions of the ncurses libraries. See test/README for descriptions of these programs. Notably, the `ncurses' utility is designed to help you systematically exercise the library functions. AUTHORS: Pavel Curtis: wrote the original ncurses Zeyd M. Ben-Halim: port of original to Linux and many enhancements. Thomas Dickey (maintainer for 1.9.9g through 4.1, resuming with FSF's 5.0): configuration scripts, porting, mods to adhere to XSI Curses in the areas of background color, terminal modes. Also memory leak testing, the wresize, default colors and key definition extensions and numerous bug fixes (more than half of those enumerated in NEWS beginning with the internal release 1.8.9). Florian La Roche (official maintainer for FSF's ncurses 4.2) Beginning with release 4.2, ncurses is distributed under an MIT-style license. Eric S. Raymond: the man pages, infocmp(1), tput(1), clear(1), captoinfo(1), tset(1), toe(1), most of tic(1), trace levels, the HTML intro, wgetnstr() and many other entry points, the cursor-movement optimization, the scroll-pack optimizer for vertical motions, the mouse interface and xterm mouse support, and the ncurses test program. Juergen Pfeifer The menu and form libraries, C++ bindings for ncurses, menus, forms and panels, as well as the Ada95 binding. Ongoing support for panel. CONTRIBUTORS: Alexander V. Lukyanov for numerous fixes and improvements to the optimization logic. David MacKenzie for first-class bug-chasing and methodical testing. Ross Ridge for the code that hacks termcap parameterized strings into terminfo. Warren Tucker and Gerhard Fuernkranz, for writing and sending the panel library. Hellmuth Michaelis, for many patches and testing the optimization code. Eric Newton, Ulrich Drepper, and Anatoly Ivasyuk: the C++ code. Jonathan Ross, for lessons in using sed. Keith Bostic (maintainer of 4.4BSD curses) for help, criticism, comments, bug-finding, and being willing to deep-six BSD curses for this one when it grew up. Richard Stallman, for his commitment to making ncurses free software. Countless other people have contributed by reporting bugs, sending fixes, suggesting improvements, and generally whining about ncurses :-) BUGS: See the INSTALL file for bug and developer-list addresses. The Hacker's Guide in the doc directory includes some guidelines on how to report bugs in ways that will get them fixed most quickly. ======================================================================== * README.MinGW ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 2008-2010,2011 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: README.MinGW,v 1.5 2011/02/26 16:57:17 tom Exp $ -- Author: Juergen Pfeifer ------------------------------------------------------------------------------- This is work in progress, but it's in an state where one can see it works at least on the Windows Console. You should install the MSYS package, so that you've a shell environment that allows you to run the scripts, especially configure etc. You can get that from http://www.mingw.org To build ncurses for native Windows, you need the MinGW toolchain. The original MinGW toolchain from the above site is only for 32-Bit Windows. As Windows Server - and also regular workstations - are moving to 64-Bit, it seems to be reasonable to have a toolchain that supports both architectures. I recommend to use the TDM gcc toolchain which you can find at http://tdm-gcc.tdragon.net/download. Go to the download section and select the bundle installer for tdm64 (MinGW-w64). This installs a multilib version of the gcc toolchain that can compile for native 32- and 64-Bit Windows versions. It also comes with a working pthread implementation. The latest config and build scripts we use for MinGW have only been tested for the gcc-4.4 compiler toolchain (or better). Using MinGW is a pragmatic decision, it's the easiest way to port this heavily UNIX based sourcebase to native Windows. The goal is of course to provide the includes, libraries and DLLs to be used with the more common traditional development environments on Windows, mainly with Microsoft Visual Studio. If you start a bash from the MSYS environment, please make sure that the Microsoft Development tools are in your PATH right after the MinGW tools. The LIB.EXE tool is the only one needed. You need this only if you want to build DLLs that work with native Windows programs. If you don't have any Microsoft Development tools on your machine, consider at least to get the free "Visual C++ 2010 Express Edition". It contains the LIB.EXE tool. You may also use this compiler to test writing native Windows programs using the ncurses DLLs without using MinGW then for writing apps. It is necessary to unset the TERM environment variable, to activate the Windows console-driver. Please also make sure that MSYS links to the correct directory containing your MinGW toolchain. For TDM this is usually C:\MinGW64. In your Windows CMD.EXE command shell go to the MSYS root directory (most probably C:\MSYS or C:\MSYS\1.0) and verify, that there is a junction point mingw that points to the MinGW toolchain directory. If not, delete the mingw directory and use the mklink command (or the linkd.exe utility on older Windows) to create the junction point. This code requires WindowsNT 5.1 or better, which means on the client Windows XP or better, on the server Windows Server 2003 or better. In order to build ncurses for the planned interop layer with .NET, we recommend to use these options with configure --disable-home-terminfo --enable-reentrant --enable-sp-funcs --enable-term-driver --enable-interop --with-pthread (if using TDM toolchain as recommended) This is the configuration commandline as I'm using it at the moment: ./configure \ --prefix=/mingw \ --without-cxx-binding \ --without-ada \ --enable-warnings \ --enable-assertions \ --enable-reentrant \ --with-debug \ --with-normal \ --disable-home-terminfo \ --enable-sp-funcs \ --enable-term-driver \ --enable-interop \ --with-pthread If you are on a 64-Bit Windows system and want to build a 32-Bit version of ncurses, you may use this commandline for configuration (when using the TDM toolchain): CC="gcc -m32" LD="ld -m32" ./configure \ --prefix=/mingw \ --without-cxx-binding \ --without-ada \ --enable-warnings \ --enable-assertions \ --enable-reentrant \ --with-debug \ --with-normal \ --disable-home-terminfo \ --enable-sp-funcs \ --enable-term-driver \ --enable-interop \ --with-pthread All the options above are - like the whole Windows support - experimental. In order to build the DLLs, after your regular make you must call make dlls A lot is still TODO, e.g.: - Wide Character support The Win32Con driver should actually only use Unicode in the future. - Thread support (locking). If using TDM toolchain this is done by configuring pthreads. - A GUI console driver - Support for Terminals attached via a serial port (via terminfo) - Support for networked Terminal connections (via terminfo) - Workarounds for MinGW's filesystem access are necessary to make infocmp work (though tic works). To support terminfo, we need to have an ioctl() simulation for the serial and networked Terminals. ======================================================================== * README.emx ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: README.emx,v 1.8 2006/04/22 22:19:37 tom Exp $ -- Author: Thomas Dickey ------------------------------------------------------------------------------- You can build ncurses on OS/2 in the EMX environment. But you must build and acquire tools. Not all of the tools distributed with EMX work properly, and some additional ones are required. First, the configure script distributed with ncurses will not run as-is in EMX. You can generate a new one if you have autoconf built for EMX. You will need the EMX development tools, of course. Get these programs to start: GNU m4 program (version 1.4) GNU autoconf (version 2.13). GNU patch (version 2.5) Apply the autoconf patches from http://invisible-island.net/autoconf ftp://invisible-island.net/autoconf These are ordered by date: autoconf-2.13-20030927.patch.gz autoconf-2.13-20030927-emx.patch.gz I built my development environment for ncurses using EMX 0.9c at the end of 1997. Much of the EMX patch for autoconf was done originally by J.J.G.Ripoll, using a similar environment (he prefers using the 'ash' shell). Newer versions may fix these problems: + The pdksh program distributed at Hobbes and Leo (with a 1996 date) is defective. It does not process "here documents" correctly (which renders it useless for running the autoconf script). I built my own copy of pdksh 5.2.13, which does have the bug corrected (documented in the change log for pdksh). + I also built from sources (because the distributed binaries did not work) the cmp, diff programs. Other required utilities such as ar, cat, chmod, cp, gawk, grep, mv, ls, rm, mkdir, sed, sort and tr worked. Once you have autoconf patched and installed, run 'autoconf' from the top-level directory of ncurses to generate the EMX-specific configure script. ======================================================================== * c++/README-first ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: README-first,v 1.9 2007/01/27 18:27:09 tom Exp $ ------------------------------------------------------------------------------- C++ interface to ncurses routines ----------------------------------------------------------------------- This directory contains the source code for several C++ classes which ease the use of writing ncurses-based programs. The code was originally derived from the libg++ CursesWindow class, but rewritten for ncurses. The classes simplify the use of window specific functions by encapsulating them in the window object. Function overloading is used in order to narrow the interface. For example, you do not have the distinction between `printw' and `mvprintw' anymore. A second benefit is the removal of all #defines which are included in the curses.h file. This is a steady cause of trouble because many common identifiers are used. Instead now all #defines are inline functions, which also allows strict type checking of arguments. The next enhancement is color support. It was originally provided by a derived class. This caused some trouble if you think about Panels or Menus and Forms with colors. We decided to put color support into the base class so that any derived class may use color support also. The implementation chosen here is directed to unrestricted use of mixes of color and monochrome windows. The original NCursesColorWindow class is maintained for compatibility reasons. The last point to mention is the support of other packages that are distributed with the ncurses package: the panels library, the menu library and the form library. This support is provided by the NCursesPanel class, which is also derived from the NCursesWindow class and the NCursesMenu and NCursesForm classes which are derived from NCursesPanel. This allows building interfaces with windows. Please see the example program for a quick introduction. Note that at this point, there is no documentation for these classes. Hopefully some will be written in the not too distant future. For now, to find out how to use the classes, read the code and the example program. Suggestions for enhancements and contributions of code (and docs) are welcome. Please let us know which functionality you miss. Original author: Eric Newton for FSF's libg++ Authors of first ncurses based release (NCursesWindow, NCursesPanel): Ulrich Drepper and Anatoly Ivasyuk Authors of this release: Juergen Pfeifer Thomas E. Dickey ======================================================================== * ncurses/README ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: README,v 1.10 2009/06/27 14:44:30 tom Exp $ ------------------------------------------------------------------------------- For discussion of the package internals, see hackguide.html in the doc/html directory. ------------------------------------------------------------------------------- The llib-lXXXX files could be used as lint-library sources (and were, at one time). However, they are actually used as a documentation aid to keep track of changes to the public/private interfaces in ncurses. Most of the text in these files is generated using cproto; some manual cleanup and adjustment of types (to reflect #define's in curses.h) is needed. The functions listed in the llib-lXXXX files do not correspond to the default configure options; some additional ones are added to include "all" of the entrypoints for each of the major configurations (normal, wide-character, threaded): --disable-macros --disable-root-environ --enable-expanded --enable-getcap --enable-getcap-cache --enable-sp-funcs --enable-termcap --with-develop ======================================================================== * ncurses/README.IZ ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 2002,2006 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: README.IZ,v 1.2 2006/04/22 23:13:05 tom Exp $ --------------------------------------------------------------------- Here is the patch. I did no testing whatsoever with event watching requests present (I need some applications which exersize this before this, probably lynx ;-), but the code looks working "the normal way". I had no way to test that the poll() branch compiles/works... Here is the API: *) two new functions wgetch_events() wgetstrn_event() are introduced, which allow an event-watch specification given as the last argument; *) if the last argument is NULL, they behave as wgetch() and wgetstrn() (TESTED!); *) the event specification is a pointer to _nc_eventlist, which contains bookkeeping elements (count and the summary of results), and an array of pointers to _nc_event; *) each _nc_event is a typed union, with two types supported "as shipped": _NC_EVENT_TIMEOUT_MSEC, _NC_EVENT_FILE. For _NC_EVENT_FILE the fields are fd, flag, and the output field. *) The only supported flag "as shipped" is _NC_EVENT_FILE_READABLE. If the file was found readable, the return field is set to this, otherwise to 0; *) If these functions return KEY_EVENT, this means that the return fields in both the _nc_eventlist and _nc_event structures make sense. The field result_flags of _nc_eventlist may have a combination of bits _NC_EVENT_TIMEOUT_MSEC and _NC_EVENT_FILE_READABLE set; *) The timeout_msec field of _NC_EVENT_TIMEOUT_MSEC _nc_event's is updated on return, even if the return is not KEY_EVENT. However, the change in the value represents only the amount of time spent in waiting for events, not the amount of time spent bookkeeping; *) the return KEY_EVENT of wgetstrn_event() means that the output string includes the user input typed so far, but the user did not have a chance to press ENTER (or whatever). This call should be repeated (with "shifted" pointer to a buffer, of course) to complete the input; *) The presence of this extension can be checked via inspecting #ifdef NCURSES_EVENT_VERSION. This symbol is not defined on BeOS, since there is no support for this on BeOS. Known issues: calls interrupted by KEY_EVENT reset the ESCDELAY timer. This is not entirely new, since other synthetic events behave the same (see "if (ch >= KEY_MIN)" branch of kgetch()). However, KEY_EVENT may be generated in a continuous stream (say, when downloading a file), thus this may be more important than with other synthetic keys. An additional field in window structure which keeps timestamp of the first raw key in the queue may be needed to circumvent this. Another possible issue: KEY_EVENT has a preference over a user input, so a stream of KEY_EVENT's can make input hard. Maybe use result_flags as in input parameter too, which specifies whether the user input should have higher precedence? Also: I took an opportunity to document kgetch() better. Enjoy, Ilya ======================================================================== * ncurses/base/README ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: README,v 1.2 2006/04/22 22:19:37 tom Exp $ ------------------------------------------------------------------------------- The functions in this directory are the generic (not device-specific) modules of ncurses. As a rule, these modules should not depend directly on term.h references and associated terminfo function and variables. ======================================================================== * ncurses/tinfo/README ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: README,v 1.2 2006/04/22 22:19:37 tom Exp $ ------------------------------------------------------------------------------- The files in this directory (tinfo) are those that support the terminfo database and interfaces for ncurses. The terminfo library can be built separately, as a lower-level library for ncurses, but usually is bundled. In addition to the standard documented interfaces, ncurses uses internal functions which reside in tinfo to satisfy linkage requirements. ======================================================================== * ncurses/trace/README ======================================================================== ------------------------------------------------------------------------------- -- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- -- "Software"), to deal in the Software without restriction, including -- -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell copies -- -- of the Software, and to permit persons to whom the Software is furnished -- -- to do so, subject to the following conditions: -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- -- -- -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- -- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- -- USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- -- -- Except as contained in this notice, the name(s) of the above copyright -- -- holders shall not be used in advertising or otherwise to promote the -- -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- -- $Id: README,v 1.2 2006/04/22 22:19:37 tom Exp $ ------------------------------------------------------------------------------- The files in this directory (trace) support both the terminfo and ncurses libraries. Most of the functions are linked in only when the libraries are compiled with TRACE defined.