Merge ^/head r358049 through r358074.

This commit is contained in:
Dimitry Andric 2020-02-18 17:59:37 +00:00
commit abaad9d77d
447 changed files with 69412 additions and 37255 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2009,6 +2009,12 @@ COMMON ITEMS:
last couple of stable branches). See the top of this file when there's
an exception.
The update process will emit an error on an attempt to perform a build
or install from a FreeBSD version below the earliest supported version.
When updating from an older version the update should be performed one
major release at a time, including running `make delete-old` at each
step.
When upgrading a live system, having a root shell around before
installing anything can help undo problems. Not having a root shell
around can lead to problems if pam has changed too much from your

View File

@ -12,7 +12,7 @@ ippool \- user interface to the IPFilter pools
-A [-dnv] [-m <name>] [-o <role>] [-S <seed>] -t <type>
.br
.B ippool
-f <file> [-dnuv]
-f <file> [-dnuv] [-f <file [-dnuv]] ...
.br
.B ippool
-F [-dv] [-o <role>] [-t <type>]

View File

@ -381,13 +381,17 @@ loadpoolfile(argc, argv, infile)
{
int c;
while ((c = getopt(argc, argv, "dnuv")) != -1)
while ((c = getopt(argc, argv, "dnuvf:")) != -1)
switch (c)
{
case 'd' :
opts |= OPT_DEBUG;
ippool_yydebug++;
break;
case 'f' :
if (loadpoolfile(argc, argv, optarg) != 0)
return(-1);
break;
case 'n' :
opts |= OPT_DONOTHING|OPT_DONTOPEN;
break;

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
-- Copyright (c) 2006 Free Software Foundation, Inc. --
-- Copyright (c) 2006,2017 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 --
@ -25,7 +25,7 @@
-- 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 $
-- $Id: AUTHORS,v 1.3 2017/02/04 15:20:52 tom Exp $
-------------------------------------------------------------------------------
These are the principal authors/contributors of ncurses since 1.9.9e,
in decreasing order of their contribution:
@ -36,3 +36,4 @@ ESR Eric S Raymond
AVL Alexander V Lukyanov
PB Philippe Blain
SV Sven Verdoolaege
NB Nicolas Boulenguez

View File

@ -1,4 +1,4 @@
Copyright (c) 1998-2013,2014 Free Software Foundation, Inc.
Copyright (c) 1998-2019,2020 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
@ -25,4 +25,4 @@ sale, use or other dealings in this Software without prior written
authorization.
-- vile:txtmode fc=72
-- $Id: COPYING,v 1.2 2014/01/18 23:59:29 tom Exp $
-- $Id: COPYING,v 1.8 2020/01/04 14:49:29 tom Exp $

View File

@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
-- Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. --
-- Copyright (c) 1998-2019,2020 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 --
@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
-- $Id: INSTALL,v 1.168 2013/08/03 23:15:23 tom Exp $
-- $Id: INSTALL,v 1.215 2020/01/18 17:02:13 tom Exp $
---------------------------------------------------------------------
How to install Ncurses/Terminfo on your system
---------------------------------------------------------------------
@ -196,17 +196,16 @@ INSTALLATION PROCEDURE:
NOTE: You must have installed the terminfo database, or set the
environment variable $TERMINFO to point to a SVr4-compatible terminfo
database before running the test programs. Not all vendors' terminfo
databases are SVr4-compatible, but most seem to be. Exceptions include
DEC's Digital Unix (formerly known as OSF/1).
databases are SVr4-compatible, but most seem to be.
It is possible to configure ncurses to use other terminfo database formats.
A few are provided as examples in the include-directory (see --with-caps).
If you run the test programs WITHOUT installing terminfo, ncurses may
read the termcap file and cache that in $HOME/.terminfo, which will
thereafter be used instead of the terminfo database. See the comments
on "--enable-getcap-cache", to see why this is a Bad Thing.
It is possible to configure ncurses to use other terminfo database formats.
A few are provided as examples in the include-directory (see --with-caps).
The ncurses program is designed specifically to test the ncurses library.
You can use it to verify that the screen highlights work correctly, that
cursor addressing and window scrolling works OK, etc.
@ -227,8 +226,7 @@ INSTALLATION PROCEDURE:
############################################################################
# CAVEAT EMPTOR: `install.data' run as root will NUKE any existing #
# terminfo database. If you have any custom or unusual entries SAVE them #
# before you install ncurses. I have a file called terminfo.custom for #
# this purpose. Don't forget to run tic on the file once you're done. #
# before you install ncurses. #
############################################################################
The terminfo(5) manual page must be preprocessed with tbl(1) before
@ -312,18 +310,27 @@ SUMMARY OF CONFIGURE OPTIONS:
and termcap data from disk. You can configure ncurses to have a
built-in database, aka "fallback" entries. Embedded applications may
have no need for an external database. Some, but not all of the
programs are useful in this configuration, e.g., reset and tput versus
programs are useful in this configuration, e.g., tset and tput versus
infocmp and tic.
--disable-db-install
Do not install the terminal database. This is used to omit features
for packages, as done with --without-progs.
--disable-echo
Use the option --disable-echo to make the build-log less verbose by
suppressing the display of the compile and link commands. This makes
it easier to see the compiler warnings. (You can always use "make -n"
to see the options that are used).
--disable-ext-funcs
Disable function-extensions. Configure ncurses without the functions
that are not specified by XSI. See ncurses/modules for the exact
list of library modules that would be suppressed.
--disable-gnat-projects
Disable GNAT projects even if usable, for testing old makefile rules.
--disable-hashmap
Compile without hashmap scrolling-optimization code. This algorithm is
the default.
@ -337,6 +344,30 @@ SUMMARY OF CONFIGURE OPTIONS:
--disable-largefile
Disable compiler flags needed to use large-file interfaces.
--disable-leaks
For testing, compile-in code that frees memory that normally would not
be freed, to simplify analysis of memory-leaks.
Any implementation of curses must not free the memory associated with
a screen, since (even after calling endwin()), it must be available
for use in the next call to refresh(). There are also chunks of
memory held for performance reasons. That makes it hard to analyze
curses applications for memory leaks. To work around this, build a
debugging version of the ncurses library which frees those chunks
which it can, and provides the _nc_free_and_exit() function to free
the remainder and then exit. The ncurses utility and test programs
use this feature, e.g., via the ExitProgram() macro.
Because this lies outside of the library's intended usage, it is not
normally considered part of the ABI. If there were some (as yet
unplanned) extension which frees memory in a manner that would let the
library resume and reallocate memory, then that would not use a "_nc_"
prefix.
--disable-lib-suffixes
Suppress the "w", "t" or "tw" suffixes which normally would be added
to the library names for the --enable-widec and --with-pthread options.
--disable-libtool-version
when using --with-libtool, control how the major/minor version numbers
are used for constructing the library name.
@ -348,19 +379,9 @@ SUMMARY OF CONFIGURE OPTIONS:
Use --disable-libtool-version to use the libtool -version-info feature.
This corresponds to the setting used before patch 20100515.
--disable-leaks
For testing, compile-in code that frees memory that normally would not
be freed, to simplify analysis of memory-leaks.
Any implementation of curses must not free the memory associated with
a screen, since (even after calling endwin()), it must be available
for use in the next call to refresh(). There are also chunks of
memory held for performance reasons. That makes it hard to analyze
curses applications for memory leaks. To work around this, build
a debugging version of the ncurses library which frees those chunks
which it can, and provides the _nc_free_and_exit() function to free
the remainder on exit. The ncurses utility and test programs use this
feature, e.g., via the ExitProgram() macro.
Starting with patch 20141115, using this option causes the configure
script to apply the top-level VERSION file to the ABI version used
for libtool.
--disable-lp64
The header files will ignore use of the _LP64 symbol to make chtype
@ -386,12 +407,51 @@ SUMMARY OF CONFIGURE OPTIONS:
rather than the include directory. This makes it simpler to avoid
compile-time conflicts with other versions of curses.h
Putting the header files into a subdirectory assumes that applications
will follow the (standard) practice of including the headers with
reference to the subdirectory name. For instance, the normal ncurses
header would be included using
#include <ncurses/curses.h>
#include <ncurses/term.h>
while the ncursesw headers would be found this way:
#include <ncursesw/curses.h>
#include <ncursesw/term.h>
In either case (with or without the --disable-overwrite option),
almost all applications are designed to include a related set of
curses header files from the same directory.
Manipulating the --includedir configure option to put header files
directly in a subdirectory of the normal include-directory defeats
this, and breaks builds of portable applications. Likewise, putting
some headers in /usr/include, and others in a subdirectory is a good
way to break builds.
When configured with --disable-overwrite, the installed header files'
embedded #include's are adjusted to use the same style of includes
noted above. In particular, the unctrl.h header is included from
curses.h, which means that a makefile which tells the compiler to
include directly from the subdirectory will fail to compile correctly.
Without some special effort, it will either fail to compile at all,
or the compiler may find a different unctrl.h file.
--disable-relink
If --enable-rpath is given, the generated makefiles normally will
rebuild the libraries during install. Use this option to simply
copy whatever the linked produced.
rebuild shared libraries during install. Use this option to simply
copy whatever the linker produced.
This option is ignored if --enable-rpath is not given.
Static libraries cannot simply be copied because tools use timestamps
to determine if the library's symbol table is up to date. If your
install program supports the "-p" (preserve timestamp) option, that
is used when --disable-relink is given, to avoid rebuilding the symbol
table.
Finally, some tools ignore the subsecond timestamps supported by some
filesystems. This option adds a 1-second sleep to help those tools
avoid unnecessary relinking during the install process.
--disable-root-environ
Compile with environment restriction, so certain environment variables
@ -409,6 +469,9 @@ SUMMARY OF CONFIGURE OPTIONS:
Compile without scroll-hints code. This option is ignored when
hashmap scrolling is configured, which is the default.
--disable-stripping
Do not strip installed executables.
--disable-tic-depends
When building shared libraries, normally the tic library is linked to
depend upon the ncurses library (or equivalently, on the tinfo-library
@ -427,6 +490,26 @@ SUMMARY OF CONFIGURE OPTIONS:
list documented in X/Open. ncurses provides varargs support for this
function. Use --disable-tparm-varargs to disable this support.
--disable-wattr-macros
The 6.0 ABI adds support for extended colors and for extended mouse.
The former is a noticeable problem when developers inadvertently
compile using the ncurses6 header files and link with an ncurses5
library, because the wattr* macros use a new field in the WINDOW
structure. These macros are used in several applications.
Since ncurses provides an actual function for each of these macros,
suppressing them from the curses.h header allows the ncurses5 libraries
to be used in most applications.
NOTE: The extended colors also are used in the cchar_t structure, but
fewer applications use that.
NOTE: This workaround does not help with mismatches in the ncurses
mouse version. The extended mouse feature uses one less fewer bit for
each button, so that only the first button will work as expected with
a mismatch between header and library. Again, most applications will
work, since most use only the first button.
--enable-assertions
For testing, compile-in assertion code. This is used only for a few
places where ncurses cannot easily recover by returning an error code.
@ -473,12 +556,6 @@ SUMMARY OF CONFIGURE OPTIONS:
issues arise when porting to SVr4 curses, which uses const in even
fewer places.
--enable-echo
Use the option --disable-echo to make the build-log less verbose by
suppressing the display of the compile and link commands. This makes
it easier to see the compiler warnings. (You can always use "make -n"
to see the options that are used).
--enable-expanded
For testing, generate functions for certain macros to make them visible
as such to the debugger. See also the --disable-macros option.
@ -501,6 +578,14 @@ SUMMARY OF CONFIGURE OPTIONS:
compatible with libncursesw 5.4. None of the interfaces change, but
applications which have mouse mask mmask_t's must be recompiled.
--enable-ext-putwin
Modify the file-format written by putwin() to use printable text rather
than binary files, allowing getwin() to read screen dumps written by
differently-configured ncurses libraries. The extended getwin() can
still read binary screen dumps from the "same" configuration of
ncurses. This does not change the ABI (the binary interface seen by
calling applications).
--enable-getcap
Use the 4.4BSD getcap code if available, or a bundled version of it to
fetch termcap entries. Entries read in this way cannot use (make
@ -546,6 +631,14 @@ SUMMARY OF CONFIGURE OPTIONS:
terminfo entries. This is the default, unless you have disabled the
extended functions.
--enable-opaque-curses
--enable-opaque-form
--enable-opaque-menu
--enable-opaque-panel
Define symbol in curses.h which controls whether some library
structures are treated as "opaque". The --enable-opaque-curses option
is overridden by the --enable-reentrant option.
--enable-pc-files
If pkg-config is found (see --with-pkg-config), generate ".pc" files
for each of the libraries, and install them in pkg-config's library
@ -556,9 +649,9 @@ SUMMARY OF CONFIGURE OPTIONS:
call can be interrupted for SIGWINCH.
--enable-reentrant
Compile experimental configuration which improves reentrant use of the
library by reducing global and static variables. This option is also
set if --with-pthread is used.
Compile configuration which improves reentrant use of the library by
reducing global and static variables. This option is also set if
--with-pthread is used.
Enabling this option adds a "t" to the library names, except for the
special case when --enable-weak-symbols is also used.
@ -582,14 +675,8 @@ SUMMARY OF CONFIGURE OPTIONS:
--enable-safe-sprintf
Compile with experimental safe-sprintf code. You may consider using
this if you are building ncurses for a system that has neither
vsnprintf() or vsprintf(). It is slow, however.
--enable-sigwinch
Compile support for ncurses' SIGWINCH handler. If your application has
its own SIGWINCH handler, ncurses will not use its own. The ncurses
handler causes wgetch() to return KEY_RESIZE when the screen-size
changes. This option is the default, unless you have disabled the
extended functions.
vsnprintf() or vsprintf(). It is slow, however, and is used only on
very old systems which lack vsnprintf().
--enable-signed-char
The term.h header declares a Booleans[] array typed "char". But it
@ -598,6 +685,13 @@ SUMMARY OF CONFIGURE OPTIONS:
is not strictly compatible. This option allows one to implement this
alteration without patching the source code.
--enable-sigwinch
Compile support for ncurses' SIGWINCH handler. If your application has
its own SIGWINCH handler, ncurses will not use its own. The ncurses
handler causes wgetch() to return KEY_RESIZE when the screen-size
changes. This option is the default, unless you have disabled the
extended functions.
--enable-sp-funcs
Compile-in support for extended functions which accept a SCREEN pointer,
reducing the need for juggling the global SP value with set_term() and
@ -684,6 +778,9 @@ SUMMARY OF CONFIGURE OPTIONS:
Tell where to install the Ada includes (default:
PREFIX/lib/ada/adainclude)
--with-ada-libname=NAME
Override the name of the Ada binding (default: "AdaCurses")
--with-ada-objects=DIR
Tell where to install the Ada objects (default: PREFIX/lib/ada/adalib)
@ -700,10 +797,6 @@ SUMMARY OF CONFIGURE OPTIONS:
correspond with that in <stdbool.h>, or defaults to platform-specific
sizes).
--with-build-cpp=XXX
This option is provided by the same macro used for $BUILD_CC, etc.,
but is not directly used by ncurses.
--with-build-cc=XXX
If cross-compiling, specify a host C compiler, which is needed to
compile a few utilities which generate source modules for ncurses.
@ -718,6 +811,10 @@ SUMMARY OF CONFIGURE OPTIONS:
You can also set the environment variable $BUILD_CFLAGS rather than
use this option.
--with-build-cpp=XXX
This option is provided by the same macro used for $BUILD_CC, etc.,
but is not directly used by ncurses.
--with-build-cppflags=XXX
If cross-compiling, specify the host C preprocessor-flags. You might
need to do this if the target compiler has unusual flags which confuse
@ -762,6 +859,10 @@ SUMMARY OF CONFIGURE OPTIONS:
executables, e.g., by setting "--with-chtype=long" (the configure
script supplies "unsigned").
--with-config-suffix=XXX
Specify a suffix for the ncursesw6-config file, etc., used to work
around conflicts with packages.
--with-cxx-shared
When --with-shared is set, build libncurses++ as a shared library.
This implicitly relies upon building with gcc/g++, since other
@ -790,10 +891,23 @@ SUMMARY OF CONFIGURE OPTIONS:
For testing, compile and link with Gray Watson's dmalloc library.
This also sets the --disable-leaks option.
--with-export-syms[=XXX]
Limit exported symbols using libtool. The configure script
automatically chooses an appropriate ".sym" file, which lists the
symbols which are part of the ABI.
--with-extra-suffix[=XXX]
Add the given suffix to header- and library-names to simplify
installing incompatible ncurses libraries, e.g., those using a
different ABI. The renaming affects the name of the
include-subdirectory if --disable-overwrite is given.
--with-fallbacks=XXX
Specify a list of fallback terminal descriptions which will be
compiled into the ncurses library. See CONFIGURING FALLBACK ENTRIES.
See also "--with-tic-path" and "--with-infocmp-path".
--with-gpm
use Alessandro Rubini's GPM library to provide mouse support on the
Linux console. Prior to ncurses 5.5, this introduced a dependency on
@ -833,13 +947,22 @@ SUMMARY OF CONFIGURE OPTIONS:
filesystem-based terminfo entries.
Use the parameter value to give the install-prefix used for the
datbase, e.g.,
database, e.g.,
--with-hashed-db=/usr/local/BigBase
to find the corresponding include- and lib-directories under the
given directory.
given directory. Alternatively, you can specify a directory leaf
name, e.g.,
--with-hashed-db=db4
to make the configure script look for files in a subdirectory such as
/usr/include/db4/db.h
/usr/lib/db4/libdb.so
See also the --enable-getcap option.
--with-infocmp-path[=XXX]
Use this option to override the automatic detection of tic in your
$PATH when building fallbacks (see "--with-fallbacks").
--with-install-prefix=XXX
Allows you to specify an alternate location for installing ncurses
after building it. The value you specify is prepended to the "real"
@ -878,7 +1001,14 @@ SUMMARY OF CONFIGURE OPTIONS:
macros for libtool, e.g., AC_PROG_LIBTOOL. See the comments in
aclocal.m4 for CF_PROG_LIBTOOL, and ensure that you build configure
using the appropriate patch for autoconf from
http://invisible-island.net/autoconf/
https://invisible-island.net/autoconf/
--with-libtool-opts=XXX
Allow user to pass additional libtool options into the library creation
and link steps. The main use for this is to do something like
./configure --with-libtool-opts=-static
to get the same behavior as automake-flavored
./configure --enable-static
--with-manpage-aliases
Tell the configure script you wish to create entries in the
@ -908,7 +1038,7 @@ SUMMARY OF CONFIGURE OPTIONS:
copying the man-page for each alias.
--with-manpage-tbl
Tell the configure script that you with to preprocess the manpages
Tell the configure script that you wish to preprocess the manpages
by running them through tbl to generate tables understandable by
nroff.
@ -939,6 +1069,20 @@ SUMMARY OF CONFIGURE OPTIONS:
those using termcap, do not use the higher speeds. Your application
(or system, in general) may or may not.
--with-pc-suffix=SUFFIX
If ".pc" files are installed, optionally add a suffix to the files
and corresponding package names to separate unusual configurations.
If no option value is given (or if it is "none"), no suffix is added.
--with-pcre2
Add PCRE2 (Perl-compatible regular expressions v2) to the build if it
is available and the user requests it. Assume the application will
otherwise use the POSIX interface.
This is useful for MinGW builds because the usual POSIX interface is
not supplied by the development environment, while ncurses' form
library uses a regular expression feature for one of the field types.
--with-pkg-config=[DIR]
Check for pkg-config, optionally specifying its path.
@ -978,11 +1122,23 @@ SUMMARY OF CONFIGURE OPTIONS:
shared libraries, you may encounter problems with the linker.
For example, it may prevent you from running the build tree's
copy of tic (for installing the terminfo database) because it
loads the system's copy of the ncurses shared libraries. In that
case, using the misc/shlib script may be helpful, since it sets
$LD_LIBRARY_PATH to point to the build tree, e.g.,
loads the system's copy of the ncurses shared libraries.
In that case, using the misc/shlib script may be helpful, since it
sets $LD_LIBRARY_PATH to point to the build tree, e.g.,
./misc/shlib make install
Alternatively, for most platforms, the linker accepts a list of
directories which will be searched for libraries at run-time. The
configure script allows you to modify this list using the
RPATH_LIST environment variable. It is a colon-separated list of
directories (default: the "libdir" set via the configure script).
If you set that to put "../lib" first in the list, the linker will
look first at the build-directory, and avoid conflict with libraries
already installed. One drawback to this approach is that libraries
can be accidentally searched in any "../lib" directory.
NOTE: If you use the --with-ada-sharedlib option, you should also
set this option, to ensure that C-language modules needed for the
Ada binding use appropriate compiler options.
@ -1006,6 +1162,9 @@ SUMMARY OF CONFIGURE OPTIONS:
Specify a search-list of terminfo directories which will be compiled
into the ncurses library (default: DATADIR/terminfo)
This is a colon-separated list, like the TERMINFO_DIRS environment
variable.
--with-termlib[=XXX]
When building the ncurses library, organize this as two parts: the
curses library (libncurses) and the low-level terminfo library
@ -1023,6 +1182,10 @@ SUMMARY OF CONFIGURE OPTIONS:
Specify a search-list of termcap files which will be compiled into the
ncurses library (default: /etc/termcap:/usr/share/misc/termcap)
--with-tic-path[=XXX]
Use this option to override the automatic detection of tic in your
$PATH when building fallbacks (see "--with-fallbacks").
--with-ticlib[=XXX]
When building the ncurses library, build a separate library for
the modules that are used only by the utility programs. Normally
@ -1051,18 +1214,41 @@ SUMMARY OF CONFIGURE OPTIONS:
Configure the trace() function as part of the all models of the ncurses
library. Normally it is part of the debug (libncurses_g) library only.
--with-xterm-kbs=XXX
Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII
backspace) or DEL (^?, or 127). XXX can be BS (or bs, 8) or DEL
(or del, 127).
During installation, the makefile and scripts modifies the "xterm+kbs"
terminfo entry to use this setting.
--with-valgrind
For testing, compile with debug option.
This also sets the --disable-leaks option.
--with-versioned-syms[=XXX]
The Solaris, GNU and reportedly some other linkers (ld) accept a
"--version-script" option which tells the linker to annotate the
resulting objects with version identifiers.
Use "objdump -T" on a library to see the annotations.
The configure script attempts to automatically apply a suitable ".map"
file to provide this information for Linux. Solaris mapfiles differ:
a) comments are not accepted
b) wildcards are not accepted, except for a special case of "_*".
c) each symbol listed in the map file must exist in the library
The Solaris limitations conflict with the development goal of providing
a small set of ".map" files as examples, which cover the most common
configurations. Because that coverage is done by merging together
several builds, some symbols will be listed in the the ".map" files
that do not happen to be present in one configuration or another.
The sample ".map" (and ".sym") files are generated using a set of
scripts which build several configurations for each release version,
checking to see which of the "_nc_" symbols can be made local. In
addition to the ncurses libraries and programs, the symbols used
by the "tack" program before version 1.08 are made global.
These sample ".map" files will not cover all possible combinations.
In some cases, e.g., when using the --with-weak-symbols option, you
may prefer to use a different ".map" file by setting this option's
value.
--with-wrap-prefix=XXX
When using the --enable-reentrant option, ncurses redefines variables
that would be global in curses, e.g., LINES, as a macro that calls a
@ -1074,6 +1260,19 @@ SUMMARY OF CONFIGURE OPTIONS:
which applications should not call even via a macro. This configure
option lets you choose the prefix for these wrapped variables.
--with-x11-rgb=FILE
Provide a pathname for the X11 rgb file, used by the picsmap program.
This overrides a configure check which usually works, but is needed
due to the lack of standardization for X11's files.
--with-xterm-kbs=XXX
Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII
backspace) or DEL (^?, or 127). XXX can be BS (or bs, 8) or DEL
(or del, 127).
During installation, the makefile and scripts modifies the "xterm+kbs"
terminfo entry to use this setting.
--without-ada
Suppress the configure script's check for Ada95, do not build the
Ada95 binding and related demo.
@ -1113,6 +1312,11 @@ SUMMARY OF CONFIGURE OPTIONS:
programs (e.g., tic). The test applications will still be built if you
type "make", though not if you simply do "make install".
--without-tack
Suppress build/install with tack program, if it happens to be
in the same build-tree (tack was moved out of the ncurses source-tree
in 20070203).
--without-tests
Tell the configure script to suppress the build of ncurses' test
programs.
@ -1126,18 +1330,147 @@ SUMMARY OF CONFIGURE OPTIONS:
COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
--------------------------------------------
Because ncurses implements the X/Open Curses Specification, its interface
is fairly stable. That does not mean the interface does not change.
Changes are made to the documented interfaces when we find differences
between ncurses and X/Open or implementations which they certify (such as
Solaris). We add extensions to those interfaces to solve problems not
addressed by the original curses design, but those must not conflict with
the X/Open documentation.
Because ncurses implements X/Open Curses, its interface is fairly stable.
That does not mean the interface does not change. Changes are made to the
documented interfaces when we find differences between ncurses and X/Open
or implementations which largely correspond to X/Open (such as Solaris).
We add extensions to those interfaces to solve problems not addressed by
the original curses design, but those must not conflict with the X/Open
documentation.
Here are some of the major interface changes, and related problems which
you may encounter when building a system with different versions of
ncurses:
6.1 (Jan 27, 2018)
Interface changes:
+ X/Open Curses specifies a "reserved" void* parameter in several
functions, saying that it must be NULL. In this release, if the
parameter is non-NULL, it is interpreted as a point to an integer
containing a color pair. In previous releases, a non-NULL parameter
caused an error return. Portable applications are unaffected. Here
are the functions which have been extended:
attr_get
attr_off
attr_on
attr_set
chgat
color_set
mvchgat
mvwchgat
slk_attr_off
slk_attr_on
slk_attr_set
wattr_get
wattr_on
wattr_off
wattr_set
wchgat
wcolor_set
+ the TERMINAL structure declared in <term.h> has been made opaque,
and its size increased to handle the increased size of color pair
and color value, as well as other numeric capabilities.
A few applications required change, e.g., to use def_prog_mode;
only one application (tack) is known to have a valid reason for
accessing these internal details, and that was addressed by the
release of tack 1.08 in 2017. Internal functions marked as used
by tack will be deprecated in future releases.
Added extensions:
+ Several new functions were added to manipulate extended color pairs
and color values. These include:
alloc_pair
extended_color_content
extended_pair_content
extended_slk_color
find_pair
free_pair
init_extended_color
init_extended_pair
reset_color_pairs
as well as corresponding sp-functions.
+ A new terminfo capability "RGB" tells the ncurses library that the
color values are red/green/blue, to eliminate the need for palettes
in that special case for the color_content function.
Added internal functions (other than "_sp" variants):
_nc_copy_termtype2
_nc_export_termtype2
_nc_fallback2
_nc_find_prescr
_nc_forget_prescr
_nc_free_termtype2
_nc_read_entry2
_nc_write_object
Removed internal functions:
_nc_check_termtype
_nc_resolve_uses
Modified internal functions:
+ symbols are used by tic/infocmp/toe:
_nc_align_termtype - change parameters to TERMTYPE2*
_nc_check_termtype2 - change parameter to TERMTYPE2*
_nc_read_file_entry - change parameter to TERMTYPE2*
_nc_read_termtype - change parameter to TERMTYPE2*
_nc_trim_sgr0 - change parameter to TERMTYPE2*
_nc_write_entry - change parameter to TERMTYPE2*
+ symbols used only within the library:
_nc_fallback - change return type to TERMTYPE2*
_nc_init_termtype - change parameter to TERMTYPE2*
6.0 (Aug 08, 2015)
Interface changes:
+ The 6.0 ABI modifies the defaults for these configure options:
--enable-const
--enable-ext-colors
--enable-ext-mouse
--enable-ext-putwin
--enable-interop
--enable-lp64
--enable-sp-funcs
--with-chtype=uint32_t
--with-mmask_t=uint32_t
--with-tparm-arg=intptr_t
+ ncurses supports symbol versioning. If you use this feature, about
half of the "_nc_" private symbols are changed to local symbols.
+ a few applications may need to explicitly flush the standard output
when switching between printf's and (curses) printw.
Added extensions:
+ use_tioctl is an improvement over use_env
+ added wgetdelay to support the NCURSES_OPAQUE feature.
Added internal functions (other than "_sp" variants):
_nc_init_termtype
_nc_mvcur
_nc_putchar
_nc_setenv_num
_nc_trace_mmask_t
Removed internal functions:
none
Modified internal functions:
_nc_do_color - change parameters from short/bool to int
_nc_keypad - change parameter from bool to int
_nc_setupscreen - change parameter from bool to int
_nc_signal_handler - change parameter from bool to int
5.9 (Apr 04, 2011)
5.8 (Feb 26, 2011)
Interface changes:
@ -1688,9 +2021,10 @@ IF YOU ARE A SYSTEM INTEGRATOR:
Configuration and Installation:
On platforms where ncurses is assumed to be installed in /usr/lib,
the configure script uses "/usr" as a default:
the configure script uses "/usr" as a default. These include any
that use the Linux kernel, as well as these special cases:
GNU/Linux, FreeBSD, NetBSD, OpenBSD, Cygwin
FreeBSD, NetBSD, OpenBSD, Cygwin, MinGW
For other platforms, the default is "/usr/local". See the discussion
of the "--disable-overwrite" option.
@ -1799,9 +2133,10 @@ CONFIGURING FALLBACK ENTRIES:
$TERMINFO \
../misc/terminfo.src \
`which tic` \
`which infocmp` \
linux vt100 xterm >fallback.c
The first three parameters of the script are normally supplied by
The first four parameters of the script are normally supplied by
the configured makefiles via the "--with-fallbacks" option. They
are
@ -1809,6 +2144,8 @@ CONFIGURING FALLBACK ENTRIES:
2) the source for the terminfo entries
3) the location of the tic program, used to create a terminfo
database.
4) the location of the infocmp program, used to print a terminfo
description.
Then just rebuild and reinstall the library as you would normally.
You can restore the default empty fallback list with
@ -1817,10 +2154,11 @@ CONFIGURING FALLBACK ENTRIES:
$TERMINFO \
../misc/terminfo.src \
`which tic` \
`which infocmp` \
>fallback.c
The overhead for an empty fallback list is one trivial stub function.
Any non-empty fallback list is const-ed and therefore lives in sharable
Any non-empty fallback list is const'd and therefore lives in shareable
text space. You can look at the comment trailing each initializer in
the generated ncurses/fallback.c file to see the core cost of the
fallbacks. A good rule of thumb for modern vt100-like entries is that
@ -1851,11 +2189,10 @@ installation), there are a couple of details you need to be aware of.
They have to do with the ncurses library, which uses terminfo rather
than termcap for describing terminal characteristics.
Though the ncurses library is terminfo-based, it will interpret your
Though the ncurses library is terminfo-based, it can interpret your
TERMCAP variable (if present), any local termcap files you reference
through it, and the system termcap file. However, in order to avoid
slowing down your application startup, it will only do this once per
terminal type!
through it, and the system termcap file. However, to avoid slowing
down your application startup, it does this only once per terminal type!
The first time you load a given terminal type from your termcap
database, the library initialization code will automatically write it
@ -1914,7 +2251,7 @@ USING NCURSES WITH GPM:
but the linker may not cooperate, producing mysterious errors.
See the FAQ, as well as the discussion under the --with-gpm option:
http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
https://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib
BUILDING NCURSES WITH A CROSS-COMPILER
Ncurses can be built with a cross-compiler. Some parts must be built

View File

@ -94,7 +94,7 @@
./Ada95/samples/sample-curses_demo-mouse.ads
./Ada95/samples/sample-curses_demo.adb
./Ada95/samples/sample-curses_demo.ads
./Ada95/samples/sample-explanation.adb
./Ada95/samples/sample-explanation.adb_p
./Ada95/samples/sample-explanation.ads
./Ada95/samples/sample-form_demo-aux.adb
./Ada95/samples/sample-form_demo-aux.ads
@ -128,9 +128,12 @@
./Ada95/samples/tour.adb
./Ada95/samples/tour.ads
./Ada95/src/Makefile.in
./Ada95/src/c_threaded_variables.c
./Ada95/src/c_threaded_variables.h
./Ada95/src/c_varargs_to_ada.c
./Ada95/src/c_varargs_to_ada.h
./Ada95/src/library.gpr
./Ada95/src/library-cfg.sh
./Ada95/src/library.gpr.in
./Ada95/src/modules
./Ada95/src/ncurses_compat.c
./Ada95/src/terminal_interface-curses-aux.adb
@ -200,6 +203,7 @@
./README.MinGW
./README.emx
./TO-DO
./VERSION
./aclocal.m4
./announce.html.in
./c++/Makefile.in
@ -333,11 +337,12 @@
./doc/html/ada/terminal_interface-curses-trace__ads.htm
./doc/html/ada/terminal_interface-curses__adb.htm
./doc/html/ada/terminal_interface-curses__ads.htm
./doc/html/ada/terminal_interface-curses_constants__ads.htm
./doc/html/ada/terminal_interface__ads.htm
./doc/html/announce.html
./doc/html/hackguide.html
./doc/html/index.html
./doc/html/man/adacurses-config.1.html
./doc/html/man/adacurses6-config.1.html
./doc/html/man/captoinfo.1m.html
./doc/html/man/clear.1.html
./doc/html/man/curs_add_wch.3x.html
@ -458,9 +463,11 @@
./doc/html/man/mitem_value.3x.html
./doc/html/man/mitem_visible.3x.html
./doc/html/man/ncurses.3x.html
./doc/html/man/ncurses5-config.1.html
./doc/html/man/ncurses6-config.1.html
./doc/html/man/new_pair.3x.html
./doc/html/man/panel.3x.html
./doc/html/man/resizeterm.3x.html
./doc/html/man/scr_dump.5.html
./doc/html/man/tabs.1.html
./doc/html/man/term.5.html
./doc/html/man/term.7.html
@ -470,6 +477,7 @@
./doc/html/man/toe.1m.html
./doc/html/man/tput.1.html
./doc/html/man/tset.1.html
./doc/html/man/user_caps.5.html
./doc/html/man/wresize.3x.html
./doc/html/ncurses-intro.html
./doc/ncurses-intro.doc
@ -525,6 +533,7 @@
./form/llib-lformw
./form/modules
./include/Caps
./include/Caps-ncurses
./include/Caps.aix4
./include/Caps.hpux11
./include/Caps.keys
@ -686,8 +695,10 @@
./man/mitem_value.3x
./man/mitem_visible.3x
./man/ncurses.3x
./man/new_pair.3x
./man/panel.3x
./man/resizeterm.3x
./man/scr_dump.5
./man/tabs.1
./man/term.5
./man/term.7
@ -698,6 +709,7 @@
./man/toe.1m
./man/tput.1
./man/tset.1
./man/user_caps.5
./man/wresize.3x
./menu/Makefile.in
./menu/READ.ME
@ -748,6 +760,7 @@
./misc/form.ref
./misc/gen-pkgconfig.in
./misc/gen_edit.sh
./misc/magic
./misc/makedef.cmd
./misc/makellib
./misc/menu.def
@ -855,6 +868,7 @@
./ncurses/base/lib_winch.c
./ncurses/base/lib_window.c
./ncurses/base/nc_panel.c
./ncurses/base/new_pair.c
./ncurses/base/resizeterm.c
./ncurses/base/safe_sprintf.c
./ncurses/base/sigaction.c
@ -879,12 +893,15 @@
./ncurses/llib-ltinfotw
./ncurses/llib-ltinfow
./ncurses/modules
./ncurses/new_pair.h
./ncurses/report_offsets.c
./ncurses/tinfo/MKcaptab.awk
./ncurses/tinfo/MKcaptab.sh
./ncurses/tinfo/MKcodes.awk
./ncurses/tinfo/MKfallback.sh
./ncurses/tinfo/MKkeys_list.sh
./ncurses/tinfo/MKnames.awk
./ncurses/tinfo/MKuserdefs.sh
./ncurses/tinfo/README
./ncurses/tinfo/access.c
./ncurses/tinfo/add_tries.c
@ -984,6 +1001,7 @@
./package/debian-mingw/compat
./package/debian-mingw/control
./package/debian-mingw/copyright
./package/debian-mingw/mingw32-ncurses6.lintian-overrides
./package/debian-mingw/rules
./package/debian-mingw/source/format
./package/debian-mingw/watch
@ -991,6 +1009,7 @@
./package/debian-mingw64/compat
./package/debian-mingw64/control
./package/debian-mingw64/copyright
./package/debian-mingw64/mingw64-ncurses6.lintian-overrides
./package/debian-mingw64/rules
./package/debian-mingw64/source/format
./package/debian-mingw64/watch
@ -998,12 +1017,25 @@
./package/debian/compat
./package/debian/control
./package/debian/copyright
./package/debian/ncurses6.lintian-overrides
./package/debian/ncurses6.triggers
./package/debian/ncursest6.lintian-overrides
./package/debian/ncursest6.triggers
./package/debian/rules
./package/debian/source/format
./package/debian/watch
./package/mingw-ncurses.nsi
./package/mingw-ncurses.spec
./package/ncurses.map
./package/ncurses.spec
./package/ncurses.sym
./package/ncursest.map
./package/ncursest.spec
./package/ncursest.sym
./package/ncursestw.map
./package/ncursestw.sym
./package/ncursesw.map
./package/ncursesw.sym
./panel/Makefile.in
./panel/headers
./panel/llib-lpanel
@ -1033,17 +1065,25 @@
./progs/capconvert
./progs/clear.c
./progs/clear.sh
./progs/clear_cmd.c
./progs/clear_cmd.h
./progs/dump_entry.c
./progs/dump_entry.h
./progs/infocmp.c
./progs/modules
./progs/progs.priv.h
./progs/reset_cmd.c
./progs/reset_cmd.h
./progs/tabs.c
./progs/tic.c
./progs/toe.c
./progs/tparm_type.c
./progs/tparm_type.h
./progs/tput.c
./progs/transform.c
./progs/tset.c
./progs/tty_settings.c
./progs/tty_settings.h
./test/Makefile.in
./test/README
./test/aclocal.m4
@ -1051,11 +1091,13 @@
./test/blue.c
./test/bs.6
./test/bs.c
./test/bulgarian-utf8-tabs.txt
./test/bulgarian-utf8.txt
./test/cardfile.c
./test/cardfile.dat
./test/chgat.c
./test/clip_printw.c
./test/color_content.c
./test/color_name.h
./test/color_set.c
./test/configure
@ -1066,16 +1108,24 @@
./test/demo_forms.txt
./test/demo_keyok.c
./test/demo_menus.c
./test/demo_new_pair.c
./test/demo_panels.c
./test/demo_tabs.c
./test/demo_termcap.c
./test/demo_terminfo.c
./test/ditto.c
./test/dots.c
./test/dots_curses.c
./test/dots_mvcur.c
./test/dots_termcap.c
./test/dots_xcurses.c
./test/dump_window.c
./test/dump_window.h
./test/echochar.c
./test/edit_field.c
./test/edit_field.h
./test/escherknot.xbm
./test/extended_color.c
./test/filter.c
./test/firework.c
./test/firstlast.c
@ -1095,15 +1145,32 @@
./test/knight.c
./test/linedata.h
./test/linux-color.dat
./test/list_keys.c
./test/listused.sh
./test/lrtest.c
./test/make-tar.sh
./test/mensetmanus.xbm
./test/mini.xterm_48x48.xpm
./test/mk-test.awk
./test/modules
./test/movewindow.c
./test/ncurses.c
./test/ncurses_tst.hin
./test/newdemo.c
./test/package/debian-mingw/compat
./test/package/debian-mingw/control
./test/package/debian-mingw/copyright
./test/package/debian-mingw/docs
./test/package/debian-mingw/rules
./test/package/debian-mingw/source/format
./test/package/debian-mingw/watch
./test/package/debian-mingw64/compat
./test/package/debian-mingw64/control
./test/package/debian-mingw64/copyright
./test/package/debian-mingw64/docs
./test/package/debian-mingw64/rules
./test/package/debian-mingw64/source/format
./test/package/debian-mingw64/watch
./test/package/debian/compat
./test/package/debian/control
./test/package/debian/copyright
@ -1113,13 +1180,22 @@
./test/package/debian/watch
./test/package/mingw-ncurses-examples.spec
./test/package/ncurses-examples.spec
./test/padview.c
./test/pair_content.c
./test/parse_rgb.h
./test/picsmap.c
./test/picsmap.h
./test/popup_msg.c
./test/popup_msg.h
./test/programs
./test/railroad.c
./test/rain.c
./test/redraw.c
./test/savescreen.c
./test/savescreen.sh
./test/sp_tinfo.c
./test/tclock.c
./test/terminal.xbm
./test/test.priv.h
./test/test_add_wchstr.c
./test/test_addchstr.c
@ -1131,13 +1207,19 @@
./test/test_instr.c
./test/test_inwstr.c
./test/test_opaque.c
./test/test_setupterm.c
./test/test_sgr.c
./test/test_termattrs.c
./test/test_vid_puts.c
./test/test_vidputs.c
./test/testaddch.c
./test/testcurs.c
./test/testscanw.c
./test/tput-colorcube
./test/tput-initc
./test/tracemunch
./test/view.c
./test/widechars-utf8-tabs.txt
./test/widechars-utf8.txt
./test/widechars.h
./test/worm.c
@ -1145,3 +1227,4 @@
./test/xterm-16color.dat
./test/xterm-256color.dat
./test/xterm-88color.dat
./test/xterm-color_48x48.xpm

View File

@ -1,6 +1,6 @@
# $Id: Makefile.in,v 1.38 2014/01/18 20:19:45 tom Exp $
# $Id: Makefile.in,v 1.42 2019/01/06 00:35:11 tom Exp $
##############################################################################
# Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. #
# Copyright (c) 1998-2018,2019 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"), #
@ -31,7 +31,7 @@
#
# Master Makefile for ncurses library.
SHELL = /bin/sh
SHELL = @SHELL@
VPATH = @srcdir@
DESTDIR=@DESTDIR@
@ -57,6 +57,7 @@ includedir = @includedir@
includesubdir = @includesubdir@
libdir = @libdir@
mandir = @mandir@
pkgdir = @PKG_CONFIG_LIBDIR@
include_dir = ${includedir}${includesubdir}
@ -74,14 +75,16 @@ preinstall :
@ echo ''
@ echo '** Configuration summary for NCURSES $(NCURSES_MAJOR).$(NCURSES_MINOR) $(NCURSES_PATCH):'
@ echo ''
@ echo ' extended funcs: '`test @NCURSES_EXT_FUNCS@ != 0 && echo yes || echo no`
@ echo ' xterm terminfo: '@WHICH_XTERM@
@ echo ' extended funcs: '`test @NCURSES_EXT_FUNCS@ != 0 && echo yes || echo no`
@ echo ' xterm terminfo: '@WHICH_XTERM@
@ echo ''
@ echo ' bin directory: '$(bindir)
@ echo ' lib directory: '$(libdir)
@ echo ' include directory: '$(include_dir)
@ echo ' man directory: '$(mandir)
@MAKE_TERMINFO@ @ echo ' terminfo directory: '$(ticdir)
@ echo ' bin directory: '$(bindir)
@ echo ' lib directory: '$(libdir)
@ echo ' include directory: '$(include_dir)
@ echo ' man directory: '$(mandir)
@MAKE_TERMINFO@ @ echo ' terminfo directory: '$(ticdir)
@USE_FALLBACKS@ @ echo ' using fallback-list: '@FALLBACK_LIST@
@MAKE_PC_FILES@ @ echo ' pkg-config directory: '$(pkgdir)
@ echo ''
@ test "$(include_dir)" = "$(prefix)/include" || \
echo '** Include-directory is not in a standard location'
@ -95,6 +98,9 @@ preinstall :
distclean \
realclean ::
check:
@ echo The test-programs are interactive
# Put the common rules here so that we can easily construct the list of
# directories to visit.

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
-- Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. --
-- Copyright (c) 1998-2012,2018 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 --
@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
-- $Id: README,v 1.25 2012/08/11 20:11:26 tom Exp $
-- $Id: README,v 1.27 2018/01/01 15:09:04 tom Exp $
-------------------------------------------------------------------------------
README file for the ncurses package
@ -161,7 +161,7 @@ Thomas Dickey (maintainer for 1.9.9g through 4.1, resuming with FSF's 5.0):
bug fixes -- more than half of those enumerated in NEWS beginning with
the internal release 1.8.9, see
http://invisible-island.net/personal/changelogs.html
https://invisible-island.net/personal/changelogs.html
Florian La Roche (official maintainer for FSF's ncurses 4.2)
Beginning with release 4.2, ncurses is distributed under an MIT-style

View File

@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
-- Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. --
-- Copyright (c) 1998-2006,2018 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 --
@ -25,7 +25,7 @@
-- 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 $
-- $Id: README.emx,v 1.10 2018/01/01 15:09:55 tom Exp $
-- Author: Thomas Dickey
-------------------------------------------------------------------------------
@ -43,8 +43,8 @@ the EMX development tools, of course. Get these programs to start:
Apply the autoconf patches from
http://invisible-island.net/autoconf
ftp://invisible-island.net/autoconf
https://invisible-island.net/autoconf
ftp://ftp.invisible-island.net/autoconf
These are ordered by date:

1
contrib/ncurses/VERSION Normal file
View File

@ -0,0 +1 @@
5:0:10 6.1 20200118

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

15258
contrib/ncurses/configure vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. #
# Copyright (c) 1998-2019,2020 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"), #
@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
# $Id: dist.mk,v 1.973 2014/02/22 16:55:12 tom Exp $
# $Id: dist.mk,v 1.1325 2020/01/18 10:27:03 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
@ -35,9 +35,9 @@
SHELL = /bin/sh
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 5
NCURSES_MINOR = 9
NCURSES_PATCH = 20140222
NCURSES_MAJOR = 6
NCURSES_MINOR = 1
NCURSES_PATCH = 20200118
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
@ -47,19 +47,19 @@ VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
# --without-manpage-renames
# on Debian/testing. The -scrollbar and -width options are used to make lynx
# use 79 columns as it did in 2.8.5 and before.
DUMP = lynx -dump -scrollbar=0 -width=79
DUMP = lynx -dump -scrollbar=0 -width=79 -display_charset=US-ASCII
DUMP2 = $(DUMP) -nolist
# gcc's file is "gnathtml.pl"
GNATHTML= gnathtml
# man2html 3.0.1 is a Perl script which assumes that pages are fixed size.
# man2html is a Perl script which assumes that pages are fixed size.
# Not all man programs agree with this assumption; some use half-spacing, which
# has the effect of lengthening the text portion of the page -- so man2html
# would remove some text. The man program on Redhat 6.1 appears to work with
# man2html if we set the top/bottom margins to 6 (the default is 7). Newer
# versions of 'man' leave no margin (and make it harder to sync with pages).
MAN2HTML= man2html -botm=0 -topm=0 -cgiurl '$$title.$$section$$subsection.html'
MAN2HTML= man2html -botm=0 -topm=0 -cgiurl '$$title.$$section$$subsection.html' -index
ALL = ANNOUNCE doc/html/announce.html doc/ncurses-intro.doc doc/hackguide.doc manhtml adahtml
@ -83,12 +83,6 @@ doc/ncurses-intro.doc: doc/html/ncurses-intro.html
doc/hackguide.doc: doc/html/hackguide.html
$(DUMP2) doc/html/hackguide.html > $@
# This is the original command:
# MANPROG = tbl | nroff -man
#
# This happens to work for groff 1.18.1 on Debian. At some point groff's
# maintainer changed the line-length (we do not want/need that here).
#
# The distributed html files are formatted using
# configure --without-manpage-renames
#
@ -96,7 +90,7 @@ doc/hackguide.doc: doc/html/hackguide.html
# If that conflicts with the --without-manpage-renames, you can install those
# in a different location using the --with-install-prefix option of the
# configure script.
MANPROG = tbl | nroff -mandoc -rLL=65n -rLT=71n -Tascii
MANPROG = tbl | nroff -mandoc -rLL=78n -rLT=78n -Tascii
manhtml:
@for f in doc/html/man/*.html; do \
@ -124,7 +118,7 @@ manhtml:
@echo 's/<\/I>/<\/EM>/g' >> subst.tmp
@misc/csort < subst.tmp | uniq > subst.sed
@echo '/<\/TITLE>/a\' >> subst.sed
@echo '<link rev=made href="mailto:bug-ncurses@gnu.org">\' >> subst.sed
@echo '<link rel="author" href="mailto:bug-ncurses@gnu.org">\' >> subst.sed
@echo '<meta http-equiv="Content-Type" content="text\/html; charset=iso-8859-1">' >> subst.sed
@rm -f subst.tmp
@for f in man/*.[0-9]* ; do \
@ -133,8 +127,7 @@ manhtml:
g=$${m}.html ;\
if [ -f doc/html/$$g ]; then chmod +w doc/html/$$g; fi;\
echo "Converting $$m to HTML" ;\
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">' > doc/html/man/$$g ;\
echo '<!-- ' >> doc/html/man/$$g ;\
echo '<!-- ' > doc/html/man/$$g ;\
egrep '^.\\"[^#]' $$f | \
sed -e 's/\$$/@/g' \
-e 's/^.../ */' \

View File

@ -111,7 +111,7 @@ How to Design Extensions
Our conventions are simple:
1. Maintain package-internal files in plain text. The expected viewer
for them more(1) or an editor window; there's no point in
for them more(1) or an editor window; there is no point in
elaborate mark-up.
2. Mark up manual pages in the man macros. These have to be viewable
through traditional man(1) programs.
@ -120,10 +120,10 @@ How to Design Extensions
When in doubt, HTMLize a master and use lynx(1) to generate plain
ASCII (as we do for the announcement document).
The reason for choosing HTML is that it's (a) well-adapted for on-line
browsing through viewers that are everywhere; (b) more easily readable
as plain text than most other mark-ups, if you don't have a viewer;
and (c) carries enough information that you can generate a
The reason for choosing HTML is that it is (a) well-adapted for
on-line browsing through viewers that are everywhere; (b) more easily
readable as plain text than most other mark-ups, if you do not have a
viewer; and (c) carries enough information that you can generate a
nice-looking printed version from it. Also, of course, it make
exporting things like the announcement document to WWW pretty trivial.
@ -135,16 +135,16 @@ How to Design Extensions
subscribe <name>@<host.domain>
The ncurses code is maintained by a small group of volunteers. While
we try our best to fix bugs promptly, we simply don't have a lot of
we try our best to fix bugs promptly, we simply do not have a lot of
hours to spend on elementary hand-holding. We rely on intelligent
cooperation from our users. If you think you have found a bug in
ncurses, there are some steps you can take before contacting us that
will help get the bug fixed quickly.
In order to use our bug-fixing time efficiently, we put people who
show us they've taken these steps at the head of our queue. This means
that if you don't, you'll probably end up at the tail end and have to
wait a while.
show us they have taken these steps at the head of our queue. This
means that if you do not, you will probably end up at the tail end and
have to wait a while.
1. Develop a recipe to reproduce the bug.
Bugs we can reproduce are likely to be fixed very quickly, often
within days. The most effective single thing you can do to get a
@ -155,17 +155,17 @@ How to Design Extensions
2. Try to reproduce the bug on a different terminal type.
In our experience, most of the behaviors people report as library
bugs are actually due to subtle problems in terminal descriptions.
This is especially likely to be true if you're using a traditional
asynchronous terminal or PC-based terminal emulator, rather than
xterm or a UNIX console entry.
It's therefore extremely helpful if you can tell us whether or not
your problem reproduces on other terminal types. Usually you'll
have both a console type and xterm available; please tell us
This is especially likely to be true if you are using a
traditional asynchronous terminal or PC-based terminal emulator,
rather than xterm or a UNIX console entry.
It is therefore extremely helpful if you can tell us whether or
not your problem reproduces on other terminal types. Usually you
will have both a console type and xterm available; please tell us
whether or not your bug reproduces on both.
If you have xterm available, it is also good to collect xterm
reports for different window sizes. This is especially true if you
normally use an unusual xterm window size -- a surprising number
of the bugs we've seen are either triggered or masked by these.
of the bugs we have seen are either triggered or masked by these.
3. Generate and examine a trace file for the broken behavior.
Recompile your program with the debugging versions of the
libraries. Insert a trace() call with the argument set to
@ -178,35 +178,35 @@ How to Design Extensions
tell you immediately if this is happening, and save you from the
possible embarrassment of being told that the bug is in your code
and is your problem rather than ours.
If the virtual-screen dumps look correct but the bug persists,
it's possible to crank up the trace level to give more and more
If the virtual-screen dumps look correct but the bug persists, it
is possible to crank up the trace level to give more and more
information about the library's update actions and the control
sequences it issues to perform them. The test directory of the
distribution contains a tool for digesting these logs to make them
less tedious to wade through.
Often you'll find terminfo problems at this stage by noticing that
the escape sequences put out for various capabilities are wrong.
If not, you're likely to learn enough to be able to characterize
any bug in the screen-update logic quite exactly.
Often you will find terminfo problems at this stage by noticing
that the escape sequences put out for various capabilities are
wrong. If not, you are likely to learn enough to be able to
characterize any bug in the screen-update logic quite exactly.
4. Report details and symptoms, not just interpretations.
If you do the preceding two steps, it is very likely that you'll
If you do the preceding two steps, it is very likely that you will
discover the nature of the problem yourself and be able to send us
a fix. This will create happy feelings all around and earn you
good karma for the first time you run into a bug you really can't
good karma for the first time you run into a bug you really cannot
characterize and fix yourself.
If you're still stuck, at least you'll know what to tell us.
If you are still stuck, at least you will know what to tell us.
Remember, we need details. If you guess about what is safe to
leave out, you are too likely to be wrong.
If your bug produces a bad update, include a trace file. Try to
make the trace at the least voluminous level that pins down the
bug. Logs that have been through tracemunch are OK, it doesn't
throw away any information (actually they're better than
un-munched ones because they're easier to read).
bug. Logs that have been through tracemunch are OK, it does not
throw away any information (actually they are better than
un-munched ones because they are easier to read).
If your bug produces a core-dump, please include a symbolic stack
trace generated by gdb(1) or your local equivalent.
Tell us about every terminal on which you've reproduced the bug --
and every terminal on which you can't. Ideally, sent us terminfo
sources for all of these (yours might differ from ours).
Tell us about every terminal on which you have reproduced the bug
-- and every terminal on which you cannot. Ideally, send us
terminfo sources for all of these (yours might differ from ours).
Include your ncurses version and your OS/machine type, of course!
You can find your ncurses version in the curses.h file.
@ -219,8 +219,8 @@ How to Design Extensions
The most important of these is mvcur, a test frame for the
cursor-movement optimization code. With this program, you can see
directly what control sequences will be emitted for any given cursor
movement or scroll/insert/delete operations. If you think you've got a
bad capability identified, you can disable it and test again. The
movement or scroll/insert/delete operations. If you think you have got
a bad capability identified, you can disable it and test again. The
program is command-driven and has on-line help.
If you think the vertical-scroll optimization is broken, or just want
@ -290,8 +290,9 @@ Library Overview
lib_mouse.c lib_mvcur.c lib_refresh.c lib_setup.c lib_vidattr.c
Most of the algorithmic complexity in the library lives in these
files. If there is a real bug in ncurses itself, it's probably here.
We'll tour some of these files in detail below (see The Engine Room).
files. If there is a real bug in ncurses itself, it is probably here.
We will tour some of these files in detail below (see The Engine
Room).
Finally, there is a group of files that is actually most of the
terminfo compiler. The reason this code lives in the ncurses library
@ -300,7 +301,7 @@ Library Overview
alloc_entry.c captoinfo.c comp_captab.c comp_error.c comp_hash.c
comp_parse.c comp_scan.c parse_entry.c read_termcap.c write_entry.c
We'll discuss these in the compiler tour.
We will discuss these in the compiler tour.
The Engine Room
@ -323,8 +324,9 @@ The Engine Room
Hackers bruised by previous encounters with variant select(2) calls
may find the code in lib_twait.c interesting. It deals with the
problem that some BSD selects don't return a reliable time-left value.
The function timed_wait() effectively simulates a System V select.
problem that some BSD selects do not return a reliable time-left
value. The function timed_wait() effectively simulates a System V
select.
Mouse Events
@ -341,19 +343,19 @@ The Engine Room
to imply having the prefix somewhere in the function-key capabilities
at terminal-type initialization.
This kluge only works because kmous isn't actually used by any
This kluge only works because kmous is not actually used by any
historic terminal type or curses implementation we know of. Best guess
is it's a relic of some forgotten experiment in-house at Bell Labs
that didn't leave any traces in the publicly-distributed System V
is it is a relic of some forgotten experiment in-house at Bell Labs
that did not leave any traces in the publicly-distributed System V
terminfo files. If System V or XPG4 ever gets serious about using it
again, this kluge may have to change.
Here are some more details about mouse event handling:
The lib_mouse()code is logically split into a lower level that accepts
event reports in a device-dependent format and an upper level that
parses mouse gestures and filters events. The mediating data structure
is a circular queue of event structures.
The lib_mouse() code is logically split into a lower level that
accepts event reports in a device-dependent format and an upper level
that parses mouse gestures and filters events. The mediating data
structure is a circular queue of event structures.
Functionally, the lower level's job is to pick up primitive events and
put them on the circular queue. This can happen in one of two ways:
@ -380,24 +382,23 @@ The Engine Room
The brains of this operation are the modules hashmap.c, hardscroll.c
and lib_doupdate.c; the latter two use lib_mvcur.c. Essentially, what
happens looks like this:
The hashmap.c module tries to detect vertical motion changes between
the real and virtual screens. This information is represented by the
oldindex members in the newscr structure. These are modified by
vertical-motion and clear operations, and both are re-initialized
after each update. To this change-journalling information, the hashmap
code adds deductions made using a modified Heckel algorithm on hash
values generated from the line contents.
The hardscroll.c module computes an optimum set of scroll, insertion,
and deletion operations to make the indices match. It calls
_nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
Then lib_doupdate.c goes to work. Its job is to do line-by-line
transformations of curscr lines to newscr lines. Its main tool is the
routine mvcur() in lib_mvcur.c. This routine does cursor-movement
optimization, attempting to get from given screen location A to given
location B in the fewest output characters possible.
* The hashmap.c module tries to detect vertical motion changes
between the real and virtual screens. This information is
represented by the oldindex members in the newscr structure. These
are modified by vertical-motion and clear operations, and both are
re-initialized after each update. To this change-journalling
information, the hashmap code adds deductions made using a
modified Heckel algorithm on hash values generated from the line
contents.
* The hardscroll.c module computes an optimum set of scroll,
insertion, and deletion operations to make the indices match. It
calls _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
* Then lib_doupdate.c goes to work. Its job is to do line-by-line
transformations of curscr lines to newscr lines. Its main tool is
the routine mvcur() in lib_mvcur.c. This routine does
cursor-movement optimization, attempting to get from given screen
location A to given location B in the fewest output characters
possible.
If you want to work on screen optimizations, you should use the fact
that (in the trace-enabled version of the library) enabling the
@ -419,7 +420,7 @@ The Engine Room
TYPE_REGEXP will recognize.
The configuration code prefers the POSIX regex facility, modeled on
System V's, but will settle for BSD regexps if the former isn't
System V's, but will settle for BSD regexps if the former is not
available.
Historical note: the panels code was written primarily to assist in
@ -437,7 +438,7 @@ The Engine Room
The implementation therefore starts with a table-driven, dual-mode
lexical analyzer (in comp_scan.c). The lexer chooses its mode (termcap
or terminfo) based on the first `,' or `:' it finds in each entry. The
or terminfo) based on the first "," or ":" it finds in each entry. The
lexer does all the work of recognizing capability names and values;
the grammar above it is trivial, just "parse entries till you run out
of file".
@ -460,23 +461,23 @@ Translation of Non-use Capabilities
shareable text space).
Thus, adding a new capability is usually pretty trivial, just a matter
of adding one line to the include/Caps file. We'll have more to say
of adding one line to the include/Caps file. We will have more to say
about this in the section on Source-Form Translation.
Use Capability Resolution
The background problem that makes tic tricky isn't the capability
translation itself, it's the resolution of use capabilities. Older
The background problem that makes tic tricky is not the capability
translation itself, it is the resolution of use capabilities. Older
versions would not handle forward use references for this reason (that
is, a using terminal always had to follow its use target in the source
file). By doing this, they got away with a simple implementation
tactic; compile everything as it blows by, then resolve uses from
compiled entries.
This won't do for ncurses. The problem is that that the whole
This will not do for ncurses. The problem is that that the whole
compilation process has to be embeddable in the ncurses library so
that it can be called by the startup code to translate termcap entries
on the fly. The embedded version can't go promiscuously writing
on the fly. The embedded version cannot go promiscuously writing
everything it translates out to disk -- for one thing, it will
typically be running with non-root permissions.
@ -485,7 +486,7 @@ Use Capability Resolution
use resolution in-memory before writing everything out. This design
has other advantages: it makes forward and back use-references equally
easy (so we get the latter for free), and it makes checking for name
collisions before they're written out easy to do.
collisions before they are written out easy to do.
And this is exactly how the embedded version works. But the
stand-alone user-accessible version of tic partly reverts to the
@ -502,8 +503,8 @@ Use Capability Resolution
writes out the referenced entry if it has no use capabilities. The
compiler main loop refrains from adding the entry to the in-core list
when this hook fires. If some other entry later needs to reference an
entry that got written immediately, that's OK; the resolution code
will fetch it off disk when it can't find it in core.
entry that got written immediately, that is OK; the resolution code
will fetch it off disk when it cannot find it in core.
Name collisions will still be detected, just not as cleanly. The
write_entry() code complains before overwriting an entry that
@ -525,9 +526,9 @@ Source-Form Translation
The include/Caps file has a header comment describing ways you can
specify source translations for nonstandard capabilities just by
altering the master table. It's possible to set up capability aliasing
or tell the compiler to plain ignore a given capability without
writing any C code at all.
altering the master table. It is possible to set up capability
aliasing or tell the compiler to plain ignore a given capability
without writing any C code at all.
For circumstances where you need to do algorithmic translation, there
are functions in parse_entry.c called after the parse of each entry
@ -563,14 +564,14 @@ Source-Form Translation
Look for the string FIXME in source files to tag minor bugs and
potential problems that could use fixing.
Don't try to auto-detect OS features in the main body of the C code.
That's the job of the configuration system.
Do not try to auto-detect OS features in the main body of the C code.
That is the job of the configuration system.
To hold down complexity, do make your code data-driven. Especially, if
you can drive logic from a table filtered out of include/Caps, do it.
If you find you need to augment the data in that file in order to
generate the proper table, that's still preferable to ad-hoc code --
that's why the fifth field (flags) is there.
generate the proper table, that is still preferable to ad-hoc code --
that is why the fifth field (flags) is there.
Have fun!
@ -579,7 +580,7 @@ Source-Form Translation
The following notes are intended to be a first step towards DOS and
Macintosh ports of the ncurses libraries.
The following library modules are `pure curses'; they operate only on
The following library modules are "pure curses"; they operate only on
the curses internal structures, do all output through other curses
calls (not including tputs() and putp()) and do not call any other
UNIX routines such as signal(2) or the stdio library. Thus, they
@ -626,7 +627,7 @@ Source-Form Translation
Modules that would have to be modified for a port start here:
The following modules are `pure curses' but contain assumptions
The following modules are "pure curses" but contain assumptions
inappropriate for a memory-mapped port.
lib_longname.c

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -132,20 +132,36 @@
A Brief History of Curses
Historically, the first ancestor of curses was the routines written to
provide screen-handling for the game rogue; these used the
already-existing termcap database facility for describing terminal
provide screen-handling for the vi editor; these used the termcap
database facility (both released in 3BSD) for describing terminal
capabilities. These routines were abstracted into a documented library
and first released with the early BSD UNIX versions.
and first released with the early BSD UNIX versions. All of this work
was done by students at the University of California (Berkeley
campus). The curses library was first published in 4.0BSD, a year
after 3BSD (i.e., late 1980).
System III UNIX from Bell Labs featured a rewritten and much-improved
curses library. It introduced the terminfo format. Terminfo is based
on Berkeley's termcap database, but contains a number of improvements
and extensions. Parameterized capabilities strings were introduced,
making it possible to describe multiple video attributes, and colors
and to handle far more unusual terminals than possible with termcap.
In the later AT&T System V releases, curses evolved to use more
facilities and offer more capabilities, going far beyond BSD curses in
power and flexibility.
After graduation, one of those students went to work at AT&T Bell
Labs, and made an improved termcap library called terminfo (i.e.,
"libterm"), and adapted the curses library to use this. That was
subsequently released in System V Release 2 (early 1984). Thereafter,
other developers added to the curses and terminfo libraries. For
instance, a student at Cornell University wrote an improved terminfo
library as well as a tool (tic) to compile the terminal descriptions.
As a general rule, AT&T did not identify the developers in the
source-code or documentation; the tic and infocmp programs are the
exceptions.
System V Release 3 (System III UNIX) from Bell Labs featured a
rewritten and much-improved curses library, along with the tic program
(late 1986).
To recap, terminfo is based on Berkeley's termcap database, but
contains a number of improvements and extensions. Parameterized
capabilities strings were introduced, making it possible to describe
multiple video attributes, and colors and to handle far more unusual
terminals than possible with termcap. In the later AT&T System V
releases, curses evolved to use more facilities and offer more
capabilities, going far beyond BSD curses in power and flexibility.
Scope of This Document
@ -153,7 +169,7 @@ Scope of This Document
curses API with some clearly marked extensions. It includes the
following System V curses features:
* Support for multiple screen highlights (BSD curses could only
handle one `standout' highlight, usually reverse-video).
handle one "standout" highlight, usually reverse-video).
* Support for line- and box-drawing using forms characters.
* Recognition of function keys on input.
* Color support.
@ -164,7 +180,7 @@ Scope of This Document
character features of terminals so equipped, and determines how to
optimally use these features with no help from the programmer. It
allows arbitrary combinations of video attributes to be displayed,
even on terminals that leave ``magic cookies'' on the screen to mark
even on terminals that leave "magic cookies" on the screen to mark
changes in attributes.
The ncurses package can also capture and use event reports from a
@ -242,8 +258,8 @@ An Overview of Curses
standard screen) is provided by default to make changes on.
A window is a purely internal representation. It is used to build and
store a potential image of a portion of the terminal. It doesn't bear
any necessary relation to what is really on the terminal screen; it's
store a potential image of a portion of the terminal. It does not bear
any necessary relation to what is really on the terminal screen; it is
more like a scratchpad or write buffer.
To make the section of physical screen corresponding to a window
@ -253,7 +269,7 @@ An Overview of Curses
A given physical screen section may be within the scope of any number
of overlapping windows. Also, changes can be made to windows in any
order, without regard to motion efficiency. Then, at will, the
programmer can effectively say ``make it look like this,'' and let the
programmer can effectively say "make it look like this," and let the
package implementation determine the most efficient way to repaint the
screen.
@ -269,8 +285,8 @@ An Overview of Curses
Many functions are defined to use stdscr as a default screen. For
example, to add a character to stdscr, one calls addch() with the
desired character as argument. To write to a different window. use the
routine waddch() (for `w'indow-specific addch()) is provided. This
convention of prepending function names with a `w' when they are to be
routine waddch() (for window-specific addch()) is provided. This
convention of prepending function names with a "w" when they are to be
applied to specific windows is consistent. The only routines which do
not follow it are those for which a window must always be specified.
@ -278,7 +294,7 @@ An Overview of Curses
another, the routines move() and wmove() are provided. However, it is
often desirable to first move and then perform some I/O operation. In
order to avoid clumsiness, most I/O routines can be preceded by the
prefix 'mv' and the desired (y, x) coordinates prepended to the
prefix "mv" and the desired (y, x) coordinates prepended to the
arguments to the function. For example, the calls
move(y, x);
addch(ch);
@ -310,13 +326,13 @@ An Overview of Curses
general usefulness:
bool
boolean type, actually a `char' (e.g., bool doneit;)
boolean type, actually a "char" (e.g., bool doneit;)
TRUE
boolean `true' flag (1).
boolean "true" flag (1).
FALSE
boolean `false' flag (0).
boolean "false" flag (0).
ERR
error flag returned by routines on a failure (-1).
@ -332,7 +348,7 @@ Using the Library
function names and parameters as mentioned above.
Here is a sample program to motivate the discussion:
#include <curses.h>
#include <stdlib.h>
#include <curses.h>
#include <signal.h>
@ -381,7 +397,7 @@ main(int argc, char *argv[])
/* process the command keystroke */
}
finish(0); /* we're done */
finish(0); /* we are done */
}
static void finish(int sig)
@ -411,7 +427,7 @@ static void finish(int sig)
Once the screen windows have been allocated, you can set them up for
your program. If you want to, say, allow a screen to scroll, use
scrollok(). If you want the cursor to be left in place after the last
change, use leaveok(). If this isn't done, refresh() will move the
change, use leaveok(). If this is not done, refresh() will move the
cursor to the window's current (y, x) coordinates after updating it.
You can create new windows of your own using the functions newwin(),
@ -454,8 +470,8 @@ static void finish(int sig)
set, will call addch() to echo the character. Since the screen package
needs to know what is on the terminal at all times, if characters are
to be echoed, the tty must be in raw or cbreak mode. Since initially
the terminal has echoing enabled and is in ordinary ``cooked'' mode,
one or the other has to changed before calling getch(); otherwise, the
the terminal has echoing enabled and is in ordinary "cooked" mode, one
or the other has to changed before calling getch(); otherwise, the
program's output will be unpredictable.
When you need to accept line-oriented input in a window, the functions
@ -499,7 +515,7 @@ static void finish(int sig)
of the highlights you want into the character argument of an addch()
call, or any other output call that takes a chtype argument.
The other is to set the current-highlight value. This is logical-or'ed
The other is to set the current-highlight value. This is logical-ORed
with any highlight you specify the first way. You do this with the
functions attron(), attroff(), and attrset(); see the manual pages for
details. Color is a special kind of highlight. The package actually
@ -510,8 +526,8 @@ static void finish(int sig)
range of eight non-conflicting values could have been used as the
first arguments of the init_pair() values.
Once you've done an init_pair() that creates color-pair N, you can use
COLOR_PAIR(N) as a highlight that invokes that particular color
Once you have done an init_pair() that creates color-pair N, you can
use COLOR_PAIR(N) as a highlight that invokes that particular color
combination. Note that COLOR_PAIR(N), for constant N, is itself a
compile-time constant and can be used in initializers.
@ -550,11 +566,11 @@ static void finish(int sig)
otherwise another mouse event might come in and make the first one
inaccessible).
Each call to getmouse() fills a structure (the address of which you'll
pass it) with mouse event data. The event data includes zero-origin,
screen-relative character-cell coordinates of the mouse pointer. It
also includes an event mask. Bits in this mask will be set,
corresponding to the event type being reported.
Each call to getmouse() fills a structure (the address of which you
will pass it) with mouse event data. The event data includes
zero-origin, screen-relative character-cell coordinates of the mouse
pointer. It also includes an event mask. Bits in this mask will be
set, corresponding to the event type being reported.
The mouse structure contains two additional fields which may be
significant in the future as ncurses interfaces to new kinds of
@ -567,7 +583,7 @@ static void finish(int sig)
The class of visible events may be changed at any time via
mousemask(). Events that can be reported include presses, releases,
single-, double- and triple-clicks (you can set the maximum
button-down time for clicks). If you don't make clicks visible, they
button-down time for clicks). If you do not make clicks visible, they
will be reported as press-release pairs. In some environments, the
event mask may include bits reporting the state of shift, alt, and
ctrl keys on the keyboard during the event.
@ -701,7 +717,7 @@ Function Descriptions
more terminals at once. Setupterm() also stores the names
section of the terminal description in the global character
array ttytype[]. Subsequent calls to setupterm() will overwrite
this array, so you'll have to save it yourself if need be.
this array, so you will have to save it yourself if need be.
Debugging
@ -710,7 +726,7 @@ Function Descriptions
trace()
This function can be used to explicitly set a trace level. If
the trace level is nonzero, execution of your program will
generate a file called `trace' in the current working directory
generate a file called "trace" in the current working directory
containing a report on the library's actions. Higher trace
levels enable more detailed (and verbose) reporting -- see
comments attached to TRACE_ defines in the curses.h file for
@ -740,7 +756,7 @@ Hints, Tips, and Tricks
Some Notes of Caution
If you find yourself thinking you need to use noraw() or nocbreak(),
think again and move carefully. It's probably better design to use
think again and move carefully. It is probably better design to use
getstr() or one of its relatives to simulate cooked mode. The noraw()
and nocbreak() functions try to restore cooked mode, but they may end
up clobbering some control bits set before you started your
@ -748,7 +764,7 @@ Hints, Tips, and Tricks
likely to hurt your application's usability with other curses
libraries.
Bear in mind that refresh() is a synonym for wrefresh(stdscr). Don't
Bear in mind that refresh() is a synonym for wrefresh(stdscr). Do not
try to mix use of stdscr with use of windows declared by newwin(); a
refresh() call will blow them off the screen. The right way to handle
this is to use subwin(), or not touch stdscr at all and tile your
@ -774,7 +790,7 @@ Hints, Tips, and Tricks
Temporarily Leaving NCURSES Mode
Sometimes you will want to write a program that spends most of its
time in screen mode, but occasionally returns to ordinary `cooked'
time in screen mode, but occasionally returns to ordinary "cooked"
mode. A common reason for this is to support shell-out. This behavior
is simple to arrange in ncurses.
@ -839,8 +855,8 @@ Hints, Tips, and Tricks
tigetflag(), tigetnum(), and tigetstr() to do your testing.
A particularly useful case of this often comes up when you want to
test whether a given terminal type should be treated as `smart'
(cursor-addressable) or `stupid'. The right way to test this is to see
test whether a given terminal type should be treated as "smart"
(cursor-addressable) or "stupid". The right way to test this is to see
if the return value of tigetstr("cup") is non-NULL. Alternatively, you
can include the term.h file and test the value of the macro
cursor_address.
@ -848,8 +864,8 @@ Hints, Tips, and Tricks
Tuning for Speed
Use the addchstr() family of functions for fast screen-painting of
text when you know the text doesn't contain any control characters.
Try to make attribute changes infrequent on your screens. Don't use
text when you know the text does not contain any control characters.
Try to make attribute changes infrequent on your screens. Do not use
the immedok() option!
Special Features of NCURSES
@ -913,7 +929,7 @@ Compatibility with Older Versions
they do change copy or entire copy. We know that System V release 3
curses has logic in it that looks like an attempt to do change copy,
but the surrounding logic and data representations are sufficiently
complex, and our knowledge sufficiently indirect, that it's hard to
complex, and our knowledge sufficiently indirect, that it is hard to
know whether this is reliable. It is not clear what the SVr4
documentation and XSI standard intend. The XSI Curses standard barely
mentions wnoutrefresh(); the SVr4 documents seem to be describing
@ -997,8 +1013,8 @@ Overview of Panels
in the proper order to resolve overlaps. The standard window, stdscr,
is considered below all panels.
Details on the panels functions are available in the man pages. We'll
just hit the highlights here.
Details on the panels functions are available in the man pages. We
will just hit the highlights here.
You create a panel from a window by calling new_panel() on a window
pointer. It then becomes the top of the deck. The panel's window is
@ -1009,11 +1025,11 @@ Overview of Panels
This will not deallocate the associated window; you have to do that
yourself. You can replace a panel's window with a different window by
calling replace_window. The new window may be of different size; the
panel code will re-compute all overlaps. This operation doesn't change
the panel's position in the deck.
panel code will re-compute all overlaps. This operation does not
change the panel's position in the deck.
To move a panel's window, use move_panel(). The mvwin() function on
the panel's window isn't sufficient because it doesn't update the
the panel's window is not sufficient because it does not update the
panels library's representation of where the windows are. This
operation leaves the panel's depth, contents, and size unchanged.
@ -1028,12 +1044,12 @@ Overview of Panels
Typically, you will want to call update_panels() and doupdate() just
before accepting command input, once in each cycle of interaction with
the user. If you call update_panels() after each and every panel
write, you'll generate a lot of unnecessary refresh activity and
write, you will generate a lot of unnecessary refresh activity and
screen flicker.
Panels, Input, and the Standard Screen
You shouldn't mix wnoutrefresh() or wrefresh() operations with panels
You should not mix wnoutrefresh() or wrefresh() operations with panels
code; this will work only if the argument window is either in the top
panel or unobscured by any other panels.
@ -1051,7 +1067,7 @@ Panels, Input, and the Standard Screen
Hiding Panels
It's possible to remove a panel from the deck temporarily; use
It is possible to remove a panel from the deck temporarily; use
hide_panel for this. Use show_panel() to render it visible again. The
predicate function panel_hidden tests whether or not a panel is
hidden.
@ -1062,7 +1078,7 @@ Hiding Panels
Miscellaneous Other Facilities
It's possible to navigate the deck using the functions panel_above()
It is possible to navigate the deck using the functions panel_above()
and panel_below. Handed a panel pointer, they return the panel above
or below that panel. Handed NULL, they return the bottom-most or
top-most panel.
@ -1156,7 +1172,7 @@ Menu Display
The actual menu page may be smaller than the format size. This depends
on the item number and size and whether O_ROWMAJOR is on. This option
(on by default) causes menu items to be displayed in a `raster-scan'
(on by default) causes menu items to be displayed in a "raster-scan"
pattern, so that if more than one item will fit horizontally the first
couple of items are side-by-side in the top row. The alternative is
column-major display, which tries to put the first several items in
@ -1222,7 +1238,7 @@ Processing Menu Input
REQ_SCR_DPAGE, and REQ_SCR_UPAGE.
The REQ_TOGGLE_ITEM selects or deselects the current item. It is for
use in multi-valued menus; if you use it with O_ONEVALUE on, you'll
use in multi-valued menus; if you use it with O_ONEVALUE on, you will
get an error return (E_REQUEST_DENIED).
Each menu has an associated pattern buffer. The menu_driver() logic
@ -1326,7 +1342,7 @@ Overview of Forms
obviously designed to resemble that of the menu library wherever
possible.
In forms programs, however, the `process user requests' is somewhat
In forms programs, however, the "process user requests" is somewhat
more complicated than for menus. Besides menu-like navigation
operations, the menu driver loop has to support field editing and data
validation.
@ -1348,7 +1364,7 @@ FIELD *new_field(int height, int width, /* new field size */
the screen (the third and fourth arguments, which must be zero or
greater). Note that these coordinates are relative to the form
subwindow, which will coincide with stdscr by default but need not be
stdscr if you've done an explicit set_form_win() call.
stdscr if you have done an explicit set_form_win() call.
The fifth argument allows you to specify a number of off-screen rows.
If this is zero, the entire field will always be displayed. If it is
@ -1593,7 +1609,7 @@ int field_status(FIELD *field); /* fetch mode of field */
Calling field_status() on a field not currently selected for input
will return a correct value. Calling field_status() on a field that is
currently selected for input may not necessarily give a correct field
status value, because entered data isn't necessarily copied to buffer
status value, because entered data is not necessarily copied to buffer
zero before the exit validation check. To guarantee that the returned
status value reflects reality, call field_status() either (1) in the
field's exit validation check routine, (2) from the field's or form's
@ -1662,7 +1678,7 @@ Field Validation
By default, a field will accept any data that will fit in its input
buffer. However, it is possible to attach a validation type to a
field. If you do this, any attempt to leave the field while it
contains data that doesn't match the validation type will fail. Some
contains data that does not match the validation type will fail. Some
validation types also have a character-validity check for each time a
character is entered in the field.
@ -1696,10 +1712,10 @@ int set_field_type(FIELD *field, /* field to alter */
TYPE_ALPHA, /* type to associate */
int width); /* maximum width of field */
The width argument sets a minimum width of data. Typically you'll want
to set this to the field width; if it's greater than the field width,
the validation check will always fail. A minimum width of zero makes
field completion optional.
The width argument sets a minimum width of data. Typically you will
want to set this to the field width; if it is greater than the field
width, the validation check will always fail. A minimum width of zero
makes field completion optional.
TYPE_ALNUM
@ -1711,9 +1727,9 @@ int set_field_type(FIELD *field, /* field to alter */
int width); /* maximum width of field */
The width argument sets a minimum width of data. As with TYPE_ALPHA,
typically you'll want to set this to the field width; if it's greater
than the field width, the validation check will always fail. A minimum
width of zero makes field completion optional.
typically you will want to set this to the field width; if it is
greater than the field width, the validation check will always fail. A
minimum width of zero makes field completion optional.
TYPE_ENUM
@ -1802,7 +1818,7 @@ char *field_buffer(FIELD *field, /* field to query */
int bufindex); /* number of buffer to query */
Normally, the state of the zero-numbered buffer for each field is set
by the user's editing actions on that field. It's sometimes useful to
by the user's editing actions on that field. It is sometimes useful to
be able to set the value of the zero-numbered (or some other) buffer
from your application:
int set_field_buffer(FIELD *field, /* field to alter */
@ -1817,7 +1833,7 @@ int set_field_buffer(FIELD *field, /* field to alter */
Calling field_buffer() on a field not currently selected for input
will return a correct value. Calling field_buffer() on a field that is
currently selected for input may not necessarily give a correct field
buffer value, because entered data isn't necessarily copied to buffer
buffer value, because entered data is not necessarily copied to buffer
zero before the exit validation check. To guarantee that the returned
buffer value reflects on-screen reality, call field_buffer() either
(1) in the field's exit validation check routine, (2) from the field's
@ -1877,7 +1893,7 @@ Control of Form Display
erased at post/unpost time. The inner window or subwindow is where the
current form page is actually displayed.
In order to declare your own frame window for a form, you'll need to
In order to declare your own frame window for a form, you will need to
know the size of the form's bounding rectangle. You can get this
information with:
int scale_form(FORM *form, /* form to query */
@ -2389,13 +2405,12 @@ FIELD *link_fieldtype(FIELDTYPE *type1,
entered.
* A field-validation function to be applied on exit from the field.
Here's how you do that:
Here is how you do that:
typedef int (*HOOK)(); /* pointer to function returning int */
FIELDTYPE *new_fieldtype(HOOK f_validate, /* field validator */
HOOK c_validate) /* character validator */
int free_fieldtype(FIELDTYPE *ftype); /* type to free */
At least one of the arguments of new_fieldtype() must be non-NULL. The
@ -2419,7 +2434,7 @@ int free_fieldtype(FIELDTYPE *ftype); /* type to free */
Your field- and character- validation functions will be passed a
second argument as well. This second argument is the address of a
structure (which we'll call a pile) built from any of the
structure (which we will call a pile) built from any of the
field-type-specific arguments passed to set_field_type(). If no such
arguments are defined for the field type, this pile pointer argument
will be NULL.
@ -2469,7 +2484,7 @@ int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */
Some custom field types are simply ordered in the same well-defined
way that TYPE_ENUM is. For such types, it is possible to define
successor and predecessor functions to support the REQ_NEXT_CHOICE and
REQ_PREV_CHOICE requests. Here's how:
REQ_PREV_CHOICE requests. Here is how:
typedef int (*INTHOOK)(); /* pointer to function returning int */
int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */

View File

@ -1,6 +1,6 @@
# $Id: Makefile.in,v 1.56 2013/08/04 20:23:20 tom Exp $
# $Id: Makefile.in,v 1.64 2018/01/15 19:28:45 tom Exp $
##############################################################################
# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
# Copyright (c) 1998-2015,2018 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"), #
@ -42,7 +42,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
SHELL = /bin/sh
SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@ -51,6 +51,7 @@ o = .@OBJEXT@
MODEL = @DFT_LWR_MODEL@
DESTDIR = @DESTDIR@
top_srcdir = @top_srcdir@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
@ -61,7 +62,10 @@ includesubdir = @includesubdir@
INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
PACKAGE = @PACKAGE@
LIBTOOL = @LIBTOOL@
LIBTOOL_OPTS = @LIBTOOL_OPTS@ @EXPORT_SYMS@
LIBTOOL_CLEAN = @LIB_CLEAN@
LIBTOOL_COMPILE = @LIB_COMPILE@
LIBTOOL_LINK = @LIB_LINK@
@ -71,7 +75,7 @@ LT_UNDEF = @LT_UNDEF@
INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
INSTALL_PROG = @INSTALL_PROGRAM@
INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@
INSTALL_DATA = @INSTALL_DATA@
AR = @AR@
@ -87,7 +91,7 @@ CC = @CC@
CPP = @CPP@
CFLAGS = @CFLAGS@
CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
CPPFLAGS = -I${top_srcdir}/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
@ -103,9 +107,11 @@ LINK = $(LIBTOOL_LINK)
LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib
SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@
RPATH_LIST = @RPATH_LIST@
RESULTING_SYMS = @RESULTING_SYMS@
VERSIONED_SYMS = @VERSIONED_SYMS@
MK_SHARED_LIB = @MK_SHARED_LIB@
NCURSES_MAJOR = @NCURSES_MAJOR@
@ -162,6 +168,7 @@ clean :: mostlyclean
distclean :: clean
-rm -f Makefile
-rm -rf .libs *.dSYM
realclean :: distclean

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2004,2010 Free Software Foundation, Inc. *
* Copyright (c) 2004-2016,2018 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 *
@ -32,7 +32,7 @@
#include "form.priv.h"
MODULE_ID("$Id: f_trace.c,v 1.2 2010/01/23 21:14:36 tom Exp $")
MODULE_ID("$Id: f_trace.c,v 1.4 2018/12/16 00:13:36 tom Exp $")
NCURSES_EXPORT(FIELD **)
_nc_retrace_field_ptr(FIELD **code)
@ -65,6 +65,7 @@ _nc_retrace_form(FORM *code)
NCURSES_EXPORT(Form_Hook)
_nc_retrace_form_hook(Form_Hook code)
{
T((T_RETURN("%p"), code));
TR_FUNC_BFR(1);
T((T_RETURN("%s"), TR_FUNC_ARG(0, code)));
return code;
}

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2016,2018 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 *
@ -32,7 +32,7 @@
#include "form.priv.h"
MODULE_ID("$Id: fld_arg.c,v 1.13 2012/06/10 00:27:49 tom Exp $")
MODULE_ID("$Id: fld_arg.c,v 1.15 2018/12/16 00:13:36 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@ -66,8 +66,13 @@ set_fieldtype_arg(FIELDTYPE *typ,
void *(*const copy_arg)(const void *),
void (*const free_arg) (void *))
{
T((T_CALLED("set_fieldtype_arg(%p,%p,%p,%p)"),
(void *)typ, make_arg, copy_arg, free_arg));
TR_FUNC_BFR(3);
T((T_CALLED("set_fieldtype_arg(%p,%s,%s,%s)"),
(void *)typ,
TR_FUNC_ARG(0, make_arg),
TR_FUNC_ARG(1, copy_arg),
TR_FUNC_ARG(2, free_arg)));
if (typ != 0 && make_arg != (void *)0)
{

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
* Copyright (c) 1998-2010,2016 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 *
@ -32,7 +32,7 @@
#include "form.priv.h"
MODULE_ID("$Id: fld_attr.c,v 1.11 2010/01/23 21:12:08 tom Exp $")
MODULE_ID("$Id: fld_attr.c,v 1.12 2016/01/23 21:32:00 tom Exp $")
/*----------------------------------------------------------------------------
Field-Attribute manipulation routines
@ -42,7 +42,7 @@ MODULE_ID("$Id: fld_attr.c,v 1.11 2010/01/23 21:12:08 tom Exp $")
NCURSES_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\
{\
int res = E_BAD_ARGUMENT;\
T((T_CALLED("set_field_" #name "(%p,%s)"), field, _traceattr(attr)));\
T((T_CALLED("set_field_" #name "(%p,%s)"), (void *)field, _traceattr(attr)));\
if ( attr==A_NORMAL || ((attr & A_ATTRIBUTES)==attr) )\
{\
Normalize_Field( field );\

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
* Copyright (c) 1998-2010,2016 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 *
@ -32,7 +32,7 @@
#include "form.priv.h"
MODULE_ID("$Id: fld_current.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
MODULE_ID("$Id: fld_current.c,v 1.14 2016/10/29 22:30:10 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@ -76,7 +76,7 @@ set_current_field(FORM *form, FIELD *field)
{
if (form->current != field)
{
if (!_nc_Internal_Validation(form))
if (form->current && !_nc_Internal_Validation(form))
{
err = E_INVALID_FIELD;
}
@ -102,6 +102,32 @@ set_current_field(FORM *form, FIELD *field)
RETURN(err);
}
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : int unfocus_current_field(FORM * form)
|
| Description : Removes focus from the current field.
|
| Return Values : E_OK - success
| E_BAD_ARGUMENT - invalid form pointer
| E_REQUEST_DENIED - there is no current field to unfocus
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
unfocus_current_field(FORM *const form)
{
T((T_CALLED("unfocus_current_field(%p)"), (const void *)form));
if (form == 0)
{
RETURN(E_BAD_ARGUMENT);
}
else if (form->current == 0)
{
RETURN(E_REQUEST_DENIED);
}
_nc_Unset_Current_Field(form);
RETURN(E_OK);
}
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : FIELD *current_field(const FORM * form)

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2012,2014 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 *
@ -32,7 +32,7 @@
#include "form.priv.h"
MODULE_ID("$Id: fld_def.c,v 1.40 2012/03/11 00:37:16 tom Exp $")
MODULE_ID("$Id: fld_def.c,v 1.41 2014/07/26 21:08:55 tom Exp $")
/* this can't be readonly */
static FIELD default_field =
@ -53,7 +53,7 @@ static FIELD default_field =
(int)' ', /* pad */
A_NORMAL, /* fore */
A_NORMAL, /* back */
ALL_FIELD_OPTS, /* opts */
STD_FIELD_OPTS, /* opts */
(FIELD *)0, /* snext */
(FIELD *)0, /* sprev */
(FIELD *)0, /* link */
@ -294,14 +294,14 @@ new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf)
{
T((T_CREATE("field %p"), (void *)New_Field));
*New_Field = default_field;
New_Field->rows = (short) rows;
New_Field->cols = (short) cols;
New_Field->rows = (short)rows;
New_Field->cols = (short)cols;
New_Field->drows = rows + nrow;
New_Field->dcols = cols;
New_Field->frow = (short) frow;
New_Field->fcol = (short) fcol;
New_Field->frow = (short)frow;
New_Field->fcol = (short)fcol;
New_Field->nrow = nrow;
New_Field->nbuf = (short) nbuf;
New_Field->nbuf = (short)nbuf;
New_Field->link = New_Field;
#if USE_WIDEC_SUPPORT

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2016,2018 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 *
@ -32,7 +32,7 @@
#include "form.priv.h"
MODULE_ID("$Id: fld_ftchoice.c,v 1.13 2012/06/10 00:27:49 tom Exp $")
MODULE_ID("$Id: fld_ftchoice.c,v 1.15 2018/12/16 00:14:26 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@ -51,7 +51,12 @@ set_fieldtype_choice(FIELDTYPE *typ,
bool (*const next_choice) (FIELD *, const void *),
bool (*const prev_choice) (FIELD *, const void *))
{
T((T_CALLED("set_fieldtype_choice(%p,%p,%p)"), (void *)typ, next_choice, prev_choice));
TR_FUNC_BFR(2);
T((T_CALLED("set_fieldtype_choice(%p,%s,%s)"),
(void *)typ,
TR_FUNC_ARG(0, next_choice),
TR_FUNC_ARG(1, prev_choice)));
if (!typ || !next_choice || !prev_choice)
RETURN(E_BAD_ARGUMENT);

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* Copyright (c) 1998-2013,2019 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 *
@ -32,7 +32,7 @@
#include "form.priv.h"
MODULE_ID("$Id: fld_max.c,v 1.13 2013/08/24 22:59:28 tom Exp $")
MODULE_ID("$Id: fld_max.c,v 1.15 2019/01/26 22:18:08 Leon.Winter Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@ -57,11 +57,16 @@ set_max_field(FIELD *field, int maxgrow)
if (maxgrow > 0)
{
if ((single_line_field && (maxgrow < field->dcols)) ||
(!single_line_field && (maxgrow < field->drows)))
if (((single_line_field && (maxgrow < field->dcols)) ||
(!single_line_field && (maxgrow < field->drows))) &&
!Field_Has_Option(field, O_INPUT_LIMIT))
RETURN(E_BAD_ARGUMENT);
}
field->maxgrow = maxgrow;
/* shrink */
if (maxgrow > 0 && Field_Has_Option(field, O_INPUT_LIMIT) &&
field->dcols > maxgrow)
field->dcols = maxgrow;
ClrStatus(field, _MAY_GROW);
if (!((unsigned)field->opts & O_STATIC))
{

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
* Copyright (c) 1998-2016,2018 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 *
@ -32,7 +32,7 @@
#include "form.priv.h"
MODULE_ID("$Id: fld_newftyp.c,v 1.19 2010/01/23 21:14:36 tom Exp $")
MODULE_ID("$Id: fld_newftyp.c,v 1.21 2018/12/16 00:14:22 tom Exp $")
static FIELDTYPE default_fieldtype =
{
@ -53,7 +53,7 @@ static FIELDTYPE default_fieldtype =
};
NCURSES_EXPORT_VAR(FIELDTYPE *)
_nc_Default_FieldType = &default_fieldtype;
_nc_Default_FieldType = &default_fieldtype;
/*---------------------------------------------------------------------------
| Facility : libnform
@ -76,7 +76,12 @@ new_fieldtype(bool (*const field_check) (FIELD *, const void *),
{
FIELDTYPE *nftyp = (FIELDTYPE *)0;
T((T_CALLED("new_fieldtype(%p,%p)"), field_check, char_check));
TR_FUNC_BFR(2);
T((T_CALLED("new_fieldtype(%s,%s)"),
TR_FUNC_ARG(0, field_check),
TR_FUNC_ARG(1, char_check)));
if ((field_check) || (char_check))
{
nftyp = typeMalloc(FIELDTYPE, 1);

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2009,2013 Free Software Foundation, Inc. *
* Copyright (c) 1998-2018,2019 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 *
@ -30,10 +30,11 @@
* Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/* $Id: form.h,v 0.23 2013/12/07 17:57:32 tom Exp $ */
/* $Id: form.h,v 0.29 2019/01/19 21:26:13 Leon.Winter Exp $ */
#ifndef FORM_H
#define FORM_H
/* *INDENT-OFF*/
#include <curses.h>
#include <eti.h>
@ -57,18 +58,24 @@ typedef int Field_Options;
* _PAGE *
**********/
typedef struct {
typedef struct pagenode
#if !NCURSES_OPAQUE_FORM
{
short pmin; /* index of first field on page */
short pmax; /* index of last field on page */
short smin; /* index of top leftmost field on page */
short smax; /* index of bottom rightmost field on page */
} _PAGE;
}
#endif /* !NCURSES_OPAQUE_FORM */
_PAGE;
/**********
* FIELD *
**********/
typedef struct fieldnode {
typedef struct fieldnode
#if 1 /* not yet: !NCURSES_OPAQUE_FORM */
{
unsigned short status; /* flags */
short rows; /* size in rows */
short cols; /* size in cols */
@ -97,20 +104,24 @@ typedef struct fieldnode {
/*
* The wide-character configuration requires extra information. Because
* there are existing applications that manipulate the members of FIELD
* directly, we cannot make the struct opaque. Offsets of members up to
* this point are the same in the narrow- and wide-character configuration.
* But note that the type of buf depends on the configuration, and is made
* opaque for that reason.
* directly, we cannot make the struct opaque, except by changing the ABI.
* Offsets of members up to this point are the same in the narrow- and
* wide-character configuration. But note that the type of buf depends on
* the configuration, and is made opaque for that reason.
*/
NCURSES_FIELD_INTERNALS
} FIELD;
}
#endif /* NCURSES_OPAQUE_FORM */
FIELD;
/*********
* FORM *
*********/
typedef struct formnode {
typedef struct formnode
#if 1 /* not yet: !NCURSES_OPAQUE_FORM */
{
unsigned short status; /* flags */
short rows; /* size in rows */
short cols; /* size in cols */
@ -135,14 +146,18 @@ typedef struct formnode {
void (*fieldinit)(struct formnode *);
void (*fieldterm)(struct formnode *);
} FORM;
}
#endif /* !NCURSES_OPAQUE_FORM */
FORM;
/**************
* FIELDTYPE *
**************/
typedef struct typenode {
typedef struct typenode
#if !NCURSES_OPAQUE_FORM
{
unsigned short status; /* flags */
long ref; /* reference count */
struct typenode * left; /* ptr to operand for | */
@ -178,7 +193,9 @@ typedef struct typenode {
bool (*next)(FIELD *,const void *); /* enumerate next value */
bool (*prev)(FIELD *,const void *); /* enumerate prev value */
#endif
} FIELDTYPE;
}
#endif /* !NCURSES_OPAQUE_FORM */
FIELDTYPE;
typedef void (*Form_Hook)(FORM *);
@ -203,6 +220,10 @@ typedef void (*Form_Hook)(FORM *);
#define O_NULLOK (0x0080U)
#define O_PASSOK (0x0100U)
#define O_STATIC (0x0200U)
#define O_DYNAMIC_JUSTIFY (0x0400U) /* ncurses extension */
#define O_NO_LEFT_STRIP (0x0800U) /* ncurses extension */
#define O_EDGE_INSERT_STAY (0x1000U) /* ncurses extension */
#define O_INPUT_LIMIT (0x2000U) /* ncurses extension */
/* form options */
#define O_NL_OVERLOAD (0x0001U)
@ -384,6 +405,7 @@ extern NCURSES_EXPORT(int) field_count (const FORM *);
extern NCURSES_EXPORT(int) set_form_win (FORM *,WINDOW *);
extern NCURSES_EXPORT(int) set_form_sub (FORM *,WINDOW *);
extern NCURSES_EXPORT(int) set_current_field (FORM *,FIELD *);
extern NCURSES_EXPORT(int) unfocus_current_field (FORM *);
extern NCURSES_EXPORT(int) field_index (const FIELD *);
extern NCURSES_EXPORT(int) set_form_page (FORM *,int);
extern NCURSES_EXPORT(int) form_page (const FORM *);
@ -421,5 +443,6 @@ extern NCURSES_EXPORT(FORM *) NCURSES_SP_NAME(new_form) (SCREEN*, FIELD **);
#ifdef __cplusplus
}
#endif
/* *INDENT-ON*/
#endif /* FORM_H */
#endif /* FORM_H */

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2018,2019 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 *
@ -30,12 +30,15 @@
* Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/* $Id: form.priv.h,v 0.33 2012/03/11 00:37:46 tom Exp $ */
/* $Id: form.priv.h,v 0.44 2019/01/26 22:17:48 Leon.Winter Exp $ */
#ifndef FORM_PRIV_H
#define FORM_PRIV_H 1
/* *INDENT-OFF*/
#include "curses.priv.h"
#define NCURSES_OPAQUE_FORM 0
#include "mf_common.h"
#if USE_WIDEC_SUPPORT
@ -125,6 +128,8 @@ extern NCURSES_EXPORT_VAR(FIELDTYPE *) _nc_Default_FieldType;
#define Single_Line_Field(field) \
(((field)->rows + (field)->nrow) == 1)
#define Field_Has_Option(f,o) ((((unsigned)(f)->opts) & o) != 0)
/* Logic to determine whether or not a field is selectable */
#define Field_Is_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)==O_SELECTABLE)
#define Field_Is_Not_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)!=O_SELECTABLE)
@ -146,7 +151,7 @@ TypeArgument;
O_NL_OVERLOAD |\
O_BS_OVERLOAD )
#define ALL_FIELD_OPTS (Field_Options)( \
#define STD_FIELD_OPTS (Field_Options)( \
O_VISIBLE |\
O_ACTIVE |\
O_PUBLIC |\
@ -156,7 +161,14 @@ TypeArgument;
O_AUTOSKIP|\
O_NULLOK |\
O_PASSOK |\
O_STATIC )
O_STATIC)
#define ALL_FIELD_OPTS (Field_Options)( \
STD_FIELD_OPTS |\
O_DYNAMIC_JUSTIFY |\
O_NO_LEFT_STRIP |\
O_EDGE_INSERT_STAY |\
O_INPUT_LIMIT)
#define C_BLANK ' '
#define is_blank(c) ((c)==C_BLANK)
@ -177,6 +189,7 @@ extern NCURSES_EXPORT(FIELD *) _nc_First_Active_Field (FORM*);
extern NCURSES_EXPORT(bool) _nc_Internal_Validation (FORM*);
extern NCURSES_EXPORT(int) _nc_Set_Current_Field (FORM*, FIELD*);
extern NCURSES_EXPORT(int) _nc_Position_Form_Cursor (FORM*);
extern NCURSES_EXPORT(void) _nc_Unset_Current_Field(FORM *form);
#if NCURSES_INTEROP_FUNCS
extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_INTEGER(void);
@ -214,11 +227,11 @@ extern NCURSES_EXPORT(wchar_t *) _nc_Widen_String(char *, int *);
#ifdef TRACE
#define returnField(code) TRACE_RETURN(code,field)
#define returnFieldPtr(code) TRACE_RETURN(code,field_ptr)
#define returnForm(code) TRACE_RETURN(code,form)
#define returnFieldType(code) TRACE_RETURN(code,field_type)
#define returnFormHook(code) TRACE_RETURN(code,form_hook)
#define returnField(code) TRACE_RETURN1(code,field)
#define returnFieldPtr(code) TRACE_RETURN1(code,field_ptr)
#define returnForm(code) TRACE_RETURN1(code,form)
#define returnFieldType(code) TRACE_RETURN1(code,field_type)
#define returnFormHook(code) TRACE_RETURN1(code,form_hook)
extern NCURSES_EXPORT(FIELD **) _nc_retrace_field_ptr (FIELD **);
extern NCURSES_EXPORT(FIELD *) _nc_retrace_field (FIELD *);

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* Copyright (c) 1998-2018,2019 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 *
@ -32,7 +32,7 @@
#include "form.priv.h"
MODULE_ID("$Id: frm_driver.c,v 1.110 2014/02/10 00:42:48 tom Exp $")
MODULE_ID("$Id: frm_driver.c,v 1.128 2019/01/20 01:25:02 tom Exp $")
/*----------------------------------------------------------------------------
This is the core module of the form library. It contains the majority
@ -99,9 +99,9 @@ Perhaps at some time we will make this configurable at runtime.
#define GROW_IF_NAVIGATE (1)
#if USE_WIDEC_SUPPORT
#define myADDNSTR(w, s, n) wadd_wchnstr(w, s, n)
#define myINSNSTR(w, s, n) wins_wchnstr(w, s, n)
#define myINNSTR(w, s, n) fix_wchnstr(w, s, n)
#define myADDNSTR(w, s, n) wide_waddnstr(w, s, n)
#define myINSNSTR(w, s, n) wide_winsnstr(w, s, n)
#define myINNSTR(w, s, n) wide_winnstr(w, s, n)
#define myWCWIDTH(w, y, x) cell_width(w, y, x)
#else
#define myADDNSTR(w, s, n) waddnstr(w, s, n)
@ -172,15 +172,16 @@ static int FE_Delete_Previous(FORM *);
instead of a derived window because it contains invisible parts.
This is true for non-public fields and for scrollable fields. */
#define Has_Invisible_Parts(field) \
(!((unsigned)(field)->opts & O_PUBLIC) || \
(!(Field_Has_Option(field, O_PUBLIC)) || \
Is_Scroll_Field(field))
/* Logic to decide whether or not a field needs justification */
#define Justification_Allowed(field) \
(((field)->just != NO_JUSTIFICATION) && \
(Single_Line_Field(field)) && \
(((field)->dcols == (field)->cols) && \
((unsigned)(field)->opts & O_STATIC)))
((Field_Has_Option(field, O_STATIC) && \
((field)->dcols == (field)->cols)) || \
Field_Has_Option(field, O_DYNAMIC_JUSTIFY)))
/* Logic to determine whether or not a dynamic field may still grow */
#define Growable(field) ((field)->status & _MAY_GROW)
@ -194,7 +195,7 @@ static int FE_Delete_Previous(FORM *);
#define Field_Really_Appears(field) \
((field->form) &&\
(field->form->status & _POSTED) &&\
((unsigned)field->opts & O_VISIBLE) &&\
(Field_Has_Option(field, O_VISIBLE)) &&\
(field->page == field->form->curpage))
/* Logic to determine whether or not we are on the first position in the
@ -238,9 +239,29 @@ check_pos(FORM *form, int lineno)
Wide-character special functions
--------------------------------------------------------------------------*/
#if USE_WIDEC_SUPPORT
/* like winsnstr */
/* add like waddnstr, but using cchar_t* rather than char*
*/
static int
wins_wchnstr(WINDOW *w, cchar_t *s, int n)
wide_waddnstr(WINDOW *w, const cchar_t *s, int n)
{
int rc = OK;
while (n-- > 0)
{
if ((rc = wadd_wch(w, s)) != OK)
break;
++s;
}
return rc;
}
/* insert like winsnstr, but using cchar_t* rather than char*
*
* X/Open Curses has no close equivalent; inserts are done only with wchar_t
* strings.
*/
static int
wide_winsnstr(WINDOW *w, const cchar_t *s, int n)
{
int code = ERR;
int y, x;
@ -256,11 +277,13 @@ wins_wchnstr(WINDOW *w, cchar_t *s, int n)
return code;
}
/* win_wchnstr is inconsistent with winnstr, since it returns OK rather than
* the number of items transferred.
/* retrieve like winnstr, but using cchar_t*, rather than char*.
*
* X/Open Curses' closest equivalent, win_wchnstr(), is inconsistent with
* winnstr(), since it returns OK rather than the number of items transferred.
*/
static int
fix_wchnstr(WINDOW *w, cchar_t *s, int n)
wide_winnstr(WINDOW *w, cchar_t *s, int n)
{
int x;
@ -843,11 +866,13 @@ _nc_Position_Form_Cursor(FORM *form)
| E_BAD_ARGUMENT - invalid form pointer
| E_SYSTEM_ERROR - general error
+--------------------------------------------------------------------------*/
static bool move_after_insert = TRUE;
NCURSES_EXPORT(int)
_nc_Refresh_Current_Field(FORM *form)
{
WINDOW *formwin;
FIELD *field;
bool is_public;
T((T_CALLED("_nc_Refresh_Current_Field(%p)"), (void *)form));
@ -860,102 +885,105 @@ _nc_Refresh_Current_Field(FORM *form)
field = form->current;
formwin = Get_Form_Window(form);
if ((unsigned)field->opts & O_PUBLIC)
is_public = Field_Has_Option(field, O_PUBLIC);
if (Is_Scroll_Field(field))
{
if (Is_Scroll_Field(field))
/* Again, in this case the fieldwin isn't derived from formwin,
so we have to perform a copy operation. */
if (Single_Line_Field(field))
{
/* Again, in this case the fieldwin isn't derived from formwin,
so we have to perform a copy operation. */
if (Single_Line_Field(field))
{
/* horizontal scrolling */
if (form->curcol < form->begincol)
form->begincol = form->curcol;
else
{
if (form->curcol >= (form->begincol + field->cols))
form->begincol = form->curcol - field->cols + 1;
}
copywin(form->w,
formwin,
0,
form->begincol,
field->frow,
field->fcol,
field->frow,
field->cols + field->fcol - 1,
0);
}
/* horizontal scrolling */
if (form->curcol < form->begincol)
form->begincol = form->curcol;
else
{
/* A multi-line, i.e. vertical scrolling field */
int row_after_bottom, first_modified_row, first_unmodified_row;
if (field->drows > field->rows)
{
row_after_bottom = form->toprow + field->rows;
if (form->currow < form->toprow)
{
form->toprow = form->currow;
SetStatus(field, _NEWTOP);
}
if (form->currow >= row_after_bottom)
{
form->toprow = form->currow - field->rows + 1;
SetStatus(field, _NEWTOP);
}
if (field->status & _NEWTOP)
{
/* means we have to copy whole range */
first_modified_row = form->toprow;
first_unmodified_row = first_modified_row + field->rows;
ClrStatus(field, _NEWTOP);
}
else
{
/* we try to optimize : finding the range of touched
lines */
first_modified_row = form->toprow;
while (first_modified_row < row_after_bottom)
{
if (is_linetouched(form->w, first_modified_row))
break;
first_modified_row++;
}
first_unmodified_row = first_modified_row;
while (first_unmodified_row < row_after_bottom)
{
if (!is_linetouched(form->w, first_unmodified_row))
break;
first_unmodified_row++;
}
}
}
else
{
first_modified_row = form->toprow;
first_unmodified_row = first_modified_row + field->rows;
}
if (first_unmodified_row != first_modified_row)
copywin(form->w,
formwin,
first_modified_row,
0,
field->frow + first_modified_row - form->toprow,
field->fcol,
field->frow + first_unmodified_row - form->toprow - 1,
field->cols + field->fcol - 1,
0);
if (form->curcol >= (form->begincol + field->cols))
form->begincol = form->curcol - field->cols
+ (move_after_insert ? 1 : 0);
}
wsyncup(formwin);
if (is_public)
copywin(form->w,
formwin,
0,
form->begincol,
field->frow,
field->fcol,
field->frow,
field->cols + field->fcol - 1,
0);
}
else
{
/* if the field-window is simply a derived window, i.e. contains no
* invisible parts, the whole thing is trivial
*/
wsyncup(form->w);
/* A multi-line, i.e. vertical scrolling field */
int row_after_bottom, first_modified_row, first_unmodified_row;
if (field->drows > field->rows)
{
row_after_bottom = form->toprow + field->rows;
if (form->currow < form->toprow)
{
form->toprow = form->currow;
SetStatus(field, _NEWTOP);
}
if (form->currow >= row_after_bottom)
{
form->toprow = form->currow - field->rows + 1;
SetStatus(field, _NEWTOP);
}
if (field->status & _NEWTOP)
{
/* means we have to copy whole range */
first_modified_row = form->toprow;
first_unmodified_row = first_modified_row + field->rows;
ClrStatus(field, _NEWTOP);
}
else
{
/* we try to optimize : finding the range of touched
lines */
first_modified_row = form->toprow;
while (first_modified_row < row_after_bottom)
{
if (is_linetouched(form->w, first_modified_row))
break;
first_modified_row++;
}
first_unmodified_row = first_modified_row;
while (first_unmodified_row < row_after_bottom)
{
if (!is_linetouched(form->w, first_unmodified_row))
break;
first_unmodified_row++;
}
}
}
else
{
first_modified_row = form->toprow;
first_unmodified_row = first_modified_row + field->rows;
}
if (first_unmodified_row != first_modified_row && is_public)
copywin(form->w,
formwin,
first_modified_row,
0,
field->frow + first_modified_row - form->toprow,
field->fcol,
field->frow + first_unmodified_row - form->toprow - 1,
field->cols + field->fcol - 1,
0);
}
if (is_public)
wsyncup(formwin);
}
else
{
/* if the field-window is simply a derived window, i.e. contains no
* invisible parts, the whole thing is trivial
*/
if (is_public)
wsyncup(form->w);
}
untouchwin(form->w);
returnCode(_nc_Position_Form_Cursor(form));
@ -978,26 +1006,29 @@ Perform_Justification(FIELD *field, WINDOW *win)
int len;
int col = 0;
bp = Get_Start_Of_Data(field->buf, Buffer_Length(field));
bp = (Field_Has_Option(field, O_NO_LEFT_STRIP)
? field->buf
: Get_Start_Of_Data(field->buf, Buffer_Length(field)));
len = (int)(After_End_Of_Data(field->buf, Buffer_Length(field)) - bp);
if (len > 0)
{
assert(win && (field->drows == 1) && (field->dcols == field->cols));
assert(win && (field->drows == 1));
switch (field->just)
{
case JUSTIFY_LEFT:
break;
case JUSTIFY_CENTER:
col = (field->cols - len) / 2;
break;
case JUSTIFY_RIGHT:
col = field->cols - len;
break;
default:
break;
}
if (field->cols - len >= 0)
switch (field->just)
{
case JUSTIFY_LEFT:
break;
case JUSTIFY_CENTER:
col = (field->cols - len) / 2;
break;
case JUSTIFY_RIGHT:
col = field->cols - len;
break;
default:
break;
}
wmove(win, 0, col);
myADDNSTR(win, bp, len);
@ -1019,9 +1050,14 @@ static void
Undo_Justification(FIELD *field, WINDOW *win)
{
FIELD_CELL *bp;
int y, x;
int len;
bp = Get_Start_Of_Data(field->buf, Buffer_Length(field));
getyx(win, y, x);
bp = (Field_Has_Option(field, O_NO_LEFT_STRIP)
? field->buf
: Get_Start_Of_Data(field->buf, Buffer_Length(field)));
len = (int)(After_End_Of_Data(field->buf, Buffer_Length(field)) - bp);
if (len > 0)
@ -1030,6 +1066,7 @@ Undo_Justification(FIELD *field, WINDOW *win)
wmove(win, 0, 0);
myADDNSTR(win, bp, len);
}
wmove(win, y, x);
}
/*---------------------------------------------------------------------------
@ -1111,7 +1148,7 @@ Display_Or_Erase_Field(FIELD *field, bool bEraseFlag)
return E_SYSTEM_ERROR;
else
{
if ((unsigned)field->opts & O_VISIBLE)
if (Field_Has_Option(field, O_VISIBLE))
{
Set_Field_Window_Attributes(field, win);
}
@ -1124,7 +1161,7 @@ Display_Or_Erase_Field(FIELD *field, bool bEraseFlag)
if (!bEraseFlag)
{
if ((unsigned)field->opts & O_PUBLIC)
if (Field_Has_Option(field, O_PUBLIC))
{
if (Justification_Allowed(field))
Perform_Justification(field, win);
@ -1170,7 +1207,7 @@ Synchronize_Field(FIELD *field)
form->currow = form->curcol = form->toprow = form->begincol = 0;
werase(form->w);
if (((unsigned)field->opts & O_PUBLIC) && Justification_Allowed(field))
if ((Field_Has_Option(field, O_PUBLIC)) && Justification_Allowed(field))
Undo_Justification(field, form->w);
else
Buffer_To_Window(field, form->w);
@ -1256,7 +1293,7 @@ _nc_Synchronize_Attributes(FIELD *field)
werase(form->w);
wmove(form->w, form->currow, form->curcol);
if ((unsigned)field->opts & O_PUBLIC)
if (Field_Has_Option(field, O_PUBLIC))
{
if (Justification_Allowed(field))
Undo_Justification(field, form->w);
@ -1269,7 +1306,8 @@ _nc_Synchronize_Attributes(FIELD *field)
copywin(form->w, formwin,
0, 0,
field->frow, field->fcol,
field->rows - 1, field->cols - 1, 0);
field->frow + field->rows - 1,
field->fcol + field->cols - 1, 0);
wsyncup(formwin);
Buffer_To_Window(field, form->w);
SetStatus(field, _NEWTOP); /* fake refresh to paint all */
@ -1389,6 +1427,57 @@ _nc_Synchronize_Options(FIELD *field, Field_Options newopts)
returnCode(res);
}
/*
* Removes the focus from the current field of the form.
*/
void
_nc_Unset_Current_Field(FORM *form)
{
FIELD *field = form->current;
_nc_Refresh_Current_Field(form);
if (Field_Has_Option(field, O_PUBLIC))
{
if (field->drows > field->rows)
{
if (form->toprow == 0)
ClrStatus(field, _NEWTOP);
else
SetStatus(field, _NEWTOP);
}
else
{
if (Justification_Allowed(field))
{
Window_To_Buffer(form, field);
werase(form->w);
Perform_Justification(field, form->w);
if (Field_Has_Option(field, O_DYNAMIC_JUSTIFY) &&
(form->w->_parent == 0))
{
copywin(form->w,
Get_Form_Window(form),
0,
0,
field->frow,
field->fcol,
field->frow,
field->cols + field->fcol - 1,
0);
wsyncup(Get_Form_Window(form));
}
else
{
wsyncup(form->w);
}
}
}
}
delwin(form->w);
form->w = (WINDOW *)0;
form->current = 0;
}
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : int _nc_Set_Current_Field(FORM * form,
@ -1409,7 +1498,7 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield)
T((T_CALLED("_nc_Set_Current_Field(%p,%p)"), (void *)form, (void *)newfield));
if (!form || !newfield || !form->current || (newfield->form != form))
if (!form || !newfield || (newfield->form != form))
returnCode(E_BAD_ARGUMENT);
if ((form->status & _IN_DRIVER))
@ -1423,34 +1512,10 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield)
if ((field != newfield) ||
!(form->status & _POSTED))
{
if ((form->w) &&
((unsigned)field->opts & O_VISIBLE) &&
if (field && (form->w) &&
(Field_Has_Option(field, O_VISIBLE)) &&
(field->form->curpage == field->page))
{
_nc_Refresh_Current_Field(form);
if ((unsigned)field->opts & O_PUBLIC)
{
if (field->drows > field->rows)
{
if (form->toprow == 0)
ClrStatus(field, _NEWTOP);
else
SetStatus(field, _NEWTOP);
}
else
{
if (Justification_Allowed(field))
{
Window_To_Buffer(form, field);
werase(form->w);
Perform_Justification(field, form->w);
wsyncup(form->w);
}
}
}
delwin(form->w);
form->w = (WINDOW *)0;
}
_nc_Unset_Current_Field(form);
field = newfield;
@ -1998,7 +2063,7 @@ Vertical_Scrolling(int (*const fct) (FORM *), FORM *form)
{
res = fct(form);
if (res == E_OK)
SetStatus(form, _NEWTOP);
SetStatus(form->current, _NEWTOP);
}
return (res);
}
@ -2430,7 +2495,7 @@ Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM *form)
int result = E_REQUEST_DENIED;
bool Last_Row = ((field->drows - 1) == form->currow);
if (((unsigned)field->opts & O_WRAP) && /* wrapping wanted */
if ((Field_Has_Option(field, O_WRAP)) && /* wrapping wanted */
(!Single_Line_Field(field)) && /* must be multi-line */
(There_Is_No_Room_For_A_Char_In_Line(form)) && /* line is full */
(!Last_Row || Growable(field))) /* there are more lines */
@ -3111,7 +3176,7 @@ Check_Field(FORM *form, FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
{
if (typ)
{
if ((unsigned)field->opts & O_NULLOK)
if (Field_Has_Option(field, O_NULLOK))
{
FIELD_CELL *bp = field->buf;
@ -3168,7 +3233,7 @@ _nc_Internal_Validation(FORM *form)
Synchronize_Buffer(form);
if ((form->status & _FCHECK_REQUIRED) ||
(!((unsigned)field->opts & O_PASSOK)))
(!(Field_Has_Option(field, O_PASSOK))))
{
if (!Check_Field(form, field->type, field, (TypeArgument *)(field->arg)))
return FALSE;
@ -3273,7 +3338,7 @@ _nc_First_Active_Field(FORM *form)
do
{
field = (field == last_on_page) ? first : field + 1;
if (((unsigned)(*field)->opts & O_VISIBLE))
if (Field_Has_Option(*field, O_VISIBLE))
break;
}
while (proposed != (*field));
@ -4001,9 +4066,9 @@ Data_Entry_w(FORM *form, wchar_t c)
int result = E_REQUEST_DENIED;
T((T_CALLED("Data_Entry(%p,%s)"), (void *)form, _tracechtype((chtype)c)));
if (((unsigned)field->opts & O_EDIT)
if ((Field_Has_Option(field, O_EDIT))
#if FIX_FORM_INACTIVE_BUG
&& ((unsigned)field->opts & O_ACTIVE)
&& (Field_Has_Option(field, O_ACTIVE))
#endif
)
{
@ -4011,9 +4076,9 @@ Data_Entry_w(FORM *form, wchar_t c)
cchar_t temp_ch;
given[0] = c;
given[1] = 1;
given[1] = 0;
setcchar(&temp_ch, given, 0, 0, (void *)0);
if (((unsigned)field->opts & O_BLANK) &&
if ((Field_Has_Option(field, O_BLANK)) &&
First_Position_In_Current_Field(form) &&
!(form->status & _FCHECK_REQUIRED) &&
!(form->status & _WINDOW_MODIFIED))
@ -4044,7 +4109,7 @@ Data_Entry_w(FORM *form, wchar_t c)
((field->dcols - 1) == form->curcol));
form->status |= _WINDOW_MODIFIED;
if (End_Of_Field && !Growable(field) && ((unsigned)field->opts & O_AUTOSKIP))
if (End_Of_Field && !Growable(field) && (Field_Has_Option(field, O_AUTOSKIP)))
result = Inter_Field_Navigation(FN_Next_Field, form);
else
{
@ -4088,13 +4153,13 @@ Data_Entry(FORM *form, int c)
int result = E_REQUEST_DENIED;
T((T_CALLED("Data_Entry(%p,%s)"), (void *)form, _tracechtype((chtype)c)));
if (((unsigned)field->opts & O_EDIT)
if ((Field_Has_Option(field, O_EDIT))
#if FIX_FORM_INACTIVE_BUG
&& ((unsigned)field->opts & O_ACTIVE)
&& (Field_Has_Option(field, O_ACTIVE))
#endif
)
{
if (((unsigned)field->opts & O_BLANK) &&
if ((Field_Has_Option(field, O_BLANK)) &&
First_Position_In_Current_Field(form) &&
!(form->status & _FCHECK_REQUIRED) &&
!(form->status & _WINDOW_MODIFIED))
@ -4124,8 +4189,14 @@ Data_Entry(FORM *form, int c)
bool End_Of_Field = (((field->drows - 1) == form->currow) &&
((field->dcols - 1) == form->curcol));
if (Field_Has_Option(field, O_EDGE_INSERT_STAY))
move_after_insert = !!(form->curcol
- form->begincol
- field->cols
+ 1);
SetStatus(form, _WINDOW_MODIFIED);
if (End_Of_Field && !Growable(field) && ((unsigned)field->opts & O_AUTOSKIP))
if (End_Of_Field && !Growable(field) && (Field_Has_Option(field, O_AUTOSKIP)))
result = Inter_Field_Navigation(FN_Next_Field, form);
else
{
@ -4288,12 +4359,14 @@ form_driver(FORM *form, int c)
const Binding_Info *BI = (Binding_Info *) 0;
int res = E_UNKNOWN_COMMAND;
move_after_insert = TRUE;
T((T_CALLED("form_driver(%p,%d)"), (void *)form, c));
if (!form)
RETURN(E_BAD_ARGUMENT);
if (!(form->field))
if (!(form->field) || !(form->current))
RETURN(E_NOT_CONNECTED);
assert(form->page);
@ -4493,7 +4566,7 @@ form_driver_w(FORM *form, int type, wchar_t c)
const Binding_Info *BI = (Binding_Info *) 0;
int res = E_UNKNOWN_COMMAND;
T((T_CALLED("form_driver(%p,%d)"), (void *)form, (int) c));
T((T_CALLED("form_driver(%p,%d)"), (void *)form, (int)c));
if (!form)
RETURN(E_BAD_ARGUMENT);
@ -4905,7 +4978,7 @@ _nc_Widen_String(char *source, int *lengthp)
{
if (pass)
{
result[need] = source[passed];
result[need] = (wchar_t)source[passed];
}
++need;
++passed;

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2016,2018 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 *
@ -32,13 +32,14 @@
#include "form.priv.h"
MODULE_ID("$Id: frm_hook.c,v 1.16 2012/03/11 00:37:16 tom Exp $")
MODULE_ID("$Id: frm_hook.c,v 1.18 2018/12/16 00:13:36 tom Exp $")
/* "Template" macro to generate function to set application specific hook */
#define GEN_HOOK_SET_FUNCTION( typ, name ) \
NCURSES_IMPEXP int NCURSES_API set_ ## typ ## _ ## name (FORM *form, Form_Hook func)\
{\
T((T_CALLED("set_" #typ"_"#name"(%p,%p)"), (void *) form, func));\
TR_FUNC_BFR(1); \
T((T_CALLED("set_" #typ"_"#name"(%p,%s)"), (void *) form, TR_FUNC_ARG(0, func)));\
(Normalize_Form( form ) -> typ ## name) = func ;\
RETURN(E_OK);\
}

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2012,2020 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 *
@ -32,12 +32,12 @@
#include "form.priv.h"
MODULE_ID("$Id: frm_post.c,v 1.11 2012/06/10 00:27:49 tom Exp $")
MODULE_ID("$Id: frm_post.c,v 1.12 2020/01/18 17:05:03 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
| Facility : libnform
| Function : int post_form(FORM * form)
|
|
| Description : Writes the form into its associated subwindow.
|
| Return Values : E_OK - success
@ -69,7 +69,7 @@ post_form(FORM *form)
if ((form->cols > getmaxx(formwin)) || (form->rows > getmaxy(formwin)))
RETURN(E_NO_ROOM);
/* reset form->curpage to an invald value. This forces Set_Form_Page
/* reset form->curpage to an invalid value. This forces Set_Form_Page
to do the page initialization which is required by post_form.
*/
page = form->curpage;
@ -87,9 +87,9 @@ post_form(FORM *form)
}
/*---------------------------------------------------------------------------
| Facility : libnform
| Facility : libnform
| Function : int unpost_form(FORM * form)
|
|
| Description : Erase form from its associated subwindow.
|
| Return Values : E_OK - success

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2012,2015 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 *
@ -37,73 +37,77 @@
#include "form.priv.h"
MODULE_ID("$Id: frm_req_name.c,v 1.18 2012/07/21 23:17:23 tom Exp $")
MODULE_ID("$Id: frm_req_name.c,v 1.19 2015/04/04 17:11:46 tom Exp $")
static const char *request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
#define DATA(s) { s }
static const char request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1][13] =
{
"NEXT_PAGE",
"PREV_PAGE",
"FIRST_PAGE",
"LAST_PAGE",
DATA("NEXT_PAGE"),
DATA("PREV_PAGE"),
DATA("FIRST_PAGE"),
DATA("LAST_PAGE"),
"NEXT_FIELD",
"PREV_FIELD",
"FIRST_FIELD",
"LAST_FIELD",
"SNEXT_FIELD",
"SPREV_FIELD",
"SFIRST_FIELD",
"SLAST_FIELD",
"LEFT_FIELD",
"RIGHT_FIELD",
"UP_FIELD",
"DOWN_FIELD",
DATA("NEXT_FIELD"),
DATA("PREV_FIELD"),
DATA("FIRST_FIELD"),
DATA("LAST_FIELD"),
DATA("SNEXT_FIELD"),
DATA("SPREV_FIELD"),
DATA("SFIRST_FIELD"),
DATA("SLAST_FIELD"),
DATA("LEFT_FIELD"),
DATA("RIGHT_FIELD"),
DATA("UP_FIELD"),
DATA("DOWN_FIELD"),
"NEXT_CHAR",
"PREV_CHAR",
"NEXT_LINE",
"PREV_LINE",
"NEXT_WORD",
"PREV_WORD",
"BEG_FIELD",
"END_FIELD",
"BEG_LINE",
"END_LINE",
"LEFT_CHAR",
"RIGHT_CHAR",
"UP_CHAR",
"DOWN_CHAR",
DATA("NEXT_CHAR"),
DATA("PREV_CHAR"),
DATA("NEXT_LINE"),
DATA("PREV_LINE"),
DATA("NEXT_WORD"),
DATA("PREV_WORD"),
DATA("BEG_FIELD"),
DATA("END_FIELD"),
DATA("BEG_LINE"),
DATA("END_LINE"),
DATA("LEFT_CHAR"),
DATA("RIGHT_CHAR"),
DATA("UP_CHAR"),
DATA("DOWN_CHAR"),
"NEW_LINE",
"INS_CHAR",
"INS_LINE",
"DEL_CHAR",
"DEL_PREV",
"DEL_LINE",
"DEL_WORD",
"CLR_EOL",
"CLR_EOF",
"CLR_FIELD",
"OVL_MODE",
"INS_MODE",
"SCR_FLINE",
"SCR_BLINE",
"SCR_FPAGE",
"SCR_BPAGE",
"SCR_FHPAGE",
"SCR_BHPAGE",
"SCR_FCHAR",
"SCR_BCHAR",
"SCR_HFLINE",
"SCR_HBLINE",
"SCR_HFHALF",
"SCR_HBHALF",
DATA("NEW_LINE"),
DATA("INS_CHAR"),
DATA("INS_LINE"),
DATA("DEL_CHAR"),
DATA("DEL_PREV"),
DATA("DEL_LINE"),
DATA("DEL_WORD"),
DATA("CLR_EOL"),
DATA("CLR_EOF"),
DATA("CLR_FIELD"),
DATA("OVL_MODE"),
DATA("INS_MODE"),
DATA("SCR_FLINE"),
DATA("SCR_BLINE"),
DATA("SCR_FPAGE"),
DATA("SCR_BPAGE"),
DATA("SCR_FHPAGE"),
DATA("SCR_BHPAGE"),
DATA("SCR_FCHAR"),
DATA("SCR_BCHAR"),
DATA("SCR_HFLINE"),
DATA("SCR_HBLINE"),
DATA("SCR_HFHALF"),
DATA("SCR_HBHALF"),
"VALIDATION",
"NEXT_CHOICE",
"PREV_CHOICE"
DATA("VALIDATION"),
DATA("NEXT_CHOICE"),
DATA("PREV_CHOICE")
};
#undef DATA
#define A_SIZE (sizeof(request_names)/sizeof(request_names[0]))
/*---------------------------------------------------------------------------

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2008-2010,2012 Free Software Foundation, Inc. *
* Copyright (c) 2008-2018,2020 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 *
@ -34,7 +34,7 @@
#include "form.priv.h"
MODULE_ID("$Id: fty_generic.c,v 1.6 2012/06/10 00:27:49 tom Exp $")
MODULE_ID("$Id: fty_generic.c,v 1.9 2020/01/18 17:08:04 tom Exp $")
/*
* This is not a full implementation of a field type, but adds some
@ -55,15 +55,15 @@ MODULE_ID("$Id: fty_generic.c,v 1.6 2012/06/10 00:27:49 tom Exp $")
* fieldtype they register with the forms library using this call.
*
* For that purpose we have extended the fieldtype struc by a new element
* that gets the arguments from a single struct passed by the caller.
*
* that gets the arguments from a single struct passed by the caller.
*
*/
#if NCURSES_INTEROP_FUNCS
/*---------------------------------------------------------------------------
| Facility : libnform
| Facility : libnform
| Function : static void *Generic_This_Type( void * arg )
|
|
| Description : We interpret the passed arg just as a handle the
| calling language uses to keep track of its allocated
| argument structures. We can simply copy it back.
@ -89,7 +89,7 @@ Generic_This_Type(void *arg)
| write a field_check and a char_check function and give
| them as input to this call. A callback to allow the
| release of the allocated memory must also be provided.
| For generic field types, we provide some more
| For generic field types, we provide some more
| information about the field as parameters.
|
| If an error occurs, errno is set to
@ -109,8 +109,14 @@ _nc_generic_fieldtype(bool (*const field_check) (FORM *, FIELD *, const void *),
int code = E_SYSTEM_ERROR;
FIELDTYPE *res = (FIELDTYPE *)0;
T((T_CALLED("_nc_generic_fieldtype(%p,%p,%p,%p,%p)"),
field_check, char_check, next, prev, freecallback));
TR_FUNC_BFR(5);
T((T_CALLED("_nc_generic_fieldtype(%s,%s,%s,%s,%s)"),
TR_FUNC_ARG(0, field_check),
TR_FUNC_ARG(1, char_check),
TR_FUNC_ARG(2, next),
TR_FUNC_ARG(3, prev),
TR_FUNC_ARG(4, freecallback)));
if (field_check || char_check)
{
@ -139,16 +145,16 @@ _nc_generic_fieldtype(bool (*const field_check) (FORM *, FIELD *, const void *),
}
/*---------------------------------------------------------------------------
| Facility : libnform
| Facility : libnform
| Function : static TypeArgument *GenericArgument(
| const FIELDTYPE* typ,
| int (*argiterator)(void**),
| int* err)
|
|
| Description : The iterator callback must browse through all fieldtype
| parameters that have an argument associated with the
| type. The iterator returns 1 if the operation to get
| the next element was successfull, 0 otherwise. If the
| the next element was successful, 0 otherwise. If the
| iterator could move to the next argument, it fills
| the void* pointer representing the argument into the
| location provided as argument to the iterator.
@ -200,14 +206,14 @@ GenericArgument(const FIELDTYPE *typ,
}
/*---------------------------------------------------------------------------
| Facility : libnform
| Facility : libnform
| Function : int _nc_set_generic_fieldtype(
| FIELD* field,
| FIELDTYPE* ftyp,
| int (*argiterator)(void**))
|
|
| Description : Assign the fieldtype to the field and use the iterator
| mechanism to get the arguments when a check is
| mechanism to get the arguments when a check is
| performed.
|
| Return Values : E_OK if all went well
@ -258,11 +264,11 @@ _nc_set_generic_fieldtype(FIELD *field,
}
/*---------------------------------------------------------------------------
| Facility : libnform
| Facility : libnform
| Function : WINDOW* _nc_form_cursor(
| FORM* form,
| int *pRow, int *pCol)
|
|
| Description : Get the current position of the form cursor position
| We also return the field window
|

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2012,2019 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 *
@ -34,13 +34,13 @@
#include "form.priv.h"
MODULE_ID("$Id: fty_num.c,v 1.29 2012/02/23 10:02:15 tom Exp $")
MODULE_ID("$Id: fty_num.c,v 1.31 2019/03/30 21:20:04 tom Exp $")
#if HAVE_LOCALE_H
#include <locale.h>
#endif
#if HAVE_LOCALE_H
#if HAVE_LOCALE_H && HAVE_LOCALECONV
#define isDecimalPoint(c) ((c) == ((L && L->decimal_point) ? *(L->decimal_point) : '.'))
#else
#define isDecimalPoint(c) ((c) == '.')
@ -96,7 +96,7 @@ Generic_This_Type(void *arg)
argn->low = args->low;
argn->high = args->high;
#if HAVE_LOCALE_H
#if HAVE_LOCALE_H && HAVE_LOCALECONV
argn->L = localeconv();
#else
argn->L = NULL;

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2015,2018 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 *
@ -34,10 +34,17 @@
#include "form.priv.h"
MODULE_ID("$Id: fty_regex.c,v 1.25 2012/10/27 20:12:53 tom Exp $")
MODULE_ID("$Id: fty_regex.c,v 1.27 2018/07/14 21:41:39 tom Exp $")
#if HAVE_REGEX_H_FUNCS /* We prefer POSIX regex */
#if HAVE_REGEX_H_FUNCS || HAVE_LIB_PCRE2 /* We prefer POSIX regex */
#if HAVE_PCRE2_POSIX_H
#include <pcre2-posix.h>
#elif HAVE_PCREPOSIX_H
#include <pcreposix.h>
#else
#include <regex.h>
#endif
typedef struct
{
@ -113,7 +120,7 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED)
if (rx)
{
preg = typeMalloc(RegExp_Arg, 1);
preg = typeCalloc(RegExp_Arg, 1);
if (preg)
{
@ -264,6 +271,7 @@ Free_RegularExpression_Type(void *argp MAYBE_UNUSED)
{
free(ap->refCount);
regfree(ap->pRegExp);
free(ap->pRegExp);
}
#elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS
if (ap->compiled_expression)

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
* Copyright (c) 1998-2015,2017 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 *
@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
* Author: Thomas E. Dickey 1996-2005,2010 *
* Author: Thomas E. Dickey 1996-on *
****************************************************************************/
/* LINTLIBRARY */
@ -110,6 +110,11 @@ int set_current_field(
FIELD *field)
{ return(*(int *)0); }
#undef unfocus_current_field
int unfocus_current_field(
FORM *const form)
{ return(*(int *)0); }
#undef current_field
FIELD *current_field(
const FORM *form)
@ -458,6 +463,11 @@ int _nc_Synchronize_Options(
Field_Options newopts)
{ return(*(int *)0); }
#undef _nc_Unset_Current_Field
void _nc_Unset_Current_Field(
FORM *form)
{ /* void */ }
#undef _nc_Set_Current_Field
int _nc_Set_Current_Field(
FORM *form,
@ -674,6 +684,10 @@ alnumARG;
#undef TYPE_ALNUM
FIELDTYPE *TYPE_ALNUM;
#undef _nc_TYPE_ALNUM
FIELDTYPE *_nc_TYPE_ALNUM(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_alpha.c */
typedef struct
@ -685,6 +699,10 @@ alphaARG;
#undef TYPE_ALPHA
FIELDTYPE *TYPE_ALPHA;
#undef _nc_TYPE_ALPHA
FIELDTYPE *_nc_TYPE_ALPHA(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_enum.c */
typedef struct
@ -707,11 +725,49 @@ enumParams;
#undef TYPE_ENUM
FIELDTYPE *TYPE_ENUM;
#undef _nc_TYPE_ENUM
FIELDTYPE *_nc_TYPE_ENUM(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_generic.c */
#undef _nc_fty_generic
void _nc_fty_generic(void)
{ /* void */ }
#undef _nc_generic_fieldtype
FIELDTYPE *_nc_generic_fieldtype(
NCURSES_BOOL (*const field_check)(
FORM *p1,
FIELD *p2,
const void *p3),
NCURSES_BOOL (*const char_check)(
int p1,
FORM *p2,
FIELD *p3,
const void *p4),
NCURSES_BOOL (*const next)(
FORM *p1,
FIELD *p2,
const void *p3),
NCURSES_BOOL (*const prev)(
FORM *p1,
FIELD *p2,
const void *p3),
void (*freecallback)(
void *p1))
{ return(*(FIELDTYPE **)0); }
#undef _nc_set_generic_fieldtype
int _nc_set_generic_fieldtype(
FIELD *field,
FIELDTYPE *ftyp,
int (*argiterator)(
void **p1))
{ return(*(int *)0); }
#undef _nc_form_cursor
WINDOW *_nc_form_cursor(
const FORM *form,
int *pRow,
int *pCol)
{ return(*(WINDOW **)0); }
/* ./fty_int.c */
@ -734,13 +790,20 @@ integerPARM;
#undef TYPE_INTEGER
FIELDTYPE *TYPE_INTEGER;
#undef _nc_TYPE_INTEGER
FIELDTYPE *_nc_TYPE_INTEGER(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_ipv4.c */
#undef TYPE_IPV4
FIELDTYPE *TYPE_IPV4;
/* ./fty_num.c */
#undef _nc_TYPE_IPV4
FIELDTYPE *_nc_TYPE_IPV4(void)
{ return(*(FIELDTYPE **)0); }
#include <locale.h>
/* ./fty_num.c */
typedef struct
{
@ -762,9 +825,11 @@ thisPARM;
#undef TYPE_NUMERIC
FIELDTYPE *TYPE_NUMERIC;
/* ./fty_regex.c */
#undef _nc_TYPE_NUMERIC
FIELDTYPE *_nc_TYPE_NUMERIC(void)
{ return(*(FIELDTYPE **)0); }
#include <regex.h>
/* ./fty_regex.c */
typedef struct
{
@ -775,3 +840,7 @@ RegExp_Arg;
#undef TYPE_REGEXP
FIELDTYPE *TYPE_REGEXP;
#undef _nc_TYPE_REGEXP
FIELDTYPE *_nc_TYPE_REGEXP(void)
{ return(*(FIELDTYPE **)0); }

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2010 Free Software Foundation, Inc. *
* Copyright (c) 2010-2015,2017 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 *
@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
* Author: Thomas E. Dickey 2010 *
* Author: Thomas E. Dickey 2010-on *
****************************************************************************/
/* LINTLIBRARY */
@ -110,6 +110,11 @@ int set_current_field(
FIELD *field)
{ return(*(int *)0); }
#undef unfocus_current_field
int unfocus_current_field(
FORM *const form)
{ return(*(int *)0); }
#undef current_field
FIELD *current_field(
const FORM *form)
@ -458,6 +463,11 @@ int _nc_Synchronize_Options(
Field_Options newopts)
{ return(*(int *)0); }
#undef _nc_Unset_Current_Field
void _nc_Unset_Current_Field(
FORM *form)
{ /* void */ }
#undef _nc_Set_Current_Field
int _nc_Set_Current_Field(
FORM *form,
@ -674,6 +684,10 @@ alnumARG;
#undef TYPE_ALNUM
FIELDTYPE *TYPE_ALNUM;
#undef _nc_TYPE_ALNUM
FIELDTYPE *_nc_TYPE_ALNUM(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_alpha.c */
typedef struct
@ -685,6 +699,10 @@ alphaARG;
#undef TYPE_ALPHA
FIELDTYPE *TYPE_ALPHA;
#undef _nc_TYPE_ALPHA
FIELDTYPE *_nc_TYPE_ALPHA(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_enum.c */
typedef struct
@ -707,11 +725,49 @@ enumParams;
#undef TYPE_ENUM
FIELDTYPE *TYPE_ENUM;
#undef _nc_TYPE_ENUM
FIELDTYPE *_nc_TYPE_ENUM(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_generic.c */
#undef _nc_fty_generic
void _nc_fty_generic(void)
{ /* void */ }
#undef _nc_generic_fieldtype
FIELDTYPE *_nc_generic_fieldtype(
NCURSES_BOOL (*const field_check)(
FORM *p1,
FIELD *p2,
const void *p3),
NCURSES_BOOL (*const char_check)(
int p1,
FORM *p2,
FIELD *p3,
const void *p4),
NCURSES_BOOL (*const next)(
FORM *p1,
FIELD *p2,
const void *p3),
NCURSES_BOOL (*const prev)(
FORM *p1,
FIELD *p2,
const void *p3),
void (*freecallback)(
void *p1))
{ return(*(FIELDTYPE **)0); }
#undef _nc_set_generic_fieldtype
int _nc_set_generic_fieldtype(
FIELD *field,
FIELDTYPE *ftyp,
int (*argiterator)(
void **p1))
{ return(*(int *)0); }
#undef _nc_form_cursor
WINDOW *_nc_form_cursor(
const FORM *form,
int *pRow,
int *pCol)
{ return(*(WINDOW **)0); }
/* ./fty_int.c */
@ -734,13 +790,20 @@ integerPARM;
#undef TYPE_INTEGER
FIELDTYPE *TYPE_INTEGER;
#undef _nc_TYPE_INTEGER
FIELDTYPE *_nc_TYPE_INTEGER(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_ipv4.c */
#undef TYPE_IPV4
FIELDTYPE *TYPE_IPV4;
/* ./fty_num.c */
#undef _nc_TYPE_IPV4
FIELDTYPE *_nc_TYPE_IPV4(void)
{ return(*(FIELDTYPE **)0); }
#include <locale.h>
/* ./fty_num.c */
typedef struct
{
@ -762,9 +825,11 @@ thisPARM;
#undef TYPE_NUMERIC
FIELDTYPE *TYPE_NUMERIC;
/* ./fty_regex.c */
#undef _nc_TYPE_NUMERIC
FIELDTYPE *_nc_TYPE_NUMERIC(void)
{ return(*(FIELDTYPE **)0); }
#include <regex.h>
/* ./fty_regex.c */
typedef struct
{
@ -775,3 +840,7 @@ RegExp_Arg;
#undef TYPE_REGEXP
FIELDTYPE *TYPE_REGEXP;
#undef _nc_TYPE_REGEXP
FIELDTYPE *_nc_TYPE_REGEXP(void)
{ return(*(FIELDTYPE **)0); }

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2010,2013 Free Software Foundation, Inc. *
* Copyright (c) 2010-2015,2017 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 *
@ -110,6 +110,11 @@ int set_current_field(
FIELD *field)
{ return(*(int *)0); }
#undef unfocus_current_field
int unfocus_current_field(
FORM *const form)
{ return(*(int *)0); }
#undef current_field
FIELD *current_field(
const FORM *form)
@ -458,6 +463,11 @@ int _nc_Synchronize_Options(
Field_Options newopts)
{ return(*(int *)0); }
#undef _nc_Unset_Current_Field
void _nc_Unset_Current_Field(
FORM *form)
{ /* void */ }
#undef _nc_Set_Current_Field
int _nc_Set_Current_Field(
FORM *form,
@ -687,6 +697,10 @@ alnumARG;
#undef TYPE_ALNUM
FIELDTYPE *TYPE_ALNUM;
#undef _nc_TYPE_ALNUM
FIELDTYPE *_nc_TYPE_ALNUM(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_alpha.c */
typedef struct
@ -698,6 +712,10 @@ alphaARG;
#undef TYPE_ALPHA
FIELDTYPE *TYPE_ALPHA;
#undef _nc_TYPE_ALPHA
FIELDTYPE *_nc_TYPE_ALPHA(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_enum.c */
typedef struct
@ -720,11 +738,49 @@ enumParams;
#undef TYPE_ENUM
FIELDTYPE *TYPE_ENUM;
#undef _nc_TYPE_ENUM
FIELDTYPE *_nc_TYPE_ENUM(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_generic.c */
#undef _nc_fty_generic
void _nc_fty_generic(void)
{ /* void */ }
#undef _nc_generic_fieldtype
FIELDTYPE *_nc_generic_fieldtype(
NCURSES_BOOL (*const field_check)(
FORM *p1,
FIELD *p2,
const void *p3),
NCURSES_BOOL (*const char_check)(
int p1,
FORM *p2,
FIELD *p3,
const void *p4),
NCURSES_BOOL (*const next)(
FORM *p1,
FIELD *p2,
const void *p3),
NCURSES_BOOL (*const prev)(
FORM *p1,
FIELD *p2,
const void *p3),
void (*freecallback)(
void *p1))
{ return(*(FIELDTYPE **)0); }
#undef _nc_set_generic_fieldtype
int _nc_set_generic_fieldtype(
FIELD *field,
FIELDTYPE *ftyp,
int (*argiterator)(
void **p1))
{ return(*(int *)0); }
#undef _nc_form_cursor
WINDOW *_nc_form_cursor(
const FORM *form,
int *pRow,
int *pCol)
{ return(*(WINDOW **)0); }
/* ./fty_int.c */
@ -747,13 +803,20 @@ integerPARM;
#undef TYPE_INTEGER
FIELDTYPE *TYPE_INTEGER;
#undef _nc_TYPE_INTEGER
FIELDTYPE *_nc_TYPE_INTEGER(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_ipv4.c */
#undef TYPE_IPV4
FIELDTYPE *TYPE_IPV4;
/* ./fty_num.c */
#undef _nc_TYPE_IPV4
FIELDTYPE *_nc_TYPE_IPV4(void)
{ return(*(FIELDTYPE **)0); }
#include <locale.h>
/* ./fty_num.c */
typedef struct
{
@ -775,9 +838,11 @@ thisPARM;
#undef TYPE_NUMERIC
FIELDTYPE *TYPE_NUMERIC;
/* ./fty_regex.c */
#undef _nc_TYPE_NUMERIC
FIELDTYPE *_nc_TYPE_NUMERIC(void)
{ return(*(FIELDTYPE **)0); }
#include <regex.h>
/* ./fty_regex.c */
typedef struct
{
@ -788,3 +853,7 @@ RegExp_Arg;
#undef TYPE_REGEXP
FIELDTYPE *TYPE_REGEXP;
#undef _nc_TYPE_REGEXP
FIELDTYPE *_nc_TYPE_REGEXP(void)
{ return(*(FIELDTYPE **)0); }

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2002-2010,2013 Free Software Foundation, Inc. *
* Copyright (c) 2002-2015,2017 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 *
@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
* Author: Thomas E. Dickey 2002-on *
* Author: Thomas E. Dickey 2002-on *
****************************************************************************/
/* LINTLIBRARY */
@ -110,6 +110,11 @@ int set_current_field(
FIELD *field)
{ return(*(int *)0); }
#undef unfocus_current_field
int unfocus_current_field(
FORM *const form)
{ return(*(int *)0); }
#undef current_field
FIELD *current_field(
const FORM *form)
@ -458,6 +463,11 @@ int _nc_Synchronize_Options(
Field_Options newopts)
{ return(*(int *)0); }
#undef _nc_Unset_Current_Field
void _nc_Unset_Current_Field(
FORM *form)
{ /* void */ }
#undef _nc_Set_Current_Field
int _nc_Set_Current_Field(
FORM *form,
@ -687,6 +697,10 @@ alnumARG;
#undef TYPE_ALNUM
FIELDTYPE *TYPE_ALNUM;
#undef _nc_TYPE_ALNUM
FIELDTYPE *_nc_TYPE_ALNUM(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_alpha.c */
typedef struct
@ -698,6 +712,10 @@ alphaARG;
#undef TYPE_ALPHA
FIELDTYPE *TYPE_ALPHA;
#undef _nc_TYPE_ALPHA
FIELDTYPE *_nc_TYPE_ALPHA(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_enum.c */
typedef struct
@ -720,11 +738,49 @@ enumParams;
#undef TYPE_ENUM
FIELDTYPE *TYPE_ENUM;
#undef _nc_TYPE_ENUM
FIELDTYPE *_nc_TYPE_ENUM(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_generic.c */
#undef _nc_fty_generic
void _nc_fty_generic(void)
{ /* void */ }
#undef _nc_generic_fieldtype
FIELDTYPE *_nc_generic_fieldtype(
NCURSES_BOOL (*const field_check)(
FORM *p1,
FIELD *p2,
const void *p3),
NCURSES_BOOL (*const char_check)(
int p1,
FORM *p2,
FIELD *p3,
const void *p4),
NCURSES_BOOL (*const next)(
FORM *p1,
FIELD *p2,
const void *p3),
NCURSES_BOOL (*const prev)(
FORM *p1,
FIELD *p2,
const void *p3),
void (*freecallback)(
void *p1))
{ return(*(FIELDTYPE **)0); }
#undef _nc_set_generic_fieldtype
int _nc_set_generic_fieldtype(
FIELD *field,
FIELDTYPE *ftyp,
int (*argiterator)(
void **p1))
{ return(*(int *)0); }
#undef _nc_form_cursor
WINDOW *_nc_form_cursor(
const FORM *form,
int *pRow,
int *pCol)
{ return(*(WINDOW **)0); }
/* ./fty_int.c */
@ -747,13 +803,20 @@ integerPARM;
#undef TYPE_INTEGER
FIELDTYPE *TYPE_INTEGER;
#undef _nc_TYPE_INTEGER
FIELDTYPE *_nc_TYPE_INTEGER(void)
{ return(*(FIELDTYPE **)0); }
/* ./fty_ipv4.c */
#undef TYPE_IPV4
FIELDTYPE *TYPE_IPV4;
/* ./fty_num.c */
#undef _nc_TYPE_IPV4
FIELDTYPE *_nc_TYPE_IPV4(void)
{ return(*(FIELDTYPE **)0); }
#include <locale.h>
/* ./fty_num.c */
typedef struct
{
@ -775,9 +838,11 @@ thisPARM;
#undef TYPE_NUMERIC
FIELDTYPE *TYPE_NUMERIC;
/* ./fty_regex.c */
#undef _nc_TYPE_NUMERIC
FIELDTYPE *_nc_TYPE_NUMERIC(void)
{ return(*(FIELDTYPE **)0); }
#include <regex.h>
/* ./fty_regex.c */
typedef struct
{
@ -788,3 +853,7 @@ RegExp_Arg;
#undef TYPE_REGEXP
FIELDTYPE *TYPE_REGEXP;
#undef _nc_TYPE_REGEXP
FIELDTYPE *_nc_TYPE_REGEXP(void)
{ return(*(FIELDTYPE **)0); }

View File

@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. #
# Copyright (c) 1998-2016,2019 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"), #
@ -29,12 +29,12 @@
# Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995
# and: Eric S. Raymond <esr@snark.thyrsus.com>
#
# $Id: Caps,v 1.38 2011/10/15 23:10:18 tom Exp $
# $Id: Caps,v 1.44 2019/07/27 00:36:44 tom Exp $
#
# This is the master termcap/terminfo capability table.
#
# This table is used to generate initializers for tables that drive tic,
# infocmp, and the library compilation code used to support the termcap
# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@ -97,7 +97,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
# as a terminfo object, and breaking this would be bad. It's up the ncurses
# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@ -119,14 +119,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
# CONTROLLING ENTRY LENGTH
# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
# the set of keys the `joe' editor will be upset if it can't see. So don't
# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@ -147,7 +147,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
# into history and GNU termcap's application base shrinks towards being GNU
# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@ -166,7 +166,7 @@
#%The \fBcapname\fR is the short name used in the text of the database,
#%and is used by a person updating the database.
#%Whenever possible, capnames are chosen to be the same as or similar to
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%identical or very similar names). Semantics are also intended to match
#%those of the specification.
#%
@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
@ -271,7 +271,7 @@ num_labels nlab num Nl - - ----- number of labels on screen
label_height lh num lh - - ----- rows in each label
label_width lw num lw - - ----- columns in each label
max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle
maximum_windows wnum num MW - - ----- maximum number of defineable windows
maximum_windows wnum num MW - - ----- maximum number of definable windows
# These came in with SVr4's color support
max_colors colors num Co - - ----- maximum number of colors on screen
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
@ -719,7 +719,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times
bit_image_newline binel str Zz - - ----- Move to next row of the bit image
bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row
color_names colornm str Yw - - ----- Give name for color #1
define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region
end_bit_image_region endbi str Yy - - ----- End a bit-image region
set_color_band setcolor str Yz - - ----- Change to ribbon color #1
set_page_length slines str YZ - - ----- Set page length to #1 lines
@ -826,7 +826,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@ -843,9 +843,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
# The `ma' capability seems to have been designed to map between the rogue(2)
# motion keys (including jkhl) and characters emitted by arrow keys on some
# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
# The `ma' capability was a 4.0BSD feature used by vi version 2.
# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@ -871,7 +871,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@ -887,7 +887,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
# in the mytinfo tables.
# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@ -936,7 +936,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
# (via IGNORE aliases further down). We don't want to do normal pad
# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@ -958,303 +958,9 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
# This section is almost all comments. What it's mainly for is to describe
# what capabilities need to be squeezed out to get down to the XSI Curses
# standard set. They are flagged with K.
#
# HP extensions
#
# These extensions follow ptr_non (replacing everything after it) in HP
# terminfo files. Except for memory_lock and memory_unlock, they are
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
# (see Caps-ncurses for the complete set of comments)
#
memory_lock meml str ml - - ----K lock memory above cursor
memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
#key_f11 kf11 str F1 - - ----- F11 function key
#key_f12 kf12 str F2 - - ----- F12 function key
#key_f13 kf13 str F3 - - ----- F13 function key
#key_f14 kf14 str F4 - - ----- F14 function key
#key_f15 kf15 str F5 - - ----- F15 function key
#key_f16 kf16 str F6 - - ----- F16 function key
#key_f17 kf17 str F7 - - ----- F17 function key
#key_f18 kf18 str F8 - - ----- F18 function key
#key_f19 kf19 str F9 - - ----- F19 function key
#key_f20 kf20 str FA - - ----- F20 function key
#key_f21 kf21 str FB - - ----- F21 function key
#key_f22 kf22 str FC - - ----- F22 function key
#key_f23 kf23 str FD - - ----- F23 function key
#key_f24 kf24 str FE - - ----- F24 function key
#key_f25 kf25 str FF - - ----- F25 function key
#key_f26 kf26 str FG - - ----- F26 function key
#key_f27 kf27 str FH - - ----- F27 function key
#key_f28 kf28 str FI - - ----- F28 function key
#key_f29 kf29 str FJ - - ----- F29 function key
#key_f30 kf30 str FK - - ----- F30 function key
#key_f31 kf31 str FL - - ----- F31 function key
#key_f32 kf32 str FM - - ----- F32 function key
#key_f33 kf33 str FN - - ----- F33 function key
#key_f34 kf34 str FO - - ----- F34 function key
#key_f35 kf35 str FP - - ----- F35 function key
#key_f36 kf36 str FQ - - ----- F36 function key
#key_f37 kf37 str FR - - ----- F37 function key
#key_f38 kf38 str FS - - ----- F38 function key
#key_f39 kf39 str FT - - ----- F39 function key
#key_f40 kf40 str FU - - ----- F40 function key
#key_f41 kf41 str FV - - ----- F41 function key
#key_f42 kf42 str FW - - ----- F42 function key
#key_f43 kf43 str FX - - ----- F43 function key
#key_f44 kf44 str FY - - ----- F44 function key
#key_f45 kf45 str FZ - - ----- F45 function key
#key_f46 kf46 str Fa - - ----- F46 function key
#key_f47 kf47 str Fb - - ----- F47 function key
#key_f48 kf48 str Fc - - ----- F48 function key
#key_f49 kf49 str Fd - - ----- F49 function key
#key_f50 kf50 str Fe - - ----- F50 function key
#key_f51 kf51 str Ff - - ----- F51 function key
#key_f52 kf52 str Fg - - ----- F52 function key
#key_f53 kf53 str Fh - - ----- F53 function key
#key_f54 kf54 str Fi - - ----- F54 function key
#key_f55 kf55 str Fj - - ----- F55 function key
#key_f56 kf56 str Fk - - ----- F56 function key
#key_f57 kf57 str Fl - - ----- F57 function key
#key_f58 kf58 str Fm - - ----- F58 function key
#key_f59 kf59 str Fn - - ----- F59 function key
#key_f60 kf60 str Fo - - ----- F60 function key
#key_f61 kf61 str Fp - - ----- F61 function key
#key_f62 kf62 str Fq - - ----- F62 function key
#key_f63 kf63 str Fr - - ----- F63 function key
#
# IBM extensions
#
# These extensions follow ptr_non (replacing everything after it) in IBM
# terminfo files.
#
# The places in the box[12] capabilities correspond to acsc characters, here is
# the mapping:
#
# box1[0] = ACS_ULCORNER
# box1[1] = ACS_HLINE
# box1[2] = ACS_URCORNER
# box1[3] = ACS_VLINE
# box1[4] = ACS_LRCORNER
# box1[5] = ACS_LLCORNER
# box1[6] = ACS_TTEE
# box1[7] = ACS_RTEE
# box1[8] = ACS_BTEE
# box1[9] = ACS_LTEE
# box1[10] = ACS_PLUS
#
# The box2 characters are the double-line versions of these forms graphics.
#
box_chars_1 box1 str bx - - ----K box characters primary set
#box_chars_2 box2 str by - - ----K box characters secondary set
#box_attr_1 batt1 str Bx - - ----K attributes for box1
#box_attr_2 batt2 str By - - ----K attributes for box2
#color_bg_0 colb0 str d0 - - ----K background color 0
#color_bg_1 colb1 str d1 - - ----K background color 1
#color_bg_2 colb2 str d2 - - ----K background color 2
#color_bg_3 colb3 str d3 - - ----K background color 3
#color_bg_4 colb4 str d4 - - ----K background color 4
#color_bg_5 colb5 str d5 - - ----K background color 5
#color_bg_6 colb6 str d6 - - ----K background color 6
#color_bg_7 colb7 str d7 - - ----K background color 7
#color_fg_0 colf0 str c0 - - ----K foreground color 0
#color_fg_1 colf1 str c1 - - ----K foreground color 1
#color_fg_2 colf2 str c2 - - ----K foreground color 2
#color_fg_3 colf3 str c3 - - ----K foreground color 3
#color_fg_4 colf4 str c4 - - ----K foreground color 4
#color_fg_5 colf5 str c5 - - ----K foreground color 5
#color_fg_6 colf6 str c6 - - ----K foreground color 6
#color_fg_7 colf7 str c7 - - ----K foreground color 7
#font_0 font0 str f0 - - ----- select font 0
#font_1 font1 str f1 - - ----- select font 1
#font_2 font2 str f2 - - ----- select font 2
#font_3 font3 str f3 - - ----- select font 3
#font_4 font4 str f4 - - ----K select font 4
#font_5 font5 str f5 - - ----K select font 5
#font_6 font6 str f6 - - ----K select font 6
#font_7 font7 str f7 - - ----K select font 7
#key_back_tab kbtab str k0 - - ----- backtab key
#key_do kdo str ki - - ----K do request key
#key_command kcmd str kd - - ----K command-request key
#key_command_pane kcpn str kW - - ----K command-pane key
#key_end kend str kw - - ----- end key
#key_help khlp str kq - - ----- help key
#key_newline knl str nl - - ----K newline key
#key_next_pane knpn str kv - - ----K next-pane key
#key_prev_cmd kppn str kp - - ----K previous-command key
#key_prev_pane kppn str kV - - ----K previous-pane key
#key_quit kquit str kQ - - ----K quit key
#key_select ksel str kU - - ----- select key
#key_scroll_left kscl str kz - - ----K scroll left
#key_scroll_right kscr str kZ - - ----K scroll right
#key_tab ktab str ko - - ----K tab key
#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
#appl_defined_str apstr str za - - ----K application-defined string
# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
# the IBM manual pages, so the cap name strings are guesses. The terminfo
# names are almost certainly right, the termcap ones almost certainly wrong.
#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
# Undocumented capabilities end here
#key_sf1 ksf1 str S1 - - ----K special function key 1
#key_sf2 ksf2 str S2 - - ----K special function key 2
#key_sf3 ksf3 str S3 - - ----K special function key 3
#key_sf4 ksf4 str S4 - - ----K special function key 4
#key_sf5 ksf5 str S5 - - ----K special function key 5
#key_sf6 ksf6 str S6 - - ----K special function key 6
#key_sf7 ksf7 str S7 - - ----K special function key 7
#key_sf8 ksf8 str S8 - - ----K special function key 8
#key_sf9 ksf9 str S9 - - ----K special function key 9
#key_sf10 ksf10 str SA - - ----K special function key 10
# AIX version 3 documents different codes for F11, F12 and does not mention
# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
#key_f11 kf11 str k< - - ----- function key 11
#key_f12 kf12 str k> - - ----- function key 12
# Undocumented capabilities end here.
#key_action kact str kJ - - ----K sent by action key
# The IBM docs say these capabilities are for table-drawing, and are
# valid only for aixterm descriptions.
#enter_topline_mode topl str tp - - ----K start top-line mode
#enter_bottom_mode btml str bm - - ----K start bottom-line mode
#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
#
#############################################################################
#
# ALIAS DECLARATIONS
#
# Here we set up aliases for translating extensions into standard terminfo.
#
#---------------------------------- Termcap aliases -------------------------
#
# BSD aliases:
#
# This is a common error in many termcap files. We'll get notified during
# translation when this (or any other alias) fires.
#
capalias sb sr BSD scroll text down
#
# AT&T extensions:
#
# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
# nonstandard capabilities. Its signature is the KM capability, used to name
# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
# set. Comments in the original, and a little cross-checking with other AT&T
# documentation, seem to establish the following mappings:
#
capalias BO mr AT&T enter_reverse_mode
capalias CI vi AT&T cursor_invisible
capalias CV ve AT&T cursor_normal
capalias DS mh AT&T enter_dim_mode
#capalias EE me AT&T exit_attribute_mode
capalias FE LF AT&T label_on
capalias FL LO AT&T label_off
capalias XS mk AT&T enter_secure_mode
#
# We comment out EE because the conflicting XENIX EE is more common in
# old entries.
#
# XENIX extensions:
#
# These are the ones we know how to translate directly:
#
capalias EE mh XENIX exit_attribute_mode
capalias GE ae XENIX exit_alt_charset_mode
capalias GS as XENIX enter_alt_charset_mode
capalias CF vi XENIX cursor_invis
capalias CO ve XENIX cursor_normal
capalias EN @7 XENIX key_end
capalias HM kh XENIX key_home
capalias LD kL XENIX key_dl
capalias PD kN XENIX key_npage
capalias PN po XENIX prtr_off
capalias PS pf XENIX prtr_on
capalias PU kP XENIX key_ppage
capalias RT @8 XENIX kent
capalias UP ku XENIX kcuu1
capalias G6 IGNORE XENIX double-ACS_ULCORNER
capalias G7 IGNORE XENIX double-ACS_LLCORNER
capalias G5 IGNORE XENIX double-ACS_URCORNER
capalias G8 IGNORE XENIX double-ACS_LRCORNER
capalias Gr IGNORE XENIX double-ACS_LTEE
capalias Gr IGNORE XENIX double-ACS_RTEE
capalias Gu IGNORE XENIX double-ACS_BTEE
capalias Gd IGNORE XENIX double ACS_TTEE
capalias Gh IGNORE XENIX double-ACS_HLINE
capalias Gv IGNORE XENIX double-ACS_VLINE
capalias Gc IGNORE XENIX double-ACS_PLUS
capalias GG IGNORE XENIX acs-glitch
#
# IBM extensions:
#
capalias kq %1 IBM key_help
#
# Iris extensions:
#
capalias HS mh IRIS enter_dim_mode
#
# Tektronix extensions:
#
capalias KA k; Tek key_f10
capalias KB F1 Tek key_f11
capalias KC F2 Tek key_f12
capalias KD F3 Tek key_f13
capalias KE F4 Tek key_f14
capalias KF F5 Tek key_f15
capalias BC Sb Tek set_background
capalias FC Sf Tek set_foreground
#
# There are also the following:
#
# XENIX XENIX variable name name clash with terminfo?
# ----- ------------------- -------------------------
# CL key_char_left
# CR key_char_right
# CW key_change_window
# HP ??
# LF key_linefeed label_off
# NU key_next_unlocked_cell
# PL ??
# PR ??
# RC key_recalc remove_clock
# RF key_toggle_ref req_for_input
# WL key_word_left
# WR key_word_right
#
# If you know what any of the question-marked ones mean, please tell us.
#
#--------------------------------- Terminfo aliases ------------------------
#
# IBM extensions:
#
infoalias font0 s0ds IBM set0_des_seq
infoalias font1 s1ds IBM set1_des_seq
infoalias font2 s2ds IBM set2_des_seq
infoalias font3 s3ds IBM set3_des_seq
infoalias kbtab kcbt IBM key_backtab
infoalias ksel kslt IBM key_select
#
# Some others are identical to SVr4/XPG4 capabilities, in particular:
# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################

View File

@ -0,0 +1,451 @@
##############################################################################
# Copyright (c) 2019 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: Thomas E. Dickey
#
# $Id: Caps-ncurses,v 1.7 2019/05/04 14:10:54 tom Exp $
#
#############################################################################
#
# TERMINFO EXTENSION CAPABILITIES
#
# This section is all comments (selected lines are copied/uncommented into
# specific "Caps" files). The section describes what capabilities need to be
# squeezed out to get down to the XSI Curses standard set. They are flagged
# with K.
#
# HP extensions
#
# These extensions follow ptr_non (replacing everything after it) in HP
# terminfo files. Except for memory_lock and memory_unlock, they are
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
#
#memory_lock meml str ml - - ----K lock memory above cursor
#memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
#key_f11 kf11 str F1 - - ----- F11 function key
#key_f12 kf12 str F2 - - ----- F12 function key
#key_f13 kf13 str F3 - - ----- F13 function key
#key_f14 kf14 str F4 - - ----- F14 function key
#key_f15 kf15 str F5 - - ----- F15 function key
#key_f16 kf16 str F6 - - ----- F16 function key
#key_f17 kf17 str F7 - - ----- F17 function key
#key_f18 kf18 str F8 - - ----- F18 function key
#key_f19 kf19 str F9 - - ----- F19 function key
#key_f20 kf20 str FA - - ----- F20 function key
#key_f21 kf21 str FB - - ----- F21 function key
#key_f22 kf22 str FC - - ----- F22 function key
#key_f23 kf23 str FD - - ----- F23 function key
#key_f24 kf24 str FE - - ----- F24 function key
#key_f25 kf25 str FF - - ----- F25 function key
#key_f26 kf26 str FG - - ----- F26 function key
#key_f27 kf27 str FH - - ----- F27 function key
#key_f28 kf28 str FI - - ----- F28 function key
#key_f29 kf29 str FJ - - ----- F29 function key
#key_f30 kf30 str FK - - ----- F30 function key
#key_f31 kf31 str FL - - ----- F31 function key
#key_f32 kf32 str FM - - ----- F32 function key
#key_f33 kf33 str FN - - ----- F33 function key
#key_f34 kf34 str FO - - ----- F34 function key
#key_f35 kf35 str FP - - ----- F35 function key
#key_f36 kf36 str FQ - - ----- F36 function key
#key_f37 kf37 str FR - - ----- F37 function key
#key_f38 kf38 str FS - - ----- F38 function key
#key_f39 kf39 str FT - - ----- F39 function key
#key_f40 kf40 str FU - - ----- F40 function key
#key_f41 kf41 str FV - - ----- F41 function key
#key_f42 kf42 str FW - - ----- F42 function key
#key_f43 kf43 str FX - - ----- F43 function key
#key_f44 kf44 str FY - - ----- F44 function key
#key_f45 kf45 str FZ - - ----- F45 function key
#key_f46 kf46 str Fa - - ----- F46 function key
#key_f47 kf47 str Fb - - ----- F47 function key
#key_f48 kf48 str Fc - - ----- F48 function key
#key_f49 kf49 str Fd - - ----- F49 function key
#key_f50 kf50 str Fe - - ----- F50 function key
#key_f51 kf51 str Ff - - ----- F51 function key
#key_f52 kf52 str Fg - - ----- F52 function key
#key_f53 kf53 str Fh - - ----- F53 function key
#key_f54 kf54 str Fi - - ----- F54 function key
#key_f55 kf55 str Fj - - ----- F55 function key
#key_f56 kf56 str Fk - - ----- F56 function key
#key_f57 kf57 str Fl - - ----- F57 function key
#key_f58 kf58 str Fm - - ----- F58 function key
#key_f59 kf59 str Fn - - ----- F59 function key
#key_f60 kf60 str Fo - - ----- F60 function key
#key_f61 kf61 str Fp - - ----- F61 function key
#key_f62 kf62 str Fq - - ----- F62 function key
#key_f63 kf63 str Fr - - ----- F63 function key
#
# IBM extensions
#
# These extensions follow ptr_non (replacing everything after it) in IBM
# terminfo files.
#
# The places in the box[12] capabilities correspond to acsc characters, here is
# the mapping:
#
# box1[0] = ACS_ULCORNER
# box1[1] = ACS_HLINE
# box1[2] = ACS_URCORNER
# box1[3] = ACS_VLINE
# box1[4] = ACS_LRCORNER
# box1[5] = ACS_LLCORNER
# box1[6] = ACS_TTEE
# box1[7] = ACS_RTEE
# box1[8] = ACS_BTEE
# box1[9] = ACS_LTEE
# box1[10] = ACS_PLUS
#
# The box2 characters are the double-line versions of these forms graphics.
#
#box_chars_1 box1 str bx - - ----K box characters primary set
#box_chars_2 box2 str by - - ----K box characters secondary set
#box_attr_1 batt1 str Bx - - ----K attributes for box1
#box_attr_2 batt2 str By - - ----K attributes for box2
#color_bg_0 colb0 str d0 - - ----K background color 0
#color_bg_1 colb1 str d1 - - ----K background color 1
#color_bg_2 colb2 str d2 - - ----K background color 2
#color_bg_3 colb3 str d3 - - ----K background color 3
#color_bg_4 colb4 str d4 - - ----K background color 4
#color_bg_5 colb5 str d5 - - ----K background color 5
#color_bg_6 colb6 str d6 - - ----K background color 6
#color_bg_7 colb7 str d7 - - ----K background color 7
#color_fg_0 colf0 str c0 - - ----K foreground color 0
#color_fg_1 colf1 str c1 - - ----K foreground color 1
#color_fg_2 colf2 str c2 - - ----K foreground color 2
#color_fg_3 colf3 str c3 - - ----K foreground color 3
#color_fg_4 colf4 str c4 - - ----K foreground color 4
#color_fg_5 colf5 str c5 - - ----K foreground color 5
#color_fg_6 colf6 str c6 - - ----K foreground color 6
#color_fg_7 colf7 str c7 - - ----K foreground color 7
#font_0 font0 str f0 - - ----- select font 0
#font_1 font1 str f1 - - ----- select font 1
#font_2 font2 str f2 - - ----- select font 2
#font_3 font3 str f3 - - ----- select font 3
#font_4 font4 str f4 - - ----K select font 4
#font_5 font5 str f5 - - ----K select font 5
#font_6 font6 str f6 - - ----K select font 6
#font_7 font7 str f7 - - ----K select font 7
#key_back_tab kbtab str k0 - - ----- backtab key
#key_do kdo str ki - - ----K do request key
#key_command kcmd str kd - - ----K command-request key
#key_command_pane kcpn str kW - - ----K command-pane key
#key_end kend str kw - - ----- end key
#key_help khlp str kq - - ----- help key
#key_newline knl str nl - - ----K newline key
#key_next_pane knpn str kv - - ----K next-pane key
#key_prev_cmd kppn str kp - - ----K previous-command key
#key_prev_pane kppn str kV - - ----K previous-pane key
#key_quit kquit str kQ - - ----K quit key
#key_select ksel str kU - - ----- select key
#key_scroll_left kscl str kz - - ----K scroll left
#key_scroll_right kscr str kZ - - ----K scroll right
#key_tab ktab str ko - - ----K tab key
#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
#appl_defined_str apstr str za - - ----K application-defined string
# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
# the IBM manual pages, so the cap name strings are guesses. The terminfo
# names are almost certainly right, the termcap ones almost certainly wrong.
#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
# Undocumented capabilities end here
#key_sf1 ksf1 str S1 - - ----K special function key 1
#key_sf2 ksf2 str S2 - - ----K special function key 2
#key_sf3 ksf3 str S3 - - ----K special function key 3
#key_sf4 ksf4 str S4 - - ----K special function key 4
#key_sf5 ksf5 str S5 - - ----K special function key 5
#key_sf6 ksf6 str S6 - - ----K special function key 6
#key_sf7 ksf7 str S7 - - ----K special function key 7
#key_sf8 ksf8 str S8 - - ----K special function key 8
#key_sf9 ksf9 str S9 - - ----K special function key 9
#key_sf10 ksf10 str SA - - ----K special function key 10
# AIX version 3 documents different codes for F11, F12 and does not mention
# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
#key_f11 kf11 str k< - - ----- function key 11
#key_f12 kf12 str k> - - ----- function key 12
# Undocumented capabilities end here.
#key_action kact str kJ - - ----K sent by action key
# The IBM docs say these capabilities are for table-drawing, and are
# valid only for aixterm descriptions.
#enter_topline_mode topl str tp - - ----K start top-line mode
#enter_bottom_mode btml str bm - - ----K start bottom-line mode
#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
#
#############################################################################
#
# ALIAS DECLARATIONS
#
# Here we set up aliases for translating extensions into standard terminfo.
#
#---------------------------------- Termcap aliases -------------------------
#
# BSD aliases:
#
# This is a common error in many termcap files. We'll get notified during
# translation when this (or any other alias) fires.
#
capalias sb sr BSD scroll text down
#
# AT&T extensions:
#
# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
# nonstandard capabilities. Its signature is the KM capability, used to name
# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
# set. Comments in the original, and a little cross-checking with other AT&T
# documentation, seem to establish the following mappings:
#
capalias BO mr AT&T enter_reverse_mode
capalias CI vi AT&T cursor_invisible
capalias CV ve AT&T cursor_normal
capalias DS mh AT&T enter_dim_mode
#capalias EE me AT&T exit_attribute_mode
capalias FE LF AT&T label_on
capalias FL LO AT&T label_off
capalias XS mk AT&T enter_secure_mode
#
# We comment out EE because the conflicting XENIX EE is more common in
# old entries.
#
# XENIX extensions:
#
# These are the ones we know how to translate directly:
#
capalias EE mh XENIX exit_attribute_mode
capalias GE ae XENIX exit_alt_charset_mode
capalias GS as XENIX enter_alt_charset_mode
capalias CF vi XENIX cursor_invis
capalias CO ve XENIX cursor_normal
capalias EN @7 XENIX key_end
capalias HM kh XENIX key_home
capalias LD kL XENIX key_dl
capalias PD kN XENIX key_npage
capalias PN po XENIX prtr_off
capalias PS pf XENIX prtr_on
capalias PU kP XENIX key_ppage
capalias RT @8 XENIX kent
capalias UP ku XENIX kcuu1
capalias G6 IGNORE XENIX double-ACS_ULCORNER
capalias G7 IGNORE XENIX double-ACS_LLCORNER
capalias G5 IGNORE XENIX double-ACS_URCORNER
capalias G8 IGNORE XENIX double-ACS_LRCORNER
capalias Gr IGNORE XENIX double-ACS_LTEE
capalias Gr IGNORE XENIX double-ACS_RTEE
capalias Gu IGNORE XENIX double-ACS_BTEE
capalias Gd IGNORE XENIX double ACS_TTEE
capalias Gh IGNORE XENIX double-ACS_HLINE
capalias Gv IGNORE XENIX double-ACS_VLINE
capalias Gc IGNORE XENIX double-ACS_PLUS
capalias GG IGNORE XENIX acs-glitch
#
# IBM extensions:
#
capalias kq %1 IBM key_help
#
# Iris extensions:
#
capalias HS mh IRIS enter_dim_mode
#
# Tektronix extensions:
#
capalias KA k; Tek key_f10
capalias KB F1 Tek key_f11
capalias KC F2 Tek key_f12
capalias KD F3 Tek key_f13
capalias KE F4 Tek key_f14
capalias KF F5 Tek key_f15
capalias BC Sb Tek set_background
capalias FC Sf Tek set_foreground
#
# There are also the following:
#
# XENIX XENIX variable name name clash with terminfo?
# ----- ------------------- -------------------------
# CL key_char_left
# CR key_char_right
# CW key_change_window
# HP ??
# LF key_linefeed label_off
# NU key_next_unlocked_cell
# PL ??
# PR ??
# RC key_recalc remove_clock
# RF key_toggle_ref req_for_input
# WL key_word_left
# WR key_word_right
#
# If you know what any of the question-marked ones mean, please tell us.
#
#--------------------------------- Terminfo aliases ------------------------
#
# IBM extensions:
#
infoalias font0 s0ds IBM set0_des_seq
infoalias font1 s1ds IBM set1_des_seq
infoalias font2 s2ds IBM set2_des_seq
infoalias font3 s3ds IBM set3_des_seq
infoalias kbtab kcbt IBM key_backtab
infoalias ksel kslt IBM key_select
#
# Some others are identical to SVr4/XPG4 capabilities, in particular:
# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################
# This is a table of ncurses user-definable capabilities which applications
# developers may have used. ncurses may use the table to check consistency of
# types/parameters. Applications may have defined others (such as screen's
# LP and NF), but where a standard capability is available, those alternatives
# are not listed here.
#
used_by ncurses
userdef E3 str - clears the terminal's scrollback buffer.
userdef RGB bool - use direct colors with 1/3 of color-pair bits per color.
userdef RGB num n use direct colors with given number of bits per color.
userdef RGB str - use direct colors with given bit-layout.
userdef TS str - like "tsl", but uses no parameter.
userdef U8 num n terminal does/does not support VT100 SI/SO when processing UTF-8 encoding.
userdef XM str n initialize alternate xterm mouse mode
userdef grbom str - disable real bold (not intensity bright) mode.
userdef gsbom str - enable real bold (not intensity bright) mode.
userdef xm str - mouse response, no parameters
userdef xm str n mouse response, p1 = y-ordinate
userdef xm str nn mouse response, p2 = x-ordinate
userdef xm str nnn mouse response, p3 = button
userdef xm str nnns mouse response, p4 = state, e.g., pressed or released
userdef xm str nnnsn mouse response, p5 = y-ordinate starting region
userdef xm str nnnsnn mouse response, p6 = x-ordinate starting region
userdef xm str nnnsnnn mouse response, p7 = y-ordinate ending region
userdef xm str nnnsnnnn mouse response, p8 = x-ordinate ending region
#
used_by screen
userdef AN bool - turn on autonuke.
userdef AX bool - understands ANSI set default fg/bg color (\E[39m / \E[49m).
userdef C0 str - use the string as a conversion table for font '0', like acsc.
userdef C8 bool - terminal shows bold as high-intensity colors.
userdef CE str - switch cursor-keys back to normal mode.
userdef CS str - switch cursor-keys to application mode.
userdef E0 str - switch charset 'G0' back to standard charset. Default is '\E(B'.
userdef G0 bool - terminal can deal with ISO 2022 font selection sequences.
userdef KJ str s set the encoding of the terminal.
userdef OL num n set the screen program's output buffer limit.
userdef S0 str s switch charset 'G0' to the specified charset. Default is '\E(%.'.
userdef TF bool - add missing capabilities to screen's termcap/info entry. (Set by default).
userdef WS str nn resize display. This capability has the desired width and height as arguments. SunView(tm) example: '\E[8;%d;%dt'.
userdef XC str s describe a translation of characters to strings depending on the current font.
userdef XT bool - terminal understands special xterm sequences (OSC, mouse tracking).
userdef Z0 str - change width to 132 columns.
userdef Z1 str - change width to 80 columns.
#
used_by tmux
userdef Cr str - restore the default cursor color.
userdef Cs str s set the cursor color.
userdef Csr str n change the cursor style, overriding Ss.
userdef Ms str ss store the current buffer in the host terminal's selection (clipboard).
userdef Se str - reset the cursor style to the terminal initial state.
userdef Smulx str n modify the appearance of underlines in VTE.
userdef Ss str n change the cursor style.
userdef rmxx str - reset ECMA-48 strikeout/crossed-out attributes.
userdef smxx str - set ECMA-48 strikeout/crossed-out attributes.
#
used_by xterm
userdef kDC3 str - alt delete-character
userdef kDC4 str - shift+alt delete-character
userdef kDC5 str - control delete-character
userdef kDC6 str - shift+control delete-character
userdef kDC7 str - alt+control delete-character
userdef kDN str - shift down-cursor
userdef kDN3 str - alt down-cursor
userdef kDN4 str - shift+alt down-cursor
userdef kDN5 str - control down-cursor
userdef kDN6 str - shift+control down-cursor
userdef kDN7 str - alt+control down-cursor
userdef kEND3 str - alt end
userdef kEND4 str - shift+alt end
userdef kEND5 str - control end
userdef kEND6 str - shift+control end
userdef kEND7 str - alt+control end
userdef kHOM3 str - alt home
userdef kHOM4 str - shift+alt home
userdef kHOM5 str - control home
userdef kHOM6 str - shift+control home
userdef kHOM7 str - alt+control home
userdef kIC3 str - alt insert-character
userdef kIC4 str - shift+alt insert-character
userdef kIC5 str - control insert-character
userdef kIC6 str - shift+control insert-character
userdef kIC7 str - alt+control insert-character
userdef kLFT3 str - alt left-cursor
userdef kLFT4 str - shift+alt left-cursor
userdef kLFT5 str - control left-cursor
userdef kLFT6 str - shift+control left-cursor
userdef kLFT7 str - alt+control left-cursor
userdef kNXT3 str - alt next
userdef kNXT4 str - shift+alt next
userdef kNXT5 str - control next
userdef kNXT6 str - shift+control next
userdef kNXT7 str - alt+control next
userdef kPRV3 str - alt previous
userdef kPRV4 str - shift+alt previous
userdef kPRV5 str - control previous
userdef kPRV6 str - shift+control previous
userdef kPRV7 str - alt+control previous
userdef kRIT3 str - alt right-cursor
userdef kRIT4 str - shift+alt right-cursor
userdef kRIT5 str - control right-cursor
userdef kRIT6 str - shift+control right-cursor
userdef kRIT7 str - alt+control right-cursor
userdef kUP str - shift up-cursor
userdef kUP3 str - alt up-cursor
userdef kUP4 str - shift+alt up-cursor
userdef kUP5 str - control up-cursor
userdef kUP6 str - shift+control up-cursor
userdef kUP7 str - alt+control up-cursor
userdef ka2 str - vt220-keypad extensions
userdef kb1 str - vt220-keypad extensions
userdef kb3 str - vt220-keypad extensions
userdef kc2 str - vt220-keypad extensions
#############################################################################

View File

@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 2001-2010,2011 Free Software Foundation, Inc. #
# Copyright (c) 2001-2016,2019 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"), #
@ -28,13 +28,13 @@
#
# Author: Thomas Dickey
#
# $Id: Caps.aix4,v 1.9 2011/10/15 23:19:16 tom Exp $
# $Id: Caps.aix4,v 1.16 2019/07/27 00:36:44 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with AIX 4.x's terminfo.
#
# This table is used to generate initializers for tables that drive tic,
# infocmp, and the library compilation code used to support the termcap
# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@ -97,7 +97,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
# as a terminfo object, and breaking this would be bad. It's up the ncurses
# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@ -119,14 +119,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
# CONTROLLING ENTRY LENGTH
# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
# the set of keys the `joe' editor will be upset if it can't see. So don't
# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@ -147,7 +147,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
# into history and GNU termcap's application base shrinks towards being GNU
# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@ -166,7 +166,7 @@
#%The \fBcapname\fR is the short name used in the text of the database,
#%and is used by a person updating the database.
#%Whenever possible, capnames are chosen to be the same as or similar to
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%identical or very similar names). Semantics are also intended to match
#%those of the specification.
#%
@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
@ -271,7 +271,7 @@ num_labels nlab num Nl - - ----- number of labels on screen
label_height lh num lh - - ----- rows in each label
label_width lw num lw - - ----- columns in each label
max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle
maximum_windows wnum num MW - - ----- maximum number of defineable windows
maximum_windows wnum num MW - - ----- maximum number of definable windows
# These came in with SVr4's color support
max_colors colors num Co - - ----- maximum number of colors on screen
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
@ -476,7 +476,7 @@ prtr_non mc5p str pO - - -B-G-* turn on printer for #1 bytes
# the mapping:
#
# box1[0] = ACS_ULCORNER
# box1[1] = ACS_HLINE
# box1[1] = ACS_HLINE
# box1[2] = ACS_URCORNER
# box1[3] = ACS_VLINE
# box1[4] = ACS_LRCORNER
@ -517,15 +517,15 @@ font_4 font4 str f4 - - ----K select font 4
font_5 font5 str f5 - - ----K select font 5
font_6 font6 str f6 - - ----K select font 6
font_7 font7 str f7 - - ----K select font 7
key_back_tab kbtab str k0 - - ----K backtab key
key_back_tab kbtab str kO - - ----K backtab key
key_do kdo str ki - - ----K do request key
key_command kcmd str kd - - ----K command-request key
key_command kcmd str @4 - - ----K command-request key
key_command_pane kcpn str kW - - ----K command-pane key
key_end kend str kw KEY_END 0550 ----- end key
key_help khlp str kq - - ----- help key
key_newline knl str nl - - ----K newline key
key_end kend str @7 KEY_END 0550 ----- end key
key_help khlp str %1 - - ----- help key
key_newline knl str kn - - ----K newline key
key_next_pane knpn str kv - - ----K next-pane key
key_prev_cmd kppn str kp - - ----K previous-command key
key_prev_cmd kpcmd str kp - - ----K previous-command key
key_prev_pane kppn str kV - - ----K previous-pane key
key_quit kquit str kQ - - ----K quit key
key_select_aix ksel str kU - - ----- select key
@ -543,13 +543,13 @@ key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
appl_defined_str apstr str za - - ----K application-defined string
key_smap_in6 kmpf6 str kr - - ----K special mapped key 6 input
key_smap_in6 kmpf6 str Kr - - ----K special mapped key 6 input
key_smap_out6 kmpt6 str KR - - ----K special mapped key 6 output
key_smap_in7 kmpf7 str ks - - ----K special mapped key 7 input
key_smap_in7 kmpf7 str Ks - - ----K special mapped key 7 input
key_smap_out7 kmpt7 str KS - - ----K special mapped key 7 output
key_smap_in8 kmpf8 str kt - - ----K special mapped key 8 input
key_smap_in8 kmpf8 str Kt - - ----K special mapped key 8 input
key_smap_out8 kmpt8 str KT - - ----K special mapped key 8 output
key_smap_in9 kmpf9 str ku - - ----K special mapped key 9 input
key_smap_in9 kmpf9 str Ku - - ----K special mapped key 9 input
key_smap_out9 kmpt9 str KU - - ----K special mapped key 9 output
key_sf1 ksf1 str S1 - - ----K special function key 1
key_sf2 ksf2 str S2 - - ----K special function key 2
@ -821,7 +821,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times
bit_image_newline binel str Zz - - ----- Move to next row of the bit image
bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row
color_names colornm str Yw - - ----- Give name for color #1
define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region
end_bit_image_region endbi str Yy - - ----- End a bit-image region
set_color_band setcolor str Yz - - ----- Change to ribbon color #1
set_page_length slines str YZ - - ----- Set page length to #1 lines
@ -857,13 +857,13 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%lw25 lw6 lw2 lw20.
#%\fBVariable Cap- TCap Description\fR
#%\fBString name Code\fR
enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode
enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode
enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode
enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode
enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode
enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode
set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6
#enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode
#enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode
#enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode
#enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode
#enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode
#enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode
#set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6
set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
#%.TE
#%.ad
@ -928,7 +928,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@ -945,9 +945,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
# The `ma' capability seems to have been designed to map between the rogue(2)
# motion keys (including jkhl) and characters emitted by arrow keys on some
# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
# The `ma' capability was a 4.0BSD feature used by vi version 2.
# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@ -973,7 +973,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@ -989,7 +989,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
# in the mytinfo tables.
# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@ -1038,7 +1038,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
# (via IGNORE aliases further down). We don't want to do normal pad
# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@ -1060,192 +1060,9 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
# This section is almost all comments. What it's mainly for is to describe
# what capabilities need to be squeezed out to get down to the XSI Curses
# standard set. They are flagged with K.
#
# HP extensions
#
# These extensions follow ptr_non (replacing everything after it) in HP
# terminfo files. Except for memory_lock and memory_unlock, they are
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
# (see Caps-ncurses for the complete set of comments)
#
memory_lock meml str ml - - ----K lock memory above cursor
memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
#key_f11 kf11 str F1 - - ----- F11 function key
#key_f12 kf12 str F2 - - ----- F12 function key
#key_f13 kf13 str F3 - - ----- F13 function key
#key_f14 kf14 str F4 - - ----- F14 function key
#key_f15 kf15 str F5 - - ----- F15 function key
#key_f16 kf16 str F6 - - ----- F16 function key
#key_f17 kf17 str F7 - - ----- F17 function key
#key_f18 kf18 str F8 - - ----- F18 function key
#key_f19 kf19 str F9 - - ----- F19 function key
#key_f20 kf20 str FA - - ----- F20 function key
#key_f21 kf21 str FB - - ----- F21 function key
#key_f22 kf22 str FC - - ----- F22 function key
#key_f23 kf23 str FD - - ----- F23 function key
#key_f24 kf24 str FE - - ----- F24 function key
#key_f25 kf25 str FF - - ----- F25 function key
#key_f26 kf26 str FG - - ----- F26 function key
#key_f27 kf27 str FH - - ----- F27 function key
#key_f28 kf28 str FI - - ----- F28 function key
#key_f29 kf29 str FJ - - ----- F29 function key
#key_f30 kf30 str FK - - ----- F30 function key
#key_f31 kf31 str FL - - ----- F31 function key
#key_f32 kf32 str FM - - ----- F32 function key
#key_f33 kf33 str FN - - ----- F33 function key
#key_f34 kf34 str FO - - ----- F34 function key
#key_f35 kf35 str FP - - ----- F35 function key
#key_f36 kf36 str FQ - - ----- F36 function key
#key_f37 kf37 str FR - - ----- F37 function key
#key_f38 kf38 str FS - - ----- F38 function key
#key_f39 kf39 str FT - - ----- F39 function key
#key_f40 kf40 str FU - - ----- F40 function key
#key_f41 kf41 str FV - - ----- F41 function key
#key_f42 kf42 str FW - - ----- F42 function key
#key_f43 kf43 str FX - - ----- F43 function key
#key_f44 kf44 str FY - - ----- F44 function key
#key_f45 kf45 str FZ - - ----- F45 function key
#key_f46 kf46 str Fa - - ----- F46 function key
#key_f47 kf47 str Fb - - ----- F47 function key
#key_f48 kf48 str Fc - - ----- F48 function key
#key_f49 kf49 str Fd - - ----- F49 function key
#key_f50 kf50 str Fe - - ----- F50 function key
#key_f51 kf51 str Ff - - ----- F51 function key
#key_f52 kf52 str Fg - - ----- F52 function key
#key_f53 kf53 str Fh - - ----- F53 function key
#key_f54 kf54 str Fi - - ----- F54 function key
#key_f55 kf55 str Fj - - ----- F55 function key
#key_f56 kf56 str Fk - - ----- F56 function key
#key_f57 kf57 str Fl - - ----- F57 function key
#key_f58 kf58 str Fm - - ----- F58 function key
#key_f59 kf59 str Fn - - ----- F59 function key
#key_f60 kf60 str Fo - - ----- F60 function key
#key_f61 kf61 str Fp - - ----- F61 function key
#key_f62 kf62 str Fq - - ----- F62 function key
#key_f63 kf63 str Fr - - ----- F63 function key
#
#############################################################################
#
# ALIAS DECLARATIONS
#
# Here we set up aliases for translating extensions into standard terminfo.
#
#---------------------------------- Termcap aliases -------------------------
#
# BSD aliases:
#
# This is a common error in many termcap files. We'll get notified during
# translation when this (or any other alias) fires.
#
capalias sb sr BSD scroll text down
#
# AT&T extensions:
#
# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
# nonstandard capabilities. Its signature is the KM capability, used to name
# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
# set. Comments in the original, and a little cross-checking with other AT&T
# documentation, seem to establish the following mappings:
#
capalias BO mr AT&T enter_reverse_mode
capalias CI vi AT&T cursor_invisible
capalias CV ve AT&T cursor_normal
capalias DS mh AT&T enter_dim_mode
#capalias EE me AT&T exit_attribute_mode
capalias FE LF AT&T label_on
capalias FL LO AT&T label_off
capalias XS mk AT&T enter_secure_mode
#
# We comment out EE because the conflicting XENIX EE is more common in
# old entries.
#
# XENIX extensions:
#
# These are the ones we know how to translate directly:
#
capalias EE mh XENIX exit_attribute_mode
capalias GE ae XENIX exit_alt_charset_mode
capalias GS as XENIX enter_alt_charset_mode
capalias CF vi XENIX cursor_invis
capalias CO ve XENIX cursor_normal
capalias EN @7 XENIX key_end
capalias HM kh XENIX key_home
capalias LD kL XENIX key_dl
capalias PD kN XENIX key_npage
capalias PN po XENIX prtr_off
capalias PS pf XENIX prtr_on
capalias PU kP XENIX key_ppage
capalias RT @8 XENIX kent
capalias UP ku XENIX kcuu1
capalias G6 IGNORE XENIX double-ACS_ULCORNER
capalias G7 IGNORE XENIX double-ACS_LLCORNER
capalias G5 IGNORE XENIX double-ACS_URCORNER
capalias G8 IGNORE XENIX double-ACS_LRCORNER
capalias Gr IGNORE XENIX double-ACS_LTEE
capalias Gr IGNORE XENIX double-ACS_RTEE
capalias Gu IGNORE XENIX double-ACS_BTEE
capalias Gd IGNORE XENIX double ACS_TTEE
capalias Gh IGNORE XENIX double-ACS_HLINE
capalias Gv IGNORE XENIX double-ACS_VLINE
capalias Gc IGNORE XENIX double-ACS_PLUS
capalias GG IGNORE XENIX acs-glitch
#
# IBM extensions:
#
capalias kq %1 IBM key_help
#
# Iris extensions:
#
capalias HS mh IRIS enter_dim_mode
#
# Tektronix extensions:
#
capalias KA k; Tek key_f10
capalias KB F1 Tek key_f11
capalias KC F2 Tek key_f12
capalias KD F3 Tek key_f13
capalias KE F4 Tek key_f14
capalias KF F5 Tek key_f15
capalias BC Sb Tek set_background
capalias FC Sf Tek set_foreground
#
# There are also the following:
#
# XENIX XENIX variable name name clash with terminfo?
# ----- ------------------- -------------------------
# CL key_char_left
# CR key_char_right
# CW key_change_window
# HP ??
# LF key_linefeed label_off
# NU key_next_unlocked_cell
# PL ??
# PR ??
# RC key_recalc remove_clock
# RF key_toggle_ref req_for_input
# WL key_word_left
# WR key_word_right
#
# If you know what any of the question-marked ones mean, please tell us.
#
#--------------------------------- Terminfo aliases ------------------------
#
# IBM extensions:
#
infoalias font0 s0ds IBM set0_des_seq
infoalias font1 s1ds IBM set1_des_seq
infoalias font2 s2ds IBM set2_des_seq
infoalias font3 s3ds IBM set3_des_seq
infoalias kbtab kcbt IBM key_backtab
infoalias ksel kslt IBM key_select
#
# Some others are identical to SVr4/XPG4 capabilities, in particular:
# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################

View File

@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. #
# Copyright (c) 2002-2016,2019 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"), #
@ -28,13 +28,13 @@
#
# Author: Thomas Dickey
#
# $Id: Caps.hpux11,v 1.6 2011/10/15 23:20:04 tom Exp $
# $Id: Caps.hpux11,v 1.14 2019/07/27 00:36:44 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with HPUX 11.x's terminfo.
#
# This table is used to generate initializers for tables that drive tic,
# infocmp, and the library compilation code used to support the termcap
# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@ -97,7 +97,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
# as a terminfo object, and breaking this would be bad. It's up the ncurses
# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@ -119,14 +119,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
# CONTROLLING ENTRY LENGTH
# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
# the set of keys the `joe' editor will be upset if it can't see. So don't
# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@ -147,7 +147,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
# into history and GNU termcap's application base shrinks towards being GNU
# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@ -166,7 +166,7 @@
#%The \fBcapname\fR is the short name used in the text of the database,
#%and is used by a person updating the database.
#%Whenever possible, capnames are chosen to be the same as or similar to
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%identical or very similar names). Semantics are also intended to match
#%those of the specification.
#%
@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
# end booleans for HPUX 9, 10 (non-color curses)
@ -273,7 +273,7 @@ num_labels nlab num Nl - - ----- number of labels on screen
label_height lh num lh - - ----- rows in each label
label_width lw num lw - - ----- columns in each label
max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle
maximum_windows wnum num MW - - ----- maximum number of defineable windows
maximum_windows wnum num MW - - ----- maximum number of definable windows
# These came in with SVr4's color support
max_colors colors num Co - - ----- maximum number of colors on screen
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
@ -298,7 +298,7 @@ dot_vert_spacing spinv num Yb - - ----- spacing of pins vertically in pins per
dot_horz_spacing spinh num Yc - - ----- spacing of dots horizontally in dots per inch
max_micro_address maddr num Yd - - ----- maximum value in micro_..._address
max_micro_jump mjump num Ye - - ----- maximum value in parm_..._micro
micro_col_size mcs num Yf - - ----- character step size when in micro mode
micro_char_size mcs num Yf - - ----- character step size when in micro mode
micro_line_size mls num Yg - - ----- line step size when in micro mode
number_of_pins npins num Yh - - ----- numbers of pins in print-head
output_res_char orc num Yi - - ----- horizontal resolution in units per line
@ -727,7 +727,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times
bit_image_newline binel str Zz - - ----- Move to next row of the bit image
bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row
color_names colornm str Yw - - ----- Give name for color #1
define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region
end_bit_image_region endbi str Yy - - ----- End a bit-image region
set_color_band setcolor str Yz - - ----- Change to ribbon color #1
set_page_length slines str YZ - - ----- Set page length to #1 lines
@ -755,6 +755,8 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%they may not be binary-compatible with System V terminfo
#%entries after SVr4.1; beware!
#%
#%AIX and Solaris do not provide termcap names for these; HPUX does.
#%
#%.na
#%.TS H
#%center expand;
@ -764,19 +766,19 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%\fBVariable Cap- TCap Description\fR
#%\fBString name Code\fR
set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode
enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode
enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode
enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode
enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode
enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode
set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6
exit_horizontal_hl_mode rhhlm str XH - - ----K Exit horizontal highlight mode
exit_left_hl_mode rlhlm str XL - - ----K Exit left highlight mode
exit_low_hl_mode rlohlm str XO - - ----K Exit low highlight mode
exit_right_hl_mode rrhlm str XR - - ----K Exit right highlight mode
exit_top_hl_mode rthlm str XT - - ----K Exit top highlight mode
exit_vertical_hl_mode rvhlm str XV - - ----K Exit vertical highlight mode
enter_horizontal_hl_mode ehhlm str Q1 - - ----- Enter horizontal highlight mode
enter_left_hl_mode elhlm str Q2 - - ----- Enter left highlight mode
enter_low_hl_mode elohlm str Q3 - - ----- Enter low highlight mode
enter_right_hl_mode erhlm str Q4 - - ----- Enter right highlight mode
enter_top_hl_mode ethlm str Q5 - - ----- Enter top highlight mode
enter_vertical_hl_mode evhlm str Q6 - - ----- Enter vertical highlight mode
set_a_attributes sgr1 str Q7 - - ----- Define second set of video attributes #1-#6
exit_horizontal_hl_mode rmhhlm str Q8 - - ----K Exit horizontal highlight mode
exit_left_hl_mode rmlhlm str Q9 - - ----K Exit left highlight mode
exit_low_hl_mode rmlohlm str Qa - - ----K Exit low highlight mode
exit_right_hl_mode rmrhlm str Qb - - ----K Exit right highlight mode
exit_top_hl_mode rmthlm str Qc - - ----K Exit top highlight mode
exit_vertical_hl_mode rmvhlm str Qd - - ----K Exit vertical highlight mode
#%.TE
#%.ad
#
@ -840,7 +842,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@ -857,9 +859,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
# The `ma' capability seems to have been designed to map between the rogue(2)
# motion keys (including jkhl) and characters emitted by arrow keys on some
# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
# The `ma' capability was a 4.0BSD feature used by vi version 2.
# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@ -885,7 +887,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@ -901,7 +903,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
# in the mytinfo tables.
# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@ -950,7 +952,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
# (via IGNORE aliases further down). We don't want to do normal pad
# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@ -972,303 +974,8 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
# This section is almost all comments. What it's mainly for is to describe
# what capabilities need to be squeezed out to get down to the XSI Curses
# standard set. They are flagged with K.
#
# HP extensions
#
# These extensions follow ptr_non (replacing everything after it) in HP
# terminfo files. Except for memory_lock and memory_unlock, they are
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
#
#memory_lock meml str ml - - ----K memory lock above
#memory_unlock memu str mu - - ----K memory unlock
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
#key_f11 kf11 str F1 - - ----- F11 function key
#key_f12 kf12 str F2 - - ----- F12 function key
#key_f13 kf13 str F3 - - ----- F13 function key
#key_f14 kf14 str F4 - - ----- F14 function key
#key_f15 kf15 str F5 - - ----- F15 function key
#key_f16 kf16 str F6 - - ----- F16 function key
#key_f17 kf17 str F7 - - ----- F17 function key
#key_f18 kf18 str F8 - - ----- F18 function key
#key_f19 kf19 str F9 - - ----- F19 function key
#key_f20 kf20 str FA - - ----- F20 function key
#key_f21 kf21 str FB - - ----- F21 function key
#key_f22 kf22 str FC - - ----- F22 function key
#key_f23 kf23 str FD - - ----- F23 function key
#key_f24 kf24 str FE - - ----- F24 function key
#key_f25 kf25 str FF - - ----- F25 function key
#key_f26 kf26 str FG - - ----- F26 function key
#key_f27 kf27 str FH - - ----- F27 function key
#key_f28 kf28 str FI - - ----- F28 function key
#key_f29 kf29 str FJ - - ----- F29 function key
#key_f30 kf30 str FK - - ----- F30 function key
#key_f31 kf31 str FL - - ----- F31 function key
#key_f32 kf32 str FM - - ----- F32 function key
#key_f33 kf33 str FN - - ----- F33 function key
#key_f34 kf34 str FO - - ----- F34 function key
#key_f35 kf35 str FP - - ----- F35 function key
#key_f36 kf36 str FQ - - ----- F36 function key
#key_f37 kf37 str FR - - ----- F37 function key
#key_f38 kf38 str FS - - ----- F38 function key
#key_f39 kf39 str FT - - ----- F39 function key
#key_f40 kf40 str FU - - ----- F40 function key
#key_f41 kf41 str FV - - ----- F41 function key
#key_f42 kf42 str FW - - ----- F42 function key
#key_f43 kf43 str FX - - ----- F43 function key
#key_f44 kf44 str FY - - ----- F44 function key
#key_f45 kf45 str FZ - - ----- F45 function key
#key_f46 kf46 str Fa - - ----- F46 function key
#key_f47 kf47 str Fb - - ----- F47 function key
#key_f48 kf48 str Fc - - ----- F48 function key
#key_f49 kf49 str Fd - - ----- F49 function key
#key_f50 kf50 str Fe - - ----- F50 function key
#key_f51 kf51 str Ff - - ----- F51 function key
#key_f52 kf52 str Fg - - ----- F52 function key
#key_f53 kf53 str Fh - - ----- F53 function key
#key_f54 kf54 str Fi - - ----- F54 function key
#key_f55 kf55 str Fj - - ----- F55 function key
#key_f56 kf56 str Fk - - ----- F56 function key
#key_f57 kf57 str Fl - - ----- F57 function key
#key_f58 kf58 str Fm - - ----- F58 function key
#key_f59 kf59 str Fn - - ----- F59 function key
#key_f60 kf60 str Fo - - ----- F60 function key
#key_f61 kf61 str Fp - - ----- F61 function key
#key_f62 kf62 str Fq - - ----- F62 function key
#key_f63 kf63 str Fr - - ----- F63 function key
#
# IBM extensions
#
# These extensions follow ptr_non (replacing everything after it) in IBM
# terminfo files.
#
# The places in the box[12] capabilities correspond to acsc characters, here is
# the mapping:
#
# box1[0] = ACS_ULCORNER
# box1[1] = ACS_HLINE
# box1[2] = ACS_URCORNER
# box1[3] = ACS_VLINE
# box1[4] = ACS_LRCORNER
# box1[5] = ACS_LLCORNER
# box1[6] = ACS_TTEE
# box1[7] = ACS_RTEE
# box1[8] = ACS_BTEE
# box1[9] = ACS_LTEE
# box1[10] = ACS_PLUS
#
# The box2 characters are the double-line versions of these forms graphics.
# (see Caps-ncurses for the complete set of comments)
#
box_chars_1 box1 str bx - - ----K box characters primary set
#box_chars_2 box2 str by - - ----K box characters secondary set
#box_attr_1 batt1 str Bx - - ----K attributes for box1
#box_attr_2 batt2 str By - - ----K attributes for box2
#color_bg_0 colb0 str d0 - - ----K background color 0
#color_bg_1 colb1 str d1 - - ----K background color 1
#color_bg_2 colb2 str d2 - - ----K background color 2
#color_bg_3 colb3 str d3 - - ----K background color 3
#color_bg_4 colb4 str d4 - - ----K background color 4
#color_bg_5 colb5 str d5 - - ----K background color 5
#color_bg_6 colb6 str d6 - - ----K background color 6
#color_bg_7 colb7 str d7 - - ----K background color 7
#color_fg_0 colf0 str c0 - - ----K foreground color 0
#color_fg_1 colf1 str c1 - - ----K foreground color 1
#color_fg_2 colf2 str c2 - - ----K foreground color 2
#color_fg_3 colf3 str c3 - - ----K foreground color 3
#color_fg_4 colf4 str c4 - - ----K foreground color 4
#color_fg_5 colf5 str c5 - - ----K foreground color 5
#color_fg_6 colf6 str c6 - - ----K foreground color 6
#color_fg_7 colf7 str c7 - - ----K foreground color 7
#font_0 font0 str f0 - - ----- select font 0
#font_1 font1 str f1 - - ----- select font 1
#font_2 font2 str f2 - - ----- select font 2
#font_3 font3 str f3 - - ----- select font 3
#font_4 font4 str f4 - - ----K select font 4
#font_5 font5 str f5 - - ----K select font 5
#font_6 font6 str f6 - - ----K select font 6
#font_7 font7 str f7 - - ----K select font 7
#key_back_tab kbtab str k0 - - ----- backtab key
#key_do kdo str ki - - ----K do request key
#key_command kcmd str kd - - ----K command-request key
#key_command_pane kcpn str kW - - ----K command-pane key
#key_end kend str kw - - ----- end key
#key_help khlp str kq - - ----- help key
#key_newline knl str nl - - ----K newline key
#key_next_pane knpn str kv - - ----K next-pane key
#key_prev_cmd kppn str kp - - ----K previous-command key
#key_prev_pane kppn str kV - - ----K previous-pane key
#key_quit kquit str kQ - - ----K quit key
#key_select ksel str kU - - ----- select key
#key_scroll_left kscl str kz - - ----K scroll left
#key_scroll_right kscr str kZ - - ----K scroll right
#key_tab ktab str ko - - ----K tab key
#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
#appl_defined_str apstr str za - - ----K application-defined string
# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
# the IBM manual pages, so the cap name strings are guesses. The terminfo
# names are almost certainly right, the termcap ones almost certainly wrong.
#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
# Undocumented capabilities end here
#key_sf1 ksf1 str S1 - - ----K special function key 1
#key_sf2 ksf2 str S2 - - ----K special function key 2
#key_sf3 ksf3 str S3 - - ----K special function key 3
#key_sf4 ksf4 str S4 - - ----K special function key 4
#key_sf5 ksf5 str S5 - - ----K special function key 5
#key_sf6 ksf6 str S6 - - ----K special function key 6
#key_sf7 ksf7 str S7 - - ----K special function key 7
#key_sf8 ksf8 str S8 - - ----K special function key 8
#key_sf9 ksf9 str S9 - - ----K special function key 9
#key_sf10 ksf10 str SA - - ----K special function key 10
# AIX version 3 documents different codes for F11, F12 and does not mention
# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
#key_f11 kf11 str k< - - ----- function key 11
#key_f12 kf12 str k> - - ----- function key 12
# Undocumented capabilities end here.
#key_action kact str kJ - - ----K sent by action key
# The IBM docs say these capabilities are for table-drawing, and are
# valid only for aixterm descriptions.
#enter_topline_mode topl str tp - - ----K start top-line mode
#enter_bottom_mode btml str bm - - ----K start bottom-line mode
#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
#
#############################################################################
#
# ALIAS DECLARATIONS
#
# Here we set up aliases for translating extensions into standard terminfo.
#
#---------------------------------- Termcap aliases -------------------------
#
# BSD aliases:
#
# This is a common error in many termcap files. We'll get notified during
# translation when this (or any other alias) fires.
#
capalias sb sr BSD scroll text down
#
# AT&T extensions:
#
# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
# nonstandard capabilities. Its signature is the KM capability, used to name
# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
# set. Comments in the original, and a little cross-checking with other AT&T
# documentation, seem to establish the following mappings:
#
capalias BO mr AT&T enter_reverse_mode
capalias CI vi AT&T cursor_invisible
capalias CV ve AT&T cursor_normal
capalias DS mh AT&T enter_dim_mode
#capalias EE me AT&T exit_attribute_mode
capalias FE LF AT&T label_on
capalias FL LO AT&T label_off
capalias XS mk AT&T enter_secure_mode
#
# We comment out EE because the conflicting XENIX EE is more common in
# old entries.
#
# XENIX extensions:
#
# These are the ones we know how to translate directly:
#
capalias EE mh XENIX exit_attribute_mode
capalias GE ae XENIX exit_alt_charset_mode
capalias GS as XENIX enter_alt_charset_mode
capalias CF vi XENIX cursor_invis
capalias CO ve XENIX cursor_normal
capalias EN @7 XENIX key_end
capalias HM kh XENIX key_home
capalias LD kL XENIX key_dl
capalias PD kN XENIX key_npage
capalias PN po XENIX prtr_off
capalias PS pf XENIX prtr_on
capalias PU kP XENIX key_ppage
capalias RT @8 XENIX kent
capalias UP ku XENIX kcuu1
capalias G6 IGNORE XENIX double-ACS_ULCORNER
capalias G7 IGNORE XENIX double-ACS_LLCORNER
capalias G5 IGNORE XENIX double-ACS_URCORNER
capalias G8 IGNORE XENIX double-ACS_LRCORNER
capalias Gr IGNORE XENIX double-ACS_LTEE
capalias Gr IGNORE XENIX double-ACS_RTEE
capalias Gu IGNORE XENIX double-ACS_BTEE
capalias Gd IGNORE XENIX double ACS_TTEE
capalias Gh IGNORE XENIX double-ACS_HLINE
capalias Gv IGNORE XENIX double-ACS_VLINE
capalias Gc IGNORE XENIX double-ACS_PLUS
capalias GG IGNORE XENIX acs-glitch
#
# IBM extensions:
#
capalias kq %1 IBM key_help
#
# Iris extensions:
#
capalias HS mh IRIS enter_dim_mode
#
# Tektronix extensions:
#
capalias KA k; Tek key_f10
capalias KB F1 Tek key_f11
capalias KC F2 Tek key_f12
capalias KD F3 Tek key_f13
capalias KE F4 Tek key_f14
capalias KF F5 Tek key_f15
capalias BC Sb Tek set_background
capalias FC Sf Tek set_foreground
#
# There are also the following:
#
# XENIX XENIX variable name name clash with terminfo?
# ----- ------------------- -------------------------
# CL key_char_left
# CR key_char_right
# CW key_change_window
# HP ??
# LF key_linefeed label_off
# NU key_next_unlocked_cell
# PL ??
# PR ??
# RC key_recalc remove_clock
# RF key_toggle_ref req_for_input
# WL key_word_left
# WR key_word_right
#
# If you know what any of the question-marked ones mean, please tell us.
#
#--------------------------------- Terminfo aliases ------------------------
#
# IBM extensions:
#
infoalias font0 s0ds IBM set0_des_seq
infoalias font1 s1ds IBM set1_des_seq
infoalias font2 s2ds IBM set2_des_seq
infoalias font3 s3ds IBM set3_des_seq
infoalias kbtab kcbt IBM key_backtab
infoalias ksel kslt IBM key_select
#
# Some others are identical to SVr4/XPG4 capabilities, in particular:
# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################

View File

@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 2001-2011,2013 Free Software Foundation, Inc. #
# Copyright (c) 2001-2016,2019 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"), #
@ -29,14 +29,14 @@
# Author: Thomas Dickey
# and: Ilya Zakharevich
#
# $Id: Caps.keys,v 1.7 2013/07/20 17:59:24 tom Exp $
# $Id: Caps.keys,v 1.13 2019/07/27 00:36:44 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is illustrates an experimental extension to describe alt-, shift- and
# control-modifiers applied to function and normal keys, as done on IBM pc's.
#
# This table is used to generate initializers for tables that drive tic,
# infocmp, and the library compilation code used to support the termcap
# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@ -99,7 +99,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
# as a terminfo object, and breaking this would be bad. It's up the ncurses
# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@ -121,14 +121,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
# CONTROLLING ENTRY LENGTH
# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
# the set of keys the `joe' editor will be upset if it can't see. So don't
# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@ -149,7 +149,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
# into history and GNU termcap's application base shrinks towards being GNU
# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@ -168,7 +168,7 @@
#%The \fBcapname\fR is the short name used in the text of the database,
#%and is used by a person updating the database.
#%Whenever possible, capnames are chosen to be the same as or similar to
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%identical or very similar names). Semantics are also intended to match
#%those of the specification.
#%
@ -229,7 +229,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
@ -273,7 +273,7 @@ num_labels nlab num Nl - - ----- number of labels on screen
label_height lh num lh - - ----- rows in each label
label_width lw num lw - - ----- columns in each label
max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle
maximum_windows wnum num MW - - ----- maximum number of defineable windows
maximum_windows wnum num MW - - ----- maximum number of definable windows
# These came in with SVr4's color support
max_colors colors num Co - - ----- maximum number of colors on screen
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
@ -809,7 +809,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times
bit_image_newline binel str Zz - - ----- Move to next row of the bit image
bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row
color_names colornm str Yw - - ----- Give name for color #1
define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region
end_bit_image_region endbi str Yy - - ----- End a bit-image region
set_color_band setcolor str Yz - - ----- Change to ribbon color #1
set_page_length slines str YZ - - ----- Set page length to #1 lines
@ -916,7 +916,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@ -933,9 +933,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
# The `ma' capability seems to have been designed to map between the rogue(2)
# motion keys (including jkhl) and characters emitted by arrow keys on some
# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
# The `ma' capability was a 4.0BSD feature used by vi version 2.
# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@ -961,7 +961,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@ -977,7 +977,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
# in the mytinfo tables.
# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@ -1026,7 +1026,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
# (via IGNORE aliases further down). We don't want to do normal pad
# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@ -1048,303 +1048,10 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
# This section is almost all comments. What it's mainly for is to describe
# what capabilities need to be squeezed out to get down to the XSI Curses
# standard set. They are flagged with K.
#
# HP extensions
#
# These extensions follow ptr_non (replacing everything after it) in HP
# terminfo files. Except for memory_lock and memory_unlock, they are
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
# (see Caps-ncurses for the complete set of comments)
#
memory_lock meml str ml - - ----K lock memory above cursor
memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
#key_f11 kf11 str F1 - - ----- F11 function key
#key_f12 kf12 str F2 - - ----- F12 function key
#key_f13 kf13 str F3 - - ----- F13 function key
#key_f14 kf14 str F4 - - ----- F14 function key
#key_f15 kf15 str F5 - - ----- F15 function key
#key_f16 kf16 str F6 - - ----- F16 function key
#key_f17 kf17 str F7 - - ----- F17 function key
#key_f18 kf18 str F8 - - ----- F18 function key
#key_f19 kf19 str F9 - - ----- F19 function key
#key_f20 kf20 str FA - - ----- F20 function key
#key_f21 kf21 str FB - - ----- F21 function key
#key_f22 kf22 str FC - - ----- F22 function key
#key_f23 kf23 str FD - - ----- F23 function key
#key_f24 kf24 str FE - - ----- F24 function key
#key_f25 kf25 str FF - - ----- F25 function key
#key_f26 kf26 str FG - - ----- F26 function key
#key_f27 kf27 str FH - - ----- F27 function key
#key_f28 kf28 str FI - - ----- F28 function key
#key_f29 kf29 str FJ - - ----- F29 function key
#key_f30 kf30 str FK - - ----- F30 function key
#key_f31 kf31 str FL - - ----- F31 function key
#key_f32 kf32 str FM - - ----- F32 function key
#key_f33 kf33 str FN - - ----- F33 function key
#key_f34 kf34 str FO - - ----- F34 function key
#key_f35 kf35 str FP - - ----- F35 function key
#key_f36 kf36 str FQ - - ----- F36 function key
#key_f37 kf37 str FR - - ----- F37 function key
#key_f38 kf38 str FS - - ----- F38 function key
#key_f39 kf39 str FT - - ----- F39 function key
#key_f40 kf40 str FU - - ----- F40 function key
#key_f41 kf41 str FV - - ----- F41 function key
#key_f42 kf42 str FW - - ----- F42 function key
#key_f43 kf43 str FX - - ----- F43 function key
#key_f44 kf44 str FY - - ----- F44 function key
#key_f45 kf45 str FZ - - ----- F45 function key
#key_f46 kf46 str Fa - - ----- F46 function key
#key_f47 kf47 str Fb - - ----- F47 function key
#key_f48 kf48 str Fc - - ----- F48 function key
#key_f49 kf49 str Fd - - ----- F49 function key
#key_f50 kf50 str Fe - - ----- F50 function key
#key_f51 kf51 str Ff - - ----- F51 function key
#key_f52 kf52 str Fg - - ----- F52 function key
#key_f53 kf53 str Fh - - ----- F53 function key
#key_f54 kf54 str Fi - - ----- F54 function key
#key_f55 kf55 str Fj - - ----- F55 function key
#key_f56 kf56 str Fk - - ----- F56 function key
#key_f57 kf57 str Fl - - ----- F57 function key
#key_f58 kf58 str Fm - - ----- F58 function key
#key_f59 kf59 str Fn - - ----- F59 function key
#key_f60 kf60 str Fo - - ----- F60 function key
#key_f61 kf61 str Fp - - ----- F61 function key
#key_f62 kf62 str Fq - - ----- F62 function key
#key_f63 kf63 str Fr - - ----- F63 function key
#
# IBM extensions
#
# These extensions follow ptr_non (replacing everything after it) in IBM
# terminfo files.
#
# The places in the box[12] capabilities correspond to acsc characters, here is
# the mapping:
#
# box1[0] = ACS_ULCORNER
# box1[1] = ACS_HLINE
# box1[2] = ACS_URCORNER
# box1[3] = ACS_VLINE
# box1[4] = ACS_LRCORNER
# box1[5] = ACS_LLCORNER
# box1[6] = ACS_TTEE
# box1[7] = ACS_RTEE
# box1[8] = ACS_BTEE
# box1[9] = ACS_LTEE
# box1[10] = ACS_PLUS
#
# The box2 characters are the double-line versions of these forms graphics.
#
box_chars_1 box1 str bx - - ----K box characters primary set
#box_chars_2 box2 str by - - ----K box characters secondary set
#box_attr_1 batt1 str Bx - - ----K attributes for box1
#box_attr_2 batt2 str By - - ----K attributes for box2
#color_bg_0 colb0 str d0 - - ----K background color 0
#color_bg_1 colb1 str d1 - - ----K background color 1
#color_bg_2 colb2 str d2 - - ----K background color 2
#color_bg_3 colb3 str d3 - - ----K background color 3
#color_bg_4 colb4 str d4 - - ----K background color 4
#color_bg_5 colb5 str d5 - - ----K background color 5
#color_bg_6 colb6 str d6 - - ----K background color 6
#color_bg_7 colb7 str d7 - - ----K background color 7
#color_fg_0 colf0 str c0 - - ----K foreground color 0
#color_fg_1 colf1 str c1 - - ----K foreground color 1
#color_fg_2 colf2 str c2 - - ----K foreground color 2
#color_fg_3 colf3 str c3 - - ----K foreground color 3
#color_fg_4 colf4 str c4 - - ----K foreground color 4
#color_fg_5 colf5 str c5 - - ----K foreground color 5
#color_fg_6 colf6 str c6 - - ----K foreground color 6
#color_fg_7 colf7 str c7 - - ----K foreground color 7
#font_0 font0 str f0 - - ----- select font 0
#font_1 font1 str f1 - - ----- select font 1
#font_2 font2 str f2 - - ----- select font 2
#font_3 font3 str f3 - - ----- select font 3
#font_4 font4 str f4 - - ----K select font 4
#font_5 font5 str f5 - - ----K select font 5
#font_6 font6 str f6 - - ----K select font 6
#font_7 font7 str f7 - - ----K select font 7
#key_back_tab kbtab str k0 - - ----- backtab key
#key_do kdo str ki - - ----K do request key
#key_command kcmd str kd - - ----K command-request key
#key_command_pane kcpn str kW - - ----K command-pane key
#key_end kend str kw - - ----- end key
#key_help khlp str kq - - ----- help key
#key_newline knl str nl - - ----K newline key
#key_next_pane knpn str kv - - ----K next-pane key
#key_prev_cmd kppn str kp - - ----K previous-command key
#key_prev_pane kppn str kV - - ----K previous-pane key
#key_quit kquit str kQ - - ----K quit key
#key_select ksel str kU - - ----- select key
#key_scroll_left kscl str kz - - ----K scroll left
#key_scroll_right kscr str kZ - - ----K scroll right
#key_tab ktab str ko - - ----K tab key
#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
#appl_defined_str apstr str za - - ----K application-defined string
# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
# the IBM manual pages, so the cap name strings are guesses. The terminfo
# names are almost certainly right, the termcap ones almost certainly wrong.
#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
# Undocumented capabilities end here
#key_sf1 ksf1 str S1 - - ----K special function key 1
#key_sf2 ksf2 str S2 - - ----K special function key 2
#key_sf3 ksf3 str S3 - - ----K special function key 3
#key_sf4 ksf4 str S4 - - ----K special function key 4
#key_sf5 ksf5 str S5 - - ----K special function key 5
#key_sf6 ksf6 str S6 - - ----K special function key 6
#key_sf7 ksf7 str S7 - - ----K special function key 7
#key_sf8 ksf8 str S8 - - ----K special function key 8
#key_sf9 ksf9 str S9 - - ----K special function key 9
#key_sf10 ksf10 str SA - - ----K special function key 10
# AIX version 3 documents different codes for F11, F12 and does not mention
# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
#key_f11 kf11 str k< - - ----- function key 11
#key_f12 kf12 str k> - - ----- function key 12
# Undocumented capabilities end here.
#key_action kact str kJ - - ----K sent by action key
# The IBM docs say these capabilities are for table-drawing, and are
# valid only for aixterm descriptions.
#enter_topline_mode topl str tp - - ----K start top-line mode
#enter_bottom_mode btml str bm - - ----K start bottom-line mode
#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
#
#############################################################################
#
# ALIAS DECLARATIONS
#
# Here we set up aliases for translating extensions into standard terminfo.
#
#---------------------------------- Termcap aliases -------------------------
#
# BSD aliases:
#
# This is a common error in many termcap files. We'll get notified during
# translation when this (or any other alias) fires.
#
capalias sb sr BSD scroll text down
#
# AT&T extensions:
#
# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
# nonstandard capabilities. Its signature is the KM capability, used to name
# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
# set. Comments in the original, and a little cross-checking with other AT&T
# documentation, seem to establish the following mappings:
#
capalias BO mr AT&T enter_reverse_mode
capalias CI vi AT&T cursor_invisible
capalias CV ve AT&T cursor_normal
capalias DS mh AT&T enter_dim_mode
#capalias EE me AT&T exit_attribute_mode
capalias FE LF AT&T label_on
capalias FL LO AT&T label_off
capalias XS mk AT&T enter_secure_mode
#
# We comment out EE because the conflicting XENIX EE is more common in
# old entries.
#
# XENIX extensions:
#
# These are the ones we know how to translate directly:
#
capalias EE mh XENIX exit_attribute_mode
capalias GE ae XENIX exit_alt_charset_mode
capalias GS as XENIX enter_alt_charset_mode
capalias CF vi XENIX cursor_invis
capalias CO ve XENIX cursor_normal
capalias EN @7 XENIX key_end
capalias HM kh XENIX key_home
capalias LD kL XENIX key_dl
capalias PD kN XENIX key_npage
capalias PN po XENIX prtr_off
capalias PS pf XENIX prtr_on
capalias PU kP XENIX key_ppage
capalias RT @8 XENIX kent
capalias UP ku XENIX kcuu1
capalias G6 IGNORE XENIX double-ACS_ULCORNER
capalias G7 IGNORE XENIX double-ACS_LLCORNER
capalias G5 IGNORE XENIX double-ACS_URCORNER
capalias G8 IGNORE XENIX double-ACS_LRCORNER
capalias Gr IGNORE XENIX double-ACS_LTEE
capalias Gr IGNORE XENIX double-ACS_RTEE
capalias Gu IGNORE XENIX double-ACS_BTEE
capalias Gd IGNORE XENIX double ACS_TTEE
capalias Gh IGNORE XENIX double-ACS_HLINE
capalias Gv IGNORE XENIX double-ACS_VLINE
capalias Gc IGNORE XENIX double-ACS_PLUS
capalias GG IGNORE XENIX acs-glitch
#
# IBM extensions:
#
capalias kq %1 IBM key_help
#
# Iris extensions:
#
capalias HS mh IRIS enter_dim_mode
#
# Tektronix extensions:
#
capalias KA k; Tek key_f10
capalias KB F1 Tek key_f11
capalias KC F2 Tek key_f12
capalias KD F3 Tek key_f13
capalias KE F4 Tek key_f14
capalias KF F5 Tek key_f15
capalias BC Sb Tek set_background
capalias FC Sf Tek set_foreground
#
# There are also the following:
#
# XENIX XENIX variable name name clash with terminfo?
# ----- ------------------- -------------------------
# CL key_char_left
# CR key_char_right
# CW key_change_window
# HP ??
# LF key_linefeed label_off
# NU key_next_unlocked_cell
# PL ??
# PR ??
# RC key_recalc remove_clock
# RF key_toggle_ref req_for_input
# WL key_word_left
# WR key_word_right
#
# If you know what any of the question-marked ones mean, please tell us.
#
#--------------------------------- Terminfo aliases ------------------------
#
# IBM extensions:
#
infoalias font0 s0ds IBM set0_des_seq
infoalias font1 s1ds IBM set1_des_seq
infoalias font2 s2ds IBM set2_des_seq
infoalias font3 s3ds IBM set3_des_seq
infoalias kbtab kcbt IBM key_backtab
infoalias ksel kslt IBM key_select
#
# Some others are identical to SVr4/XPG4 capabilities, in particular:
# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################

View File

@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. #
# Copyright (c) 2002-2016,2019 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"), #
@ -28,13 +28,13 @@
#
# Author: Thomas Dickey
#
# $Id: Caps.osf1r5,v 1.6 2011/10/15 22:52:09 tom Exp $
# $Id: Caps.osf1r5,v 1.12 2019/07/27 00:36:44 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with OSF/1 version 5 (Tru64) terminfo.
#
# This table is used to generate initializers for tables that drive tic,
# infocmp, and the library compilation code used to support the termcap
# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@ -97,7 +97,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
# as a terminfo object, and breaking this would be bad. It's up the ncurses
# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@ -119,14 +119,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
# CONTROLLING ENTRY LENGTH
# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
# the set of keys the `joe' editor will be upset if it can't see. So don't
# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@ -147,7 +147,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
# into history and GNU termcap's application base shrinks towards being GNU
# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@ -166,7 +166,7 @@
#%The \fBcapname\fR is the short name used in the text of the database,
#%and is used by a person updating the database.
#%Whenever possible, capnames are chosen to be the same as or similar to
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%identical or very similar names). Semantics are also intended to match
#%those of the specification.
#%
@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
back_color_erase bce bool ut - - ----- screen erased with background color
@ -280,7 +280,7 @@ max_colors colors num Co - - ----- maximum number of colors on screen
max_micro_address maddr num Yd - - ----- maximum value in micro_..._address
max_micro_jump mjump num Ye - - ----- maximum value in parm_..._micro
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
maximum_windows wnum num MW - - ----- maximum number of defineable windows
maximum_windows wnum num MW - - ----- maximum number of definable windows
micro_col_size mcs num Yf - - ----- character step size when in micro mode
micro_line_size mls num Yg - - ----- line step size when in micro mode
no_color_video ncv num NC - - ----- video attributes that can not be used with colors
@ -574,7 +574,7 @@ clr_bol el1 str cb - - ----- Clear to beginning of line
code_set_init csin str ci - - ----- Init sequence for multiple codesets
color_names colornm str Yw - - ----- Give name for color #1
create_window cwin str CW - - ----- define a window #1 from #2,#3 to #4,#5
define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region
define_char defc str ZE - - ----- Define a character #1, #2 dots wide, descender #3
device_type devt str dv - - ----- Indicate language/codeset support
dial_phone dial str DI - - ----- dial number #1
@ -834,7 +834,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@ -851,9 +851,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
# The `ma' capability seems to have been designed to map between the rogue(2)
# motion keys (including jkhl) and characters emitted by arrow keys on some
# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
# The `ma' capability was a 4.0BSD feature used by vi version 2.
# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@ -879,7 +879,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@ -895,7 +895,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
# in the mytinfo tables.
# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@ -944,7 +944,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
# (via IGNORE aliases further down). We don't want to do normal pad
# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@ -966,303 +966,9 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
# This section is almost all comments. What it's mainly for is to describe
# what capabilities need to be squeezed out to get down to the XSI Curses
# standard set. They are flagged with K.
#
# HP extensions
#
# These extensions follow ptr_non (replacing everything after it) in HP
# terminfo files. Except for memory_lock and memory_unlock, they are
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
# (see Caps-ncurses for the complete set of comments)
#
memory_lock meml str ml - - ----K lock memory above cursor
memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
#key_f11 kf11 str F1 - - ----- F11 function key
#key_f12 kf12 str F2 - - ----- F12 function key
#key_f13 kf13 str F3 - - ----- F13 function key
#key_f14 kf14 str F4 - - ----- F14 function key
#key_f15 kf15 str F5 - - ----- F15 function key
#key_f16 kf16 str F6 - - ----- F16 function key
#key_f17 kf17 str F7 - - ----- F17 function key
#key_f18 kf18 str F8 - - ----- F18 function key
#key_f19 kf19 str F9 - - ----- F19 function key
#key_f20 kf20 str FA - - ----- F20 function key
#key_f21 kf21 str FB - - ----- F21 function key
#key_f22 kf22 str FC - - ----- F22 function key
#key_f23 kf23 str FD - - ----- F23 function key
#key_f24 kf24 str FE - - ----- F24 function key
#key_f25 kf25 str FF - - ----- F25 function key
#key_f26 kf26 str FG - - ----- F26 function key
#key_f27 kf27 str FH - - ----- F27 function key
#key_f28 kf28 str FI - - ----- F28 function key
#key_f29 kf29 str FJ - - ----- F29 function key
#key_f30 kf30 str FK - - ----- F30 function key
#key_f31 kf31 str FL - - ----- F31 function key
#key_f32 kf32 str FM - - ----- F32 function key
#key_f33 kf33 str FN - - ----- F33 function key
#key_f34 kf34 str FO - - ----- F34 function key
#key_f35 kf35 str FP - - ----- F35 function key
#key_f36 kf36 str FQ - - ----- F36 function key
#key_f37 kf37 str FR - - ----- F37 function key
#key_f38 kf38 str FS - - ----- F38 function key
#key_f39 kf39 str FT - - ----- F39 function key
#key_f40 kf40 str FU - - ----- F40 function key
#key_f41 kf41 str FV - - ----- F41 function key
#key_f42 kf42 str FW - - ----- F42 function key
#key_f43 kf43 str FX - - ----- F43 function key
#key_f44 kf44 str FY - - ----- F44 function key
#key_f45 kf45 str FZ - - ----- F45 function key
#key_f46 kf46 str Fa - - ----- F46 function key
#key_f47 kf47 str Fb - - ----- F47 function key
#key_f48 kf48 str Fc - - ----- F48 function key
#key_f49 kf49 str Fd - - ----- F49 function key
#key_f50 kf50 str Fe - - ----- F50 function key
#key_f51 kf51 str Ff - - ----- F51 function key
#key_f52 kf52 str Fg - - ----- F52 function key
#key_f53 kf53 str Fh - - ----- F53 function key
#key_f54 kf54 str Fi - - ----- F54 function key
#key_f55 kf55 str Fj - - ----- F55 function key
#key_f56 kf56 str Fk - - ----- F56 function key
#key_f57 kf57 str Fl - - ----- F57 function key
#key_f58 kf58 str Fm - - ----- F58 function key
#key_f59 kf59 str Fn - - ----- F59 function key
#key_f60 kf60 str Fo - - ----- F60 function key
#key_f61 kf61 str Fp - - ----- F61 function key
#key_f62 kf62 str Fq - - ----- F62 function key
#key_f63 kf63 str Fr - - ----- F63 function key
#
# IBM extensions
#
# These extensions follow ptr_non (replacing everything after it) in IBM
# terminfo files.
#
# The places in the box[12] capabilities correspond to acsc characters, here is
# the mapping:
#
# box1[0] = ACS_ULCORNER
# box1[1] = ACS_HLINE
# box1[2] = ACS_URCORNER
# box1[3] = ACS_VLINE
# box1[4] = ACS_LRCORNER
# box1[5] = ACS_LLCORNER
# box1[6] = ACS_TTEE
# box1[7] = ACS_RTEE
# box1[8] = ACS_BTEE
# box1[9] = ACS_LTEE
# box1[10] = ACS_PLUS
#
# The box2 characters are the double-line versions of these forms graphics.
#
#box_chars_1 box1 str bx - - ----K box characters primary set
#box_chars_2 box2 str by - - ----K box characters secondary set
#box_attr_1 batt1 str Bx - - ----K attributes for box1
#box_attr_2 batt2 str By - - ----K attributes for box2
#color_bg_0 colb0 str d0 - - ----K background color 0
#color_bg_1 colb1 str d1 - - ----K background color 1
#color_bg_2 colb2 str d2 - - ----K background color 2
#color_bg_3 colb3 str d3 - - ----K background color 3
#color_bg_4 colb4 str d4 - - ----K background color 4
#color_bg_5 colb5 str d5 - - ----K background color 5
#color_bg_6 colb6 str d6 - - ----K background color 6
#color_bg_7 colb7 str d7 - - ----K background color 7
#color_fg_0 colf0 str c0 - - ----K foreground color 0
#color_fg_1 colf1 str c1 - - ----K foreground color 1
#color_fg_2 colf2 str c2 - - ----K foreground color 2
#color_fg_3 colf3 str c3 - - ----K foreground color 3
#color_fg_4 colf4 str c4 - - ----K foreground color 4
#color_fg_5 colf5 str c5 - - ----K foreground color 5
#color_fg_6 colf6 str c6 - - ----K foreground color 6
#color_fg_7 colf7 str c7 - - ----K foreground color 7
#font_0 font0 str f0 - - ----- select font 0
#font_1 font1 str f1 - - ----- select font 1
#font_2 font2 str f2 - - ----- select font 2
#font_3 font3 str f3 - - ----- select font 3
#font_4 font4 str f4 - - ----K select font 4
#font_5 font5 str f5 - - ----K select font 5
#font_6 font6 str f6 - - ----K select font 6
#font_7 font7 str f7 - - ----K select font 7
#key_back_tab kbtab str k0 - - ----- backtab key
#key_do kdo str ki - - ----K do request key
#key_command kcmd str kd - - ----K command-request key
#key_command_pane kcpn str kW - - ----K command-pane key
#key_end kend str kw - - ----- end key
#key_help khlp str kq - - ----- help key
#key_newline knl str nl - - ----K newline key
#key_next_pane knpn str kv - - ----K next-pane key
#key_prev_cmd kppn str kp - - ----K previous-command key
#key_prev_pane kppn str kV - - ----K previous-pane key
#key_quit kquit str kQ - - ----K quit key
#key_select ksel str kU - - ----- select key
#key_scroll_left kscl str kz - - ----K scroll left
#key_scroll_right kscr str kZ - - ----K scroll right
#key_tab ktab str ko - - ----K tab key
#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
#appl_defined_str apstr str za - - ----K application-defined string
# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
# the IBM manual pages, so the cap name strings are guesses. The terminfo
# names are almost certainly right, the termcap ones almost certainly wrong.
#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
# Undocumented capabilities end here
#key_sf1 ksf1 str S1 - - ----K special function key 1
#key_sf2 ksf2 str S2 - - ----K special function key 2
#key_sf3 ksf3 str S3 - - ----K special function key 3
#key_sf4 ksf4 str S4 - - ----K special function key 4
#key_sf5 ksf5 str S5 - - ----K special function key 5
#key_sf6 ksf6 str S6 - - ----K special function key 6
#key_sf7 ksf7 str S7 - - ----K special function key 7
#key_sf8 ksf8 str S8 - - ----K special function key 8
#key_sf9 ksf9 str S9 - - ----K special function key 9
#key_sf10 ksf10 str SA - - ----K special function key 10
# AIX version 3 documents different codes for F11, F12 and does not mention
# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
#key_f11 kf11 str k< - - ----- function key 11
#key_f12 kf12 str k> - - ----- function key 12
# Undocumented capabilities end here.
#key_action kact str kJ - - ----K sent by action key
# The IBM docs say these capabilities are for table-drawing, and are
# valid only for aixterm descriptions.
#enter_topline_mode topl str tp - - ----K start top-line mode
#enter_bottom_mode btml str bm - - ----K start bottom-line mode
#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
#
#############################################################################
#
# ALIAS DECLARATIONS
#
# Here we set up aliases for translating extensions into standard terminfo.
#
#---------------------------------- Termcap aliases -------------------------
#
# BSD aliases:
#
# This is a common error in many termcap files. We'll get notified during
# translation when this (or any other alias) fires.
#
capalias sb sr BSD scroll text down
#
# AT&T extensions:
#
# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
# nonstandard capabilities. Its signature is the KM capability, used to name
# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
# set. Comments in the original, and a little cross-checking with other AT&T
# documentation, seem to establish the following mappings:
#
capalias BO mr AT&T enter_reverse_mode
capalias CI vi AT&T cursor_invisible
capalias CV ve AT&T cursor_normal
capalias DS mh AT&T enter_dim_mode
#capalias EE me AT&T exit_attribute_mode
capalias FE LF AT&T label_on
capalias FL LO AT&T label_off
capalias XS mk AT&T enter_secure_mode
#
# We comment out EE because the conflicting XENIX EE is more common in
# old entries.
#
# XENIX extensions:
#
# These are the ones we know how to translate directly:
#
capalias EE mh XENIX exit_attribute_mode
capalias GE ae XENIX exit_alt_charset_mode
capalias GS as XENIX enter_alt_charset_mode
capalias CF vi XENIX cursor_invis
capalias CO ve XENIX cursor_normal
capalias EN @7 XENIX key_end
capalias HM kh XENIX key_home
capalias LD kL XENIX key_dl
capalias PD kN XENIX key_npage
capalias PN po XENIX prtr_off
capalias PS pf XENIX prtr_on
capalias PU kP XENIX key_ppage
capalias RT @8 XENIX kent
capalias UP ku XENIX kcuu1
capalias G6 IGNORE XENIX double-ACS_ULCORNER
capalias G7 IGNORE XENIX double-ACS_LLCORNER
capalias G5 IGNORE XENIX double-ACS_URCORNER
capalias G8 IGNORE XENIX double-ACS_LRCORNER
capalias Gr IGNORE XENIX double-ACS_LTEE
capalias Gr IGNORE XENIX double-ACS_RTEE
capalias Gu IGNORE XENIX double-ACS_BTEE
capalias Gd IGNORE XENIX double ACS_TTEE
capalias Gh IGNORE XENIX double-ACS_HLINE
capalias Gv IGNORE XENIX double-ACS_VLINE
capalias Gc IGNORE XENIX double-ACS_PLUS
capalias GG IGNORE XENIX acs-glitch
#
# IBM extensions:
#
capalias kq %1 IBM key_help
#
# Iris extensions:
#
capalias HS mh IRIS enter_dim_mode
#
# Tektronix extensions:
#
capalias KA k; Tek key_f10
capalias KB F1 Tek key_f11
capalias KC F2 Tek key_f12
capalias KD F3 Tek key_f13
capalias KE F4 Tek key_f14
capalias KF F5 Tek key_f15
capalias BC Sb Tek set_background
capalias FC Sf Tek set_foreground
#
# There are also the following:
#
# XENIX XENIX variable name name clash with terminfo?
# ----- ------------------- -------------------------
# CL key_char_left
# CR key_char_right
# CW key_change_window
# HP ??
# LF key_linefeed label_off
# NU key_next_unlocked_cell
# PL ??
# PR ??
# RC key_recalc remove_clock
# RF key_toggle_ref req_for_input
# WL key_word_left
# WR key_word_right
#
# If you know what any of the question-marked ones mean, please tell us.
#
#--------------------------------- Terminfo aliases ------------------------
#
# IBM extensions:
#
infoalias font0 s0ds IBM set0_des_seq
infoalias font1 s1ds IBM set1_des_seq
infoalias font2 s2ds IBM set2_des_seq
infoalias font3 s3ds IBM set3_des_seq
infoalias kbtab kcbt IBM key_backtab
infoalias ksel kslt IBM key_select
#
# Some others are identical to SVr4/XPG4 capabilities, in particular:
# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################

View File

@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 2001-2006,2010 Free Software Foundation, Inc. #
# Copyright (c) 2001-2016,2019 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"), #
@ -28,13 +28,13 @@
#
# Author: Thomas Dickey
#
# $Id: Caps.uwin,v 1.5 2010/12/04 18:49:20 tom Exp $
# $Id: Caps.uwin,v 1.11 2019/07/27 00:36:44 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with U/Win's terminfo.
#
# This table is used to generate initializers for tables that drive tic,
# infocmp, and the library compilation code used to support the termcap
# infocmp, and the library compilation code used to support the termcap
# compatibility hack. It is also used to generate the tabular portion of the
# terminfo(5) man page; lines beginning with `#%' are passed through to become
# the terminfo table.
@ -97,7 +97,7 @@
# 3. List it in the standard table. You almost certainly do *not* want
# to do this -- the capabilities in that one, and their order, have been
# carefully chosen to be SVr4-binary-compatible when they're written out
# as a terminfo object, and breaking this would be bad. It's up the ncurses
# as a terminfo object, and breaking this would be bad. It's up to the ncurses
# library what to do with the terminfo data after it's read in.
#
# 4. List it in the aliases table with an IGNORE target field. If you
@ -119,14 +119,14 @@
# You'll need to write custom code, probably in postprocess_termcap() or
# postprocess_terminfo(), to handle the translation.
#
# CONTROLLING ENTRY LENGTH
# CONTROLLING ENTRY LENGTH
#
# Notes on specific elisions made to fit translations within 1023 bytes:
#
# Machines with IBM PC-like keyboards want to be able to define the following
# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
# only environments for End or Home-Down), key_dc, and key_ic. This is also
# the set of keys the `joe' editor will be upset if it can't see. So don't
# the set of keys the `joe' editor will be upset if it can't see. So don't
# trim those out of the set to be translated to termcap, or various users of
# the termcap file will become irate.
#
@ -147,7 +147,7 @@
#
# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
# translations go back over critical if we do this. As 4.4BSD curses fades
# into history and GNU termcap's application base shrinks towards being GNU
# into history and GNU termcap's application base shrinks towards being GNU
# Emacs only, we'll probably elide out some BSD-only capabilities in order
# to buy space for non-essentials Emacs is still using. Capabilities high
# on that hit list: rc, sc, uc.
@ -166,7 +166,7 @@
#%The \fBcapname\fR is the short name used in the text of the database,
#%and is used by a person updating the database.
#%Whenever possible, capnames are chosen to be the same as or similar to
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
#%identical or very similar names). Semantics are also intended to match
#%those of the specification.
#%
@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
@ -650,7 +650,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# GNU termcap *does* include the following extended capability, Only the
# now-obsolete Ann Arbor terminals used it.
#
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
#
# The following comments describe capnames so ancient that I believe no
# software uses them any longer. Some of these have to go because they
@ -667,9 +667,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key
# comma-separated list of capabilities for which there are corresponding keys.
# The `kn' code is accepted but ignored.
#
# The `ma' capability seems to have been designed to map between the rogue(2)
# motion keys (including jkhl) and characters emitted by arrow keys on some
# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
# The `ma' capability was a 4.0BSD feature used by vi version 2.
# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh.
# Besides being obsolete, that interpretation conflicts with max_attributes.
#
# Here is a description of memory_lock_above and memory_unlock:
# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
@ -695,7 +695,7 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
number_of_function_keys OTkn num kn - - -B-G- count of function keys
other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2
# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
@ -711,7 +711,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# University of Waterloo termcap extensions (as described in mytinfo).
# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
# be resolved by a type check. The descriptions are guesses from what was
# in the mytinfo tables.
# in the mytinfo tables.
#
# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
# key_kill_char OTkk str kk - - ----- string set by kill key (?)
@ -760,7 +760,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line
# Gv 186 \272 M-: double vertical line
#
# The compiler will translate the single-line caps and discard the others
# (via IGNORE aliases further down). We don't want to do normal pad
# (via IGNORE aliases further down). We don't want to do normal pad
# translation on these, they're often single-character printable ASCII
# strings that happen to be numerics. There's awk code in parametrized.sh
# that detects the acs_ prefix and uses it to suppress pad translation.
@ -782,303 +782,10 @@ acs_plus OTGC str GC - - ----- single intersection
#
# TERMINFO EXTENSION CAPABILITIES
#
# This section is almost all comments. What it's mainly for is to describe
# what capabilities need to be squeezed out to get down to the XSI Curses
# standard set. They are flagged with K.
#
# HP extensions
#
# These extensions follow ptr_non (replacing everything after it) in HP
# terminfo files. Except for memory_lock and memory_unlock, they are
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
# (see Caps-ncurses for the complete set of comments)
#
memory_lock meml str ml - - ----K lock memory above cursor
memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
#key_f11 kf11 str F1 - - ----- F11 function key
#key_f12 kf12 str F2 - - ----- F12 function key
#key_f13 kf13 str F3 - - ----- F13 function key
#key_f14 kf14 str F4 - - ----- F14 function key
#key_f15 kf15 str F5 - - ----- F15 function key
#key_f16 kf16 str F6 - - ----- F16 function key
#key_f17 kf17 str F7 - - ----- F17 function key
#key_f18 kf18 str F8 - - ----- F18 function key
#key_f19 kf19 str F9 - - ----- F19 function key
#key_f20 kf20 str FA - - ----- F20 function key
#key_f21 kf21 str FB - - ----- F21 function key
#key_f22 kf22 str FC - - ----- F22 function key
#key_f23 kf23 str FD - - ----- F23 function key
#key_f24 kf24 str FE - - ----- F24 function key
#key_f25 kf25 str FF - - ----- F25 function key
#key_f26 kf26 str FG - - ----- F26 function key
#key_f27 kf27 str FH - - ----- F27 function key
#key_f28 kf28 str FI - - ----- F28 function key
#key_f29 kf29 str FJ - - ----- F29 function key
#key_f30 kf30 str FK - - ----- F30 function key
#key_f31 kf31 str FL - - ----- F31 function key
#key_f32 kf32 str FM - - ----- F32 function key
#key_f33 kf33 str FN - - ----- F33 function key
#key_f34 kf34 str FO - - ----- F34 function key
#key_f35 kf35 str FP - - ----- F35 function key
#key_f36 kf36 str FQ - - ----- F36 function key
#key_f37 kf37 str FR - - ----- F37 function key
#key_f38 kf38 str FS - - ----- F38 function key
#key_f39 kf39 str FT - - ----- F39 function key
#key_f40 kf40 str FU - - ----- F40 function key
#key_f41 kf41 str FV - - ----- F41 function key
#key_f42 kf42 str FW - - ----- F42 function key
#key_f43 kf43 str FX - - ----- F43 function key
#key_f44 kf44 str FY - - ----- F44 function key
#key_f45 kf45 str FZ - - ----- F45 function key
#key_f46 kf46 str Fa - - ----- F46 function key
#key_f47 kf47 str Fb - - ----- F47 function key
#key_f48 kf48 str Fc - - ----- F48 function key
#key_f49 kf49 str Fd - - ----- F49 function key
#key_f50 kf50 str Fe - - ----- F50 function key
#key_f51 kf51 str Ff - - ----- F51 function key
#key_f52 kf52 str Fg - - ----- F52 function key
#key_f53 kf53 str Fh - - ----- F53 function key
#key_f54 kf54 str Fi - - ----- F54 function key
#key_f55 kf55 str Fj - - ----- F55 function key
#key_f56 kf56 str Fk - - ----- F56 function key
#key_f57 kf57 str Fl - - ----- F57 function key
#key_f58 kf58 str Fm - - ----- F58 function key
#key_f59 kf59 str Fn - - ----- F59 function key
#key_f60 kf60 str Fo - - ----- F60 function key
#key_f61 kf61 str Fp - - ----- F61 function key
#key_f62 kf62 str Fq - - ----- F62 function key
#key_f63 kf63 str Fr - - ----- F63 function key
#
# IBM extensions
#
# These extensions follow ptr_non (replacing everything after it) in IBM
# terminfo files.
#
# The places in the box[12] capabilities correspond to acsc characters, here is
# the mapping:
#
# box1[0] = ACS_ULCORNER
# box1[1] = ACS_HLINE
# box1[2] = ACS_URCORNER
# box1[3] = ACS_VLINE
# box1[4] = ACS_LRCORNER
# box1[5] = ACS_LLCORNER
# box1[6] = ACS_TTEE
# box1[7] = ACS_RTEE
# box1[8] = ACS_BTEE
# box1[9] = ACS_LTEE
# box1[10] = ACS_PLUS
#
# The box2 characters are the double-line versions of these forms graphics.
#
box_chars_1 box1 str bx - - ----K box characters primary set
#box_chars_2 box2 str by - - ----K box characters secondary set
#box_attr_1 batt1 str Bx - - ----K attributes for box1
#box_attr_2 batt2 str By - - ----K attributes for box2
#color_bg_0 colb0 str d0 - - ----K background color 0
#color_bg_1 colb1 str d1 - - ----K background color 1
#color_bg_2 colb2 str d2 - - ----K background color 2
#color_bg_3 colb3 str d3 - - ----K background color 3
#color_bg_4 colb4 str d4 - - ----K background color 4
#color_bg_5 colb5 str d5 - - ----K background color 5
#color_bg_6 colb6 str d6 - - ----K background color 6
#color_bg_7 colb7 str d7 - - ----K background color 7
#color_fg_0 colf0 str c0 - - ----K foreground color 0
#color_fg_1 colf1 str c1 - - ----K foreground color 1
#color_fg_2 colf2 str c2 - - ----K foreground color 2
#color_fg_3 colf3 str c3 - - ----K foreground color 3
#color_fg_4 colf4 str c4 - - ----K foreground color 4
#color_fg_5 colf5 str c5 - - ----K foreground color 5
#color_fg_6 colf6 str c6 - - ----K foreground color 6
#color_fg_7 colf7 str c7 - - ----K foreground color 7
#font_0 font0 str f0 - - ----- select font 0
#font_1 font1 str f1 - - ----- select font 1
#font_2 font2 str f2 - - ----- select font 2
#font_3 font3 str f3 - - ----- select font 3
#font_4 font4 str f4 - - ----K select font 4
#font_5 font5 str f5 - - ----K select font 5
#font_6 font6 str f6 - - ----K select font 6
#font_7 font7 str f7 - - ----K select font 7
#key_back_tab kbtab str k0 - - ----- backtab key
#key_do kdo str ki - - ----K do request key
#key_command kcmd str kd - - ----K command-request key
#key_command_pane kcpn str kW - - ----K command-pane key
#key_end kend str kw - - ----- end key
#key_help khlp str kq - - ----- help key
#key_newline knl str nl - - ----K newline key
#key_next_pane knpn str kv - - ----K next-pane key
#key_prev_cmd kppn str kp - - ----K previous-command key
#key_prev_pane kppn str kV - - ----K previous-pane key
#key_quit kquit str kQ - - ----K quit key
#key_select ksel str kU - - ----- select key
#key_scroll_left kscl str kz - - ----K scroll left
#key_scroll_right kscr str kZ - - ----K scroll right
#key_tab ktab str ko - - ----K tab key
#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
#appl_defined_str apstr str za - - ----K application-defined string
# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
# the IBM manual pages, so the cap name strings are guesses. The terminfo
# names are almost certainly right, the termcap ones almost certainly wrong.
#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
# Undocumented capabilities end here
#key_sf1 ksf1 str S1 - - ----K special function key 1
#key_sf2 ksf2 str S2 - - ----K special function key 2
#key_sf3 ksf3 str S3 - - ----K special function key 3
#key_sf4 ksf4 str S4 - - ----K special function key 4
#key_sf5 ksf5 str S5 - - ----K special function key 5
#key_sf6 ksf6 str S6 - - ----K special function key 6
#key_sf7 ksf7 str S7 - - ----K special function key 7
#key_sf8 ksf8 str S8 - - ----K special function key 8
#key_sf9 ksf9 str S9 - - ----K special function key 9
#key_sf10 ksf10 str SA - - ----K special function key 10
# AIX version 3 documents different codes for F11, F12 and does not mention
# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
#key_f11 kf11 str k< - - ----- function key 11
#key_f12 kf12 str k> - - ----- function key 12
# Undocumented capabilities end here.
#key_action kact str kJ - - ----K sent by action key
# The IBM docs say these capabilities are for table-drawing, and are
# valid only for aixterm descriptions.
#enter_topline_mode topl str tp - - ----K start top-line mode
#enter_bottom_mode btml str bm - - ----K start bottom-line mode
#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
#
#############################################################################
#
# ALIAS DECLARATIONS
#
# Here we set up aliases for translating extensions into standard terminfo.
#
#---------------------------------- Termcap aliases -------------------------
#
# BSD aliases:
#
# This is a common error in many termcap files. We'll get notified during
# translation when this (or any other alias) fires.
#
capalias sb sr BSD scroll text down
#
# AT&T extensions:
#
# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
# nonstandard capabilities. Its signature is the KM capability, used to name
# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
# set. Comments in the original, and a little cross-checking with other AT&T
# documentation, seem to establish the following mappings:
#
capalias BO mr AT&T enter_reverse_mode
capalias CI vi AT&T cursor_invisible
capalias CV ve AT&T cursor_normal
capalias DS mh AT&T enter_dim_mode
#capalias EE me AT&T exit_attribute_mode
capalias FE LF AT&T label_on
capalias FL LO AT&T label_off
capalias XS mk AT&T enter_secure_mode
#
# We comment out EE because the conflicting XENIX EE is more common in
# old entries.
#
# XENIX extensions:
#
# These are the ones we know how to translate directly:
#
capalias EE mh XENIX exit_attribute_mode
capalias GE ae XENIX exit_alt_charset_mode
capalias GS as XENIX enter_alt_charset_mode
capalias CF vi XENIX cursor_invis
capalias CO ve XENIX cursor_normal
capalias EN @7 XENIX key_end
capalias HM kh XENIX key_home
capalias LD kL XENIX key_dl
capalias PD kN XENIX key_npage
capalias PN po XENIX prtr_off
capalias PS pf XENIX prtr_on
capalias PU kP XENIX key_ppage
capalias RT @8 XENIX kent
capalias UP ku XENIX kcuu1
capalias G6 IGNORE XENIX double-ACS_ULCORNER
capalias G7 IGNORE XENIX double-ACS_LLCORNER
capalias G5 IGNORE XENIX double-ACS_URCORNER
capalias G8 IGNORE XENIX double-ACS_LRCORNER
capalias Gr IGNORE XENIX double-ACS_LTEE
capalias Gr IGNORE XENIX double-ACS_RTEE
capalias Gu IGNORE XENIX double-ACS_BTEE
capalias Gd IGNORE XENIX double ACS_TTEE
capalias Gh IGNORE XENIX double-ACS_HLINE
capalias Gv IGNORE XENIX double-ACS_VLINE
capalias Gc IGNORE XENIX double-ACS_PLUS
capalias GG IGNORE XENIX acs-glitch
#
# IBM extensions:
#
capalias kq %1 IBM key_help
#
# Iris extensions:
#
capalias HS mh IRIS enter_dim_mode
#
# Tektronix extensions:
#
capalias KA k; Tek key_f10
capalias KB F1 Tek key_f11
capalias KC F2 Tek key_f12
capalias KD F3 Tek key_f13
capalias KE F4 Tek key_f14
capalias KF F5 Tek key_f15
capalias BC Sb Tek set_background
capalias FC Sf Tek set_foreground
#
# There are also the following:
#
# XENIX XENIX variable name name clash with terminfo?
# ----- ------------------- -------------------------
# CL key_char_left
# CR key_char_right
# CW key_change_window
# HP ??
# LF key_linefeed label_off
# NU key_next_unlocked_cell
# PL ??
# PR ??
# RC key_recalc remove_clock
# RF key_toggle_ref req_for_input
# WL key_word_left
# WR key_word_right
#
# If you know what any of the question-marked ones mean, please tell us.
#
#--------------------------------- Terminfo aliases ------------------------
#
# IBM extensions:
#
infoalias font0 s0ds IBM set0_des_seq
infoalias font1 s1ds IBM set1_des_seq
infoalias font2 s2ds IBM set2_des_seq
infoalias font3 s3ds IBM set3_des_seq
infoalias kbtab kcbt IBM key_backtab
infoalias ksel kslt IBM key_select
#
# Some others are identical to SVr4/XPG4 capabilities, in particular:
# kcmd, kend, khlp, and kf11...kf63.
#
#############################################################################

View File

@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
# Copyright (c) 1998,2006 Free Software Foundation, Inc. #
# Copyright (c) 1998-2006,2019 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"), #
@ -26,7 +26,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
# $Id: MKhashsize.sh,v 1.7 2006/10/22 00:45:39 tom Exp $
# $Id: MKhashsize.sh,v 1.8 2019/04/06 22:53:17 tom Exp $
#
# MKhashsize.sh --- generate size include for hash functions
#
@ -34,8 +34,8 @@ echo "/*"
echo " * hashsize.h -- hash and token table constants"
echo " */"
CAPS="${1-Caps}"
TABSIZE=`grep -v '^[ #]' $CAPS | grep -v "^$" | grep -v "^capalias"| grep -v "^infoalias" | wc -l`
test $# = 0 && set Caps
TABSIZE=`cat "$@" | grep -v '^[ #]' | grep -v "^$" | grep -v "^capalias"| grep -v "^infoalias" | grep -v "^userdef" | grep -v "^used_by" | wc -l`
echo ""
echo "#define CAPTABSIZE ${TABSIZE}"

View File

@ -1,7 +1,7 @@
#! /bin/sh
# $Id: MKkey_defs.sh,v 1.15 2013/03/09 16:32:01 tom Exp $
# $Id: MKkey_defs.sh,v 1.18 2019/04/06 23:38:16 tom Exp $
##############################################################################
# Copyright (c) 2001-2003,2013 Free Software Foundation, Inc. #
# Copyright (c) 2001-2017,2019 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"), #
@ -35,25 +35,26 @@
# Extract function-key definitions from the Caps file
#
: ${AWK-awk}
DATA=${1-Caps}
test $# = 0 && set Caps
data=data$$
pass1=pass1_$$
pass2=pass2_$$
pass3=pass3_$$
pass4=pass4_$$
trap 'rm -f $data pass[1234]_$$' 0 1 2 5 15
trap 'rm -f $data pass[1234]_$$' EXIT INT QUIT TERM HUP
# change repeated tabs (used for readability) to single tabs (needed to make
# awk see the right field alignment of the corresponding columns):
if sort -k 6 $DATA >$data 2>/dev/null
if sort -k 6 "$@" >$data 2>/dev/null
then
# POSIX
sed -e 's/[ ][ ]*/ /g' < $DATA |sort -n -k 6 >$data
elif sort -n +5 $DATA >$data 2>/dev/null
sed -e 's/[ ][ ]*/ /g' "$@" |sort -n -k 6 >$data
elif sort -n +5 "$@" >$data 2>/dev/null
then
# SunOS (and SVr4, marked as obsolete but still recognized)
sed -e 's/[ ][ ]*/ /g' < $DATA |sort -n +5 >$data
sed -e 's/[ ][ ]*/ /g' "$@" |sort -n +5 >$data
else
echo "Your sort utility is broken. Please install one that works." >&2
exit 1
@ -66,11 +67,10 @@ key_event kv1 str V1 KEY_EVENT + ----- We were interrupted by an event
EOF
THIS=./`basename $0`
PARM=./`basename $DATA`
cat <<EOF
/*
* These definitions were generated by $THIS $PARM
* These definitions were generated by $THIS $*
*/
EOF
@ -124,6 +124,8 @@ BEGIN {
/^#/ {next;}
/^capalias/ {next;}
/^infoalias/ {next;}
/^used_by/ {next;}
/^userdef/ {next;}
$5 != "-" && $6 != "-" {
if ($6 == "+") {

View File

@ -1,7 +1,7 @@
#! /bin/sh
# $Id: MKncurses_def.sh,v 1.2 2003/10/25 16:19:46 tom Exp $
# $Id: MKncurses_def.sh,v 1.3 2003/10/25 16:19:46 tom Exp $
##############################################################################
# Copyright (c) 2000 Free Software Foundation, Inc. #
# Copyright (c) 2000,2003 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"), #

View File

@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
# Copyright (c) 1998-2000,2006 Free Software Foundation, Inc. #
# Copyright (c) 1998-2017,2019 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"), #
@ -26,15 +26,18 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
# $Id: MKparametrized.sh,v 1.6 2006/04/22 21:36:16 tom Exp $
# $Id: MKparametrized.sh,v 1.9 2019/04/13 20:36:24 tom Exp $
#
# MKparametrized.sh -- generate indirection vectors for various sort methods
#
# The output of this script is C source for an array specifying whether
# termcap strings should undergo parameter and padding translation.
#
CAPS="${1-Caps}"
[ $# = 0 ] && set - Caps
cat <<EOF
#ifndef PARAMETRIZED_H
#define PARAMETRIZED_H 1
/*
* parametrized.h --- is a termcap capability parametrized?
*
@ -52,11 +55,20 @@ EOF
# XENIX acs_* capabilities. Maybe someday we'll dedicate a flag field for
# this, that would be cleaner....
${AWK-awk} <$CAPS '
$3 != "str" {next;}
$1 ~ /^acs_/ {print "-1,\t/* ", $2, " */"; count++; next;}
$0 ~ /#[0-9]/ {print "1,\t/* ", $2, " */"; count++; next;}
{print "0,\t/* ", $2, " */"; count++;}
END {printf("} /* %d entries */;\n\n", count);}
cat "$@" | ${AWK-awk} '
/^#/ { next ; }
/^capalias/ { next ; }
/^infoalias/ { next ; }
/^used_by/ { next ; }
/^userdef/ { next ; }
$3 != "str" {next;}
$1 ~ /^acs_/ {print "-1,\t/* ", $2, " */"; count++; next;}
$1 ~ /^label_format/ {print "-1,\t/* ", $2, " */"; count++; next;}
$0 ~ /#[0-9]/ {print "1,\t/* ", $2, " */"; count++; next;}
{print "0,\t/* ", $2, " */"; count++;}
END {printf("} /* %d entries */;\n\n", count);}
'
echo "#endif /* PARAMETRIZED_H */"

View File

@ -1,334 +1,390 @@
# vile:awkmode
BEGIN {
print "/****************************************************************************"
print " * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *"
print " * *"
print " * Permission is hereby granted, free of charge, to any person obtaining a *"
print " * copy of this software and associated documentation files (the *"
print " * \"Software\"), to deal in the Software without restriction, including *"
print " * without limitation the rights to use, copy, modify, merge, publish, *"
print " * distribute, distribute with modifications, sublicense, and/or sell *"
print " * copies of the Software, and to permit persons to whom the Software is *"
print " * furnished to do so, subject to the following conditions: *"
print " * *"
print " * The above copyright notice and this permission notice shall be included *"
print " * in all copies or substantial portions of the Software. *"
print " * *"
print " * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS *"
print " * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *"
print " * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *"
print " * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *"
print " * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *"
print " * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *"
print " * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *"
print " * *"
print " * Except as contained in this notice, the name(s) of the above copyright *"
print " * holders shall not be used in advertising or otherwise to promote the *"
print " * sale, use or other dealings in this Software without prior written *"
print " * authorization. *"
print " ****************************************************************************/"
print ""
print "/****************************************************************************/"
print "/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 */"
print "/* and: Eric S. Raymond <esr@snark.thyrsus.com> */"
print "/* and: Thomas E. Dickey 1995-on */"
print "/****************************************************************************/"
print ""
print "/* $Id: MKterm.h.awk.in,v 1.62 2013/08/17 19:21:56 tom Exp $ */"
print ""
print "/*"
print "** term.h -- Definition of struct term"
print "*/"
print ""
print "#ifndef NCURSES_TERM_H_incl"
print "#define NCURSES_TERM_H_incl 1"
print ""
print "#undef NCURSES_VERSION"
print "#define NCURSES_VERSION \"@NCURSES_MAJOR@.@NCURSES_MINOR@\""
print ""
print "#include <ncurses_dll.h>"
print ""
print "#ifdef __cplusplus"
print "extern \"C\" {"
print "#endif"
print ""
print "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H"
print " * definition (based on the system for which this was configured)."
print " */"
print ""
print "#undef NCURSES_CONST"
print "#define NCURSES_CONST @NCURSES_CONST@"
print ""
print "#undef NCURSES_SBOOL"
print "#define NCURSES_SBOOL @NCURSES_SBOOL@"
print ""
print "#undef NCURSES_USE_DATABASE"
print "#define NCURSES_USE_DATABASE @NCURSES_USE_DATABASE@"
print ""
print "#undef NCURSES_USE_TERMCAP"
print "#define NCURSES_USE_TERMCAP @NCURSES_USE_TERMCAP@"
print ""
print "#undef NCURSES_XNAMES"
print "#define NCURSES_XNAMES @NCURSES_XNAMES@"
print ""
print "/* We will use these symbols to hide differences between"
print " * termios/termio/sgttyb interfaces."
print " */"
print "#undef TTY"
print "#undef SET_TTY"
print "#undef GET_TTY"
print ""
print "/* Assume POSIX termio if we have the header and function */"
print "/* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */"
print "#if @HAVE_TERMIOS_H@ && @HAVE_TCGETATTR@"
print ""
print "#undef TERMIOS"
print "#define TERMIOS 1"
print ""
print "#include <termios.h>"
print "#define TTY struct termios"
print ""
print "#else /* !HAVE_TERMIOS_H */"
print ""
print "/* #if HAVE_TERMIO_H */"
print "#if @HAVE_TERMIO_H@"
print ""
print "#undef TERMIOS"
print "#define TERMIOS 1"
print ""
print "#include <termio.h>"
print "#define TTY struct termio"
print ""
print "#else /* !HAVE_TERMIO_H */"
print ""
print "#if __MINGW32__"
print "# include <ncurses_mingw.h>"
print "# define TTY struct termios"
print "#else"
print "#undef TERMIOS"
print "#include <sgtty.h>"
print "#include <sys/ioctl.h>"
print "#define TTY struct sgttyb"
print "#endif /* MINGW32 */"
print "#endif /* HAVE_TERMIO_H */"
print ""
print "#endif /* HAVE_TERMIOS_H */"
print ""
print "#ifdef TERMIOS"
print "#define GET_TTY(fd, buf) tcgetattr(fd, buf)"
print "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)"
print "#else"
print "#define GET_TTY(fd, buf) gtty(fd, buf)"
print "#define SET_TTY(fd, buf) stty(fd, buf)"
print "#endif"
print ""
print "#define NAMESIZE 256"
print ""
print "#define CUR cur_term->type."
print ""
}
function declare_termtype(number,suffix) {
printf "typedef struct termtype%s { /* in-core form of terminfo data */\n", suffix;
print " char *term_names; /* str_table offset of term names */"
print " char *str_table; /* pointer to string table */"
print " NCURSES_SBOOL *Booleans; /* array of boolean values */"
printf " %-5s *Numbers; /* array of integer values */\n", number;
print " char **Strings; /* array of string offsets */"
print ""
print "#if NCURSES_XNAMES"
print " char *ext_str_table; /* pointer to extended string table */"
print " char **ext_Names; /* corresponding names */"
print ""
print " unsigned short num_Booleans;/* count total Booleans */";
print " unsigned short num_Numbers; /* count total Numbers */";
print " unsigned short num_Strings; /* count total Strings */";
print ""
print " unsigned short ext_Booleans;/* count extensions to Booleans */";
print " unsigned short ext_Numbers; /* count extensions to Numbers */";
print " unsigned short ext_Strings; /* count extensions to Strings */";
print "#endif /* NCURSES_XNAMES */"
print ""
printf "} TERMTYPE%s;\n", suffix;
}
BEGIN {
lcurl = "{";
rcurl = "}";
print "/****************************************************************************"
print " * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. *"
print " * *"
print " * Permission is hereby granted, free of charge, to any person obtaining a *"
print " * copy of this software and associated documentation files (the *"
print " * \"Software\"), to deal in the Software without restriction, including *"
print " * without limitation the rights to use, copy, modify, merge, publish, *"
print " * distribute, distribute with modifications, sublicense, and/or sell *"
print " * copies of the Software, and to permit persons to whom the Software is *"
print " * furnished to do so, subject to the following conditions: *"
print " * *"
print " * The above copyright notice and this permission notice shall be included *"
print " * in all copies or substantial portions of the Software. *"
print " * *"
print " * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS *"
print " * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *"
print " * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *"
print " * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *"
print " * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *"
print " * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *"
print " * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *"
print " * *"
print " * Except as contained in this notice, the name(s) of the above copyright *"
print " * holders shall not be used in advertising or otherwise to promote the *"
print " * sale, use or other dealings in this Software without prior written *"
print " * authorization. *"
print " ****************************************************************************/"
print ""
print "/****************************************************************************/"
print "/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 */"
print "/* and: Eric S. Raymond <esr@snark.thyrsus.com> */"
print "/* and: Thomas E. Dickey 1995-on */"
print "/****************************************************************************/"
print ""
print "/* $Id: MKterm.h.awk.in,v 1.73 2019/12/21 18:29:09 tom Exp $ */"
print ""
print "/*"
print "** term.h -- Definition of struct term"
print "*/"
print ""
print "#ifndef NCURSES_TERM_H_incl"
print "#define NCURSES_TERM_H_incl 1"
print ""
print "#undef NCURSES_VERSION"
print "#define NCURSES_VERSION \"@NCURSES_MAJOR@.@NCURSES_MINOR@\""
print ""
print "#include <ncurses_dll.h>"
print ""
print "#ifdef __cplusplus"
printf "extern \"C\" %s\n", lcurl;
print "#endif"
print ""
print "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H"
print " * definition (based on the system for which this was configured)."
print " */"
print ""
print "#undef NCURSES_CONST"
print "#define NCURSES_CONST @NCURSES_CONST@"
print ""
print "#undef NCURSES_SBOOL"
print "#define NCURSES_SBOOL @NCURSES_SBOOL@"
print ""
print "#undef NCURSES_USE_DATABASE"
print "#define NCURSES_USE_DATABASE @NCURSES_USE_DATABASE@"
print ""
print "#undef NCURSES_USE_TERMCAP"
print "#define NCURSES_USE_TERMCAP @NCURSES_USE_TERMCAP@"
print ""
print "#undef NCURSES_XNAMES"
print "#define NCURSES_XNAMES @NCURSES_XNAMES@"
print ""
print "/* We will use these symbols to hide differences between"
print " * termios/termio/sgttyb interfaces."
print " */"
print "#undef TTY"
print "#undef SET_TTY"
print "#undef GET_TTY"
print ""
print "/* Assume POSIX termio if we have the header and function */"
print "/* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */"
print "#if @HAVE_TERMIOS_H@ && @HAVE_TCGETATTR@"
print ""
print "#undef TERMIOS"
print "#define TERMIOS 1"
print ""
print "#include <termios.h>"
print "#define TTY struct termios"
print ""
print "#else /* !HAVE_TERMIOS_H */"
print ""
print "/* #if HAVE_TERMIO_H */"
print "#if @HAVE_TERMIO_H@"
print ""
print "#undef TERMIOS"
print "#define TERMIOS 1"
print ""
print "#include <termio.h>"
print "#define TTY struct termio"
print ""
print "#else /* !HAVE_TERMIO_H */"
print ""
print "#if _WIN32"
print "# include <ncurses_mingw.h>"
print "# define TTY struct termios"
print "#else"
print "#undef TERMIOS"
print "#include <sgtty.h>"
print "#include <sys/ioctl.h>"
print "#define TTY struct sgttyb"
print "#endif /* MINGW32 */"
print "#endif /* HAVE_TERMIO_H */"
print ""
print "#endif /* HAVE_TERMIOS_H */"
print ""
print "#ifdef TERMIOS"
print "#define GET_TTY(fd, buf) tcgetattr(fd, buf)"
print "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)"
print "#else"
print "#define GET_TTY(fd, buf) gtty(fd, buf)"
print "#define SET_TTY(fd, buf) stty(fd, buf)"
print "#endif"
print ""
print "#ifndef GCC_NORETURN"
print "#define GCC_NORETURN /* nothing */"
print "#endif"
print ""
print "#define NAMESIZE 256"
print ""
print "/* The cast works because TERMTYPE is the first data in TERMINAL */"
print "#define CUR ((TERMTYPE *)(cur_term))->"
print ""
}
$2 == "%%-STOP-HERE-%%" {
print ""
printf "#define BOOLWRITE %d\n", BoolCount
printf "#define NUMWRITE %d\n", NumberCount
printf "#define STRWRITE %d\n", StringCount
print ""
print "/* older synonyms for some capabilities */"
print "#define beehive_glitch no_esc_ctlc"
print "#define teleray_glitch dest_tabs_magic_smso"
print "#define micro_char_size micro_col_size"
print ""
print "#ifdef __INTERNAL_CAPS_VISIBLE"
}
$2 == "%%-STOP-HERE-%%" {
print ""
printf "#define BOOLWRITE %d\n", BoolCount
printf "#define NUMWRITE %d\n", NumberCount
printf "#define STRWRITE %d\n", StringCount
print ""
print "/* older synonyms for some capabilities */"
print "#define beehive_glitch no_esc_ctlc"
print "#define teleray_glitch dest_tabs_magic_smso"
print ""
print "/* HPUX-11 uses this name rather than the standard one */"
print "#ifndef micro_char_size"
print "#define micro_char_size micro_col_size"
print "#endif"
print ""
print "#ifdef __INTERNAL_CAPS_VISIBLE"
}
/^#/ {next;}
/^#/ { next; }
$1 == "acs_chars" {acsindex = StringCount}
/^used_by/ { next ; }
/^userdef/ { next ; }
$3 == "bool" {
printf "#define %-30s CUR Booleans[%d]\n", $1, BoolCount++
}
$1 == "acs_chars" {
acsindex = StringCount;
}
$3 == "num" {
printf "#define %-30s CUR Numbers[%d]\n", $1, NumberCount++
}
$3 == "bool" {
printf "#define %-30s CUR Booleans[%d]\n", $1, BoolCount++
}
$3 == "str" {
printf "#define %-30s CUR Strings[%d]\n", $1, StringCount++
}
$3 == "num" {
printf "#define %-30s CUR Numbers[%d]\n", $1, NumberCount++
}
END {
print "#endif /* __INTERNAL_CAPS_VISIBLE */"
print ""
print ""
print "/*"
print " * Predefined terminfo array sizes"
print " */"
printf "#define BOOLCOUNT %d\n", BoolCount
printf "#define NUMCOUNT %d\n", NumberCount
printf "#define STRCOUNT %d\n", StringCount
print ""
print "/* used by code for comparing entries */"
print "#define acs_chars_index ", acsindex
print ""
print "typedef struct termtype { /* in-core form of terminfo data */"
print " char *term_names; /* str_table offset of term names */"
print " char *str_table; /* pointer to string table */"
print " NCURSES_SBOOL *Booleans; /* array of boolean values */"
print " short *Numbers; /* array of integer values */"
print " char **Strings; /* array of string offsets */"
print ""
print "#if NCURSES_XNAMES"
print " char *ext_str_table; /* pointer to extended string table */"
print " char **ext_Names; /* corresponding names */"
print ""
print " unsigned short num_Booleans;/* count total Booleans */"
print " unsigned short num_Numbers; /* count total Numbers */"
print " unsigned short num_Strings; /* count total Strings */"
print ""
print " unsigned short ext_Booleans;/* count extensions to Booleans */"
print " unsigned short ext_Numbers; /* count extensions to Numbers */"
print " unsigned short ext_Strings; /* count extensions to Strings */"
print "#endif /* NCURSES_XNAMES */"
print ""
print "} TERMTYPE;"
print ""
print "typedef struct term { /* describe an actual terminal */"
print " TERMTYPE type; /* terminal type description */"
print " short Filedes; /* file description being written to */"
print " TTY Ottyb, /* original state of the terminal */"
print " Nttyb; /* current state of the terminal */"
print " int _baudrate; /* used to compute padding */"
print " char * _termname; /* used for termname() */"
print "} TERMINAL;"
print ""
print "#if @BROKEN_LINKER@ && !@cf_cv_enable_reentrant@"
print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
print "#elif @cf_cv_enable_reentrant@"
print "NCURSES_WRAPPED_VAR(TERMINAL *, cur_term);"
print "#define cur_term NCURSES_PUBLIC_VAR(cur_term())"
print "#else"
print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
print "#endif"
print ""
print "#if @BROKEN_LINKER@ || @cf_cv_enable_reentrant@"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolnames);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolcodes);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames);"
print ""
print "#define boolnames NCURSES_PUBLIC_VAR(boolnames())"
print "#define boolcodes NCURSES_PUBLIC_VAR(boolcodes())"
print "#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())"
print "#define numnames NCURSES_PUBLIC_VAR(numnames())"
print "#define numcodes NCURSES_PUBLIC_VAR(numcodes())"
print "#define numfnames NCURSES_PUBLIC_VAR(numfnames())"
print "#define strnames NCURSES_PUBLIC_VAR(strnames())"
print "#define strcodes NCURSES_PUBLIC_VAR(strcodes())"
print "#define strfnames NCURSES_PUBLIC_VAR(strfnames())"
print ""
print "#else"
print ""
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];"
print ""
print "#endif"
print ""
print "/* internals */"
print "extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf);"
print "extern NCURSES_EXPORT(int) _nc_get_tty_mode (TTY *buf);"
print "extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);"
print "extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE *);"
print "extern NCURSES_EXPORT(void) _nc_init_termtype (TERMTYPE *const);"
print "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE *, char *, int);"
print "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);"
print "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);"
print "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);"
print ""
print "/* entry points */"
print "extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *);"
print "extern NCURSES_EXPORT(int) del_curterm (TERMINAL *);"
print ""
print "/* miscellaneous entry points */"
print "extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *);"
print "extern NCURSES_EXPORT(int) setupterm (NCURSES_CONST char *,int,int *);"
print ""
print "/* terminfo entry points, also declared in curses.h */"
print "#if !defined(__NCURSES_H)"
print "extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);"
print "extern NCURSES_EXPORT_VAR(char) ttytype[];"
print "extern NCURSES_EXPORT(int) putp (const char *);"
print "extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);"
print "extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);"
print ""
print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */"
print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */"
print "#else"
print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */"
print "extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */"
print "#endif"
print ""
print "extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */"
print ""
print "#endif /* __NCURSES_H */"
print ""
print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
print "#if !defined(NCURSES_TERMCAP_H_incl)"
print "extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);"
print "extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);"
print "extern NCURSES_EXPORT(int) tgetent (char *, const char *);"
print "extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *);"
print "extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *);"
print "extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));"
print "#endif /* NCURSES_TERMCAP_H_incl */"
print ""
print "/*"
print " * Include curses.h before term.h to enable these extensions."
print " */"
print "#if defined(NCURSES_SP_FUNCS) && (NCURSES_SP_FUNCS != 0)"
print ""
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tigetstr) (SCREEN*, NCURSES_CONST char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(putp) (SCREEN*, const char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetflag) (SCREEN*, NCURSES_CONST char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetnum) (SCREEN*, NCURSES_CONST char *);"
print ""
print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, NCURSES_CONST char *, ...); /* special */"
print "#else"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm_varargs) (SCREEN*, NCURSES_CONST char *, ...); /* special */"
print "#endif"
print ""
print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgetstr) (SCREEN*, NCURSES_CONST char *, char **);"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgoto) (SCREEN*, const char *, int, int);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetent) (SCREEN*, char *, const char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetflag) (SCREEN*, NCURSES_CONST char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetnum) (SCREEN*, NCURSES_CONST char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tputs) (SCREEN*, const char *, int, NCURSES_SP_OUTC);"
print ""
print "extern NCURSES_EXPORT(TERMINAL *) NCURSES_SP_NAME(set_curterm) (SCREEN*, TERMINAL *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(del_curterm) (SCREEN*, TERMINAL *);"
print ""
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(restartterm) (SCREEN*, NCURSES_CONST char *, int, int *);"
print "#endif /* NCURSES_SP_FUNCS */"
print ""
print "#ifdef __cplusplus"
print "}"
print "#endif"
print ""
print "#endif /* NCURSES_TERM_H_incl */"
}
$3 == "str" {
printf "#define %-30s CUR Strings[%d]\n", $1, StringCount++
}
END {
print "#endif /* __INTERNAL_CAPS_VISIBLE */"
print ""
print ""
print "/*"
print " * Predefined terminfo array sizes"
print " */"
printf "#define BOOLCOUNT %d\n", BoolCount
printf "#define NUMCOUNT %d\n", NumberCount
printf "#define STRCOUNT %d\n", StringCount
print ""
print "/* used by code for comparing entries */"
print "#define acs_chars_index ", acsindex
print ""
declare_termtype("short","");
print ""
print "/*"
print " * The only reason these structures are visible is for read-only use."
print " * Programs which modify the data are not, never were, portable across"
print " * curses implementations."
print " */"
print "#ifdef NCURSES_INTERNALS"
print ""
if (@NCURSES_EXT_COLORS@) {
declare_termtype("int","2");
} else {
print "typedef TERMTYPE TERMTYPE2;"
}
print ""
print "typedef struct term { /* describe an actual terminal */"
print " TERMTYPE type; /* terminal type description */"
print " short Filedes; /* file description being written to */"
print " TTY Ottyb; /* original state of the terminal */"
print " TTY Nttyb; /* current state of the terminal */"
print " int _baudrate; /* used to compute padding */"
print " char * _termname; /* used for termname() */"
if (@NCURSES_EXT_COLORS@) {
print " TERMTYPE2 type2; /* extended terminal type description */"
}
print "} TERMINAL;"
print "#else"
print "typedef struct term TERMINAL;"
print "#endif /* NCURSES_INTERNALS */"
print ""
print ""
print "#if @BROKEN_LINKER@ && !@cf_cv_enable_reentrant@"
print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
print "#elif @cf_cv_enable_reentrant@"
print "NCURSES_WRAPPED_VAR(TERMINAL *, cur_term);"
print "#define cur_term NCURSES_PUBLIC_VAR(cur_term())"
print "#else"
print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
print "#endif"
print ""
print "#if @BROKEN_LINKER@ || @cf_cv_enable_reentrant@"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolnames);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolcodes);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes);"
print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames);"
print ""
print "#define boolnames NCURSES_PUBLIC_VAR(boolnames())"
print "#define boolcodes NCURSES_PUBLIC_VAR(boolcodes())"
print "#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())"
print "#define numnames NCURSES_PUBLIC_VAR(numnames())"
print "#define numcodes NCURSES_PUBLIC_VAR(numcodes())"
print "#define numfnames NCURSES_PUBLIC_VAR(numfnames())"
print "#define strnames NCURSES_PUBLIC_VAR(strnames())"
print "#define strcodes NCURSES_PUBLIC_VAR(strcodes())"
print "#define strfnames NCURSES_PUBLIC_VAR(strfnames())"
print ""
print "#else"
print ""
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];"
print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];"
print ""
print "#endif"
print ""
print "/*"
print " * These entrypoints are used only by the ncurses utilities such as tic."
print " */"
print "#ifdef NCURSES_INTERNALS"
print ""
print "extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf);"
print "extern NCURSES_EXPORT(int) _nc_read_entry2 (const char * const, char * const, TERMTYPE2 *const);"
print "extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE2 *);"
print "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE2 *, char *, int);"
print "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);"
print "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);"
print ""
print "#endif /* NCURSES_INTERNALS */"
print ""
print ""
print "/*"
print " * These entrypoints are used by tack 1.07."
print " */"
print "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);"
print "extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);"
print ""
print "/*"
print " * Normal entry points"
print " */"
print "extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *);"
print "extern NCURSES_EXPORT(int) del_curterm (TERMINAL *);"
print ""
print "/* miscellaneous entry points */"
print "extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *);"
print "extern NCURSES_EXPORT(int) setupterm (const char *,int,int *);"
print ""
print "/* terminfo entry points, also declared in curses.h */"
print "#if !defined(__NCURSES_H)"
print "extern NCURSES_EXPORT(char *) tigetstr (const char *);"
print "extern NCURSES_EXPORT_VAR(char) ttytype[];"
print "extern NCURSES_EXPORT(int) putp (const char *);"
print "extern NCURSES_EXPORT(int) tigetflag (const char *);"
print "extern NCURSES_EXPORT(int) tigetnum (const char *);"
print ""
print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */"
print "extern NCURSES_EXPORT(char *) tparm (const char *, ...); /* special */"
print "#else"
print "extern NCURSES_EXPORT(char *) tparm (const char *, long,long,long,long,long,long,long,long,long); /* special */"
print "extern NCURSES_EXPORT(char *) tparm_varargs (const char *, ...); /* special */"
print "#endif"
print ""
print "extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */"
print ""
print "#endif /* __NCURSES_H */"
print ""
print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
print "#if !defined(NCURSES_TERMCAP_H_incl)"
print "extern NCURSES_EXPORT(char *) tgetstr (const char *, char **);"
print "extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);"
print "extern NCURSES_EXPORT(int) tgetent (char *, const char *);"
print "extern NCURSES_EXPORT(int) tgetflag (const char *);"
print "extern NCURSES_EXPORT(int) tgetnum (const char *);"
print "extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));"
print "#endif /* NCURSES_TERMCAP_H_incl */"
print ""
print "/*"
print " * Include curses.h before term.h to enable these extensions."
print " */"
print "#if defined(NCURSES_SP_FUNCS) && (NCURSES_SP_FUNCS != 0)"
print ""
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tigetstr) (SCREEN*, const char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(putp) (SCREEN*, const char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetflag) (SCREEN*, const char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetnum) (SCREEN*, const char *);"
print ""
print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, const char *, ...); /* special */"
print "#else"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, const char *, long,long,long,long,long,long,long,long,long); /* special */"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm_varargs) (SCREEN*, const char *, ...); /* special */"
print "#endif"
print ""
print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgetstr) (SCREEN*, const char *, char **);"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgoto) (SCREEN*, const char *, int, int);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetent) (SCREEN*, char *, const char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetflag) (SCREEN*, const char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetnum) (SCREEN*, const char *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tputs) (SCREEN*, const char *, int, NCURSES_SP_OUTC);"
print ""
print "extern NCURSES_EXPORT(TERMINAL *) NCURSES_SP_NAME(set_curterm) (SCREEN*, TERMINAL *);"
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(del_curterm) (SCREEN*, TERMINAL *);"
print ""
print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(restartterm) (SCREEN*, NCURSES_CONST char *, int, int *);"
print "#endif /* NCURSES_SP_FUNCS */"
print ""
print "/*"
print " * Debugging features."
print " */"
print "extern NCURSES_EXPORT(void) exit_terminfo(int) GCC_NORETURN;"
print ""
print "#ifdef __cplusplus"
printf "%s\n", rcurl;
print "#endif"
print ""
print "#endif /* NCURSES_TERM_H_incl */"
}

View File

@ -1,6 +1,6 @@
# $Id: Makefile.in,v 1.41 2013/08/03 23:10:51 tom Exp $
# $Id: Makefile.in,v 1.45 2019/03/03 01:41:21 tom Exp $
##############################################################################
# Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. #
# Copyright (c) 1998-2015,2019 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"), #
@ -39,7 +39,7 @@
# turn off _all_ suffix rules; we'll generate our own
.SUFFIXES:
SHELL = /bin/sh
SHELL = @SHELL@
VPATH = @srcdir@
THIS = Makefile
@ -66,6 +66,8 @@ VERSION = @cf_cv_rel_version@
# The "Caps" file specifies the terminfo database format, as well as the list
# of function keys.
TERMINFO_CAPS = $(srcdir)/@TERMINFO_CAPS@
CAPLIST = $(TERMINFO_CAPS) \
$(srcdir)/Caps-ncurses
# These files are generated by the configure script
CONFIG_SRC = \
@ -91,27 +93,30 @@ depend \
sources \
install :: $(AUTO_SRC)
curses.h : $(TERMINFO_CAPS) \
curses.h : $(CAPLIST) \
curses.head \
$(srcdir)/curses.tail \
$(srcdir)/MKkey_defs.sh
cat curses.head >$@
AWK=$(AWK) sh $(srcdir)/MKkey_defs.sh $(TERMINFO_CAPS) >>$@
sh -c 'if test "@NCURSES_CH_T@" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi'
AWK=$(AWK) $(SHELL) $(srcdir)/MKkey_defs.sh $(CAPLIST) >>$@
$(SHELL) -c 'if test "@NCURSES_CH_T@" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi'
cat $(srcdir)/curses.tail >>$@
term.h: $(TERMINFO_CAPS) MKterm.h.awk
$(AWK) -f MKterm.h.awk $(TERMINFO_CAPS) > $@
sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@
term.h: $(CAPLIST) \
MKterm.h.awk
$(AWK) -f MKterm.h.awk $(CAPLIST) > $@
$(SHELL) $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@
hashsize.h: $(TERMINFO_CAPS) $(srcdir)/MKhashsize.sh
sh $(srcdir)/MKhashsize.sh $(TERMINFO_CAPS) >$@
hashsize.h: $(CAPLIST) \
$(srcdir)/MKhashsize.sh
$(SHELL) $(srcdir)/MKhashsize.sh $(CAPLIST) >$@
ncurses_def.h: $(srcdir)/ncurses_defs $(srcdir)/MKncurses_def.sh
AWK=$(AWK) sh $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@
AWK=$(AWK) $(SHELL) $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@
parametrized.h: $(TERMINFO_CAPS) $(srcdir)/MKparametrized.sh
AWK=$(AWK) sh $(srcdir)/MKparametrized.sh $(TERMINFO_CAPS) >$@
parametrized.h: $(CAPLIST) \
$(srcdir)/MKparametrized.sh
AWK=$(AWK) $(SHELL) $(srcdir)/MKparametrized.sh $(CAPLIST) >$@
# This is required by pthread.h on MinGW
config.h:
@ -128,6 +133,7 @@ mostlyclean ::
clean :: mostlyclean
-rm -f $(AUTO_SRC)
-rm -rf *.dSYM
distclean :: clean
-rm -f Makefile $(CONFIG_SRC) config.h

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* Copyright (c) 1998-2018,2019 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 *
@ -32,7 +32,7 @@
* and: Thomas E. Dickey 1996-on *
****************************************************************************/
/* $Id: curses.h.in,v 1.237 2014/02/01 22:08:12 tom Exp $ */
/* $Id: curses.h.in,v 1.264 2019/03/23 23:06:46 tom Exp $ */
#ifndef __NCURSES_H
#define __NCURSES_H
@ -59,6 +59,10 @@
*/
#include <ncurses_dll.h>
#if @HAVE_STDINT_H@
#include <stdint.h>
#endif
/*
* User-definable tweak to disable the include of <stdbool.h>.
*/
@ -70,12 +74,6 @@
* NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses
* configured using --disable-macros.
*/
#ifdef NCURSES_NOMACROS
#ifndef NCURSES_ATTR_T
#define NCURSES_ATTR_T attr_t
#endif
#endif /* NCURSES_NOMACROS */
#ifndef NCURSES_ATTR_T
#define NCURSES_ATTR_T int
#endif
@ -91,13 +89,13 @@
#define NCURSES_INLINE @NCURSES_INLINE@
/*
* The internal type used for color values, and for color-pairs. The latter
* The standard type used for color values, and for color-pairs. The latter
* allows the curses library to enumerate the combinations of foreground and
* background colors used by an application, and is normally the product of the
* total foreground and background colors.
*
* X/Open uses "short" for both of these types, ultimately because they are
* numbers from the terminal database, which uses 16-bit signed values.
* numbers from the SVr4 terminal database, which uses 16-bit signed values.
*/
#undef NCURSES_COLOR_T
#define NCURSES_COLOR_T short
@ -106,10 +104,22 @@
#define NCURSES_PAIRS_T short
/*
* Definition used to make WINDOW and similar structs opaque.
* Definitions used to make WINDOW and similar structs opaque.
*/
#ifndef @cf_cv_enable_opaque@
#define NCURSES_OPAQUE @NCURSES_OPAQUE@
#ifndef NCURSES_INTERNALS
#define NCURSES_OPAQUE @NCURSES_OPAQUE@
#define NCURSES_OPAQUE_FORM @NCURSES_OPAQUE_FORM@
#define NCURSES_OPAQUE_MENU @NCURSES_OPAQUE_MENU@
#define NCURSES_OPAQUE_PANEL @NCURSES_OPAQUE_PANEL@
#endif
/*
* Definition used to optionally suppress wattr* macros to help with the
* transition from ncurses5 to ncurses6 by allowing the header files to
* be shared across development packages for ncursesw in both ABIs.
*/
#ifndef NCURSES_WATTR_MACROS
#define NCURSES_WATTR_MACROS @NCURSES_WATTR_MACROS@
#endif
/*
@ -144,6 +154,13 @@
#undef NCURSES_TPARM_ARG
#define NCURSES_TPARM_ARG @NCURSES_TPARM_ARG@
/*
* Control whether ncurses uses wcwidth() for checking width of line-drawing
* characters.
*/
#undef NCURSES_WCWIDTH_GRAPHICS
#define NCURSES_WCWIDTH_GRAPHICS @NCURSES_WCWIDTH_GRAPHICS@
/*
* NCURSES_CH_T is used in building the library, but not used otherwise in
* this header file, since that would make the normal/wide-character versions
@ -156,8 +173,8 @@
typedef unsigned chtype;
typedef unsigned mmask_t;
#else
typedef unsigned @cf_cv_typeof_chtype@ chtype;
typedef unsigned @cf_cv_typeof_mmask_t@ mmask_t;
typedef @cf_cv_typeof_chtype@ chtype;
typedef @cf_cv_typeof_mmask_t@ mmask_t;
#endif
/*
@ -231,6 +248,8 @@ extern "C" {
#define NCURSES_CAST(type,value) (type)(value)
#endif
#define NCURSES_OK_ADDR(p) (0 != NCURSES_CAST(const void *, (p)))
/*
* X/Open attributes. In the ncurses implementation, they are identical to the
* A_ attributes.
@ -561,6 +580,13 @@ extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *)
#define GCC_UNUSED /* nothing */
#endif
#undef GCC_DEPRECATED
#if (__GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2))
#define GCC_DEPRECATED(msg) __attribute__((deprecated))
#else
#define GCC_DEPRECATED(msg) /* nothing */
#endif
/*
* Curses uses a helper function. Define our type for this to simplify
* extending it for the sp-funcs feature.
@ -682,7 +708,7 @@ extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */
extern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */
extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */
GCC_PRINTFLIKE(3,4);
extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...) /* implemented */
extern NCURSES_EXPORT(int) mvscanw (int,int, const char *,...) /* implemented */
GCC_SCANFLIKE(3,4);
extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int); /* generated */
extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */
@ -707,13 +733,13 @@ extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* gene
extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */
extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */
GCC_PRINTFLIKE(4,5);
extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...) /* implemented */
extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, const char *,...) /* implemented */
GCC_SCANFLIKE(4,5);
extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int); /* generated */
extern NCURSES_EXPORT(int) napms (int); /* implemented */
extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */
extern NCURSES_EXPORT(SCREEN *) newterm (NCURSES_CONST char *,FILE *,FILE *); /* implemented */
extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */
extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */
extern NCURSES_EXPORT(SCREEN *) newterm (const char *,FILE *,FILE *); /* implemented */
extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */
extern NCURSES_EXPORT(int) nl (void); /* implemented */
extern NCURSES_EXPORT(int) nocbreak (void); /* implemented */
extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool); /* implemented */
@ -741,7 +767,7 @@ extern NCURSES_EXPORT(int) reset_prog_mode (void); /* implemented */
extern NCURSES_EXPORT(int) reset_shell_mode (void); /* implemented */
extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int)); /* implemented */
extern NCURSES_EXPORT(int) savetty (void); /* implemented */
extern NCURSES_EXPORT(int) scanw (NCURSES_CONST char *,...) /* implemented */
extern NCURSES_EXPORT(int) scanw (const char *,...) /* implemented */
GCC_SCANFLIKE(1,2);
extern NCURSES_EXPORT(int) scr_dump (const char *); /* implemented */
extern NCURSES_EXPORT(int) scr_init (const char *); /* implemented */
@ -767,7 +793,7 @@ extern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */
extern NCURSES_EXPORT(int) slk_refresh (void); /* implemented */
extern NCURSES_EXPORT(int) slk_restore (void); /* implemented */
extern NCURSES_EXPORT(int) slk_set (int,const char *,int); /* implemented */
extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */
extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */
extern NCURSES_EXPORT(int) standout (void); /* generated */
extern NCURSES_EXPORT(int) standend (void); /* generated */
extern NCURSES_EXPORT(int) start_color (void); /* implemented */
@ -787,10 +813,10 @@ extern NCURSES_EXPORT(void) use_tioctl (bool); /* implemented */
extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */
extern NCURSES_EXPORT(int) vidputs (chtype, NCURSES_OUTC); /* implemented */
extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */
extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list); /* implemented */
extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* generated */
extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */
extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list); /* generated */
extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list) GCC_DEPRECATED(use vw_printw); /* implemented */
extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* implemented */
extern NCURSES_EXPORT(int) vwscanw (WINDOW *, const char *,va_list) GCC_DEPRECATED(use vw_scanw); /* implemented */
extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, const char *,va_list); /* implemented */
extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */
extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */
extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */
@ -836,7 +862,7 @@ extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented
GCC_PRINTFLIKE(2,3);
extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */
extern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */
extern NCURSES_EXPORT(int) wscanw (WINDOW *, NCURSES_CONST char *,...) /* implemented */
extern NCURSES_EXPORT(int) wscanw (WINDOW *, const char *,...) /* implemented */
GCC_SCANFLIKE(2,3);
extern NCURSES_EXPORT(int) wscrl (WINDOW *,int); /* implemented */
extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int); /* implemented */
@ -851,16 +877,16 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
/*
* These are also declared in <term.h>:
*/
extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); /* implemented */
extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); /* implemented */
extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); /* implemented */
extern NCURSES_EXPORT(int) tigetflag (const char *); /* implemented */
extern NCURSES_EXPORT(int) tigetnum (const char *); /* implemented */
extern NCURSES_EXPORT(char *) tigetstr (const char *); /* implemented */
extern NCURSES_EXPORT(int) putp (const char *); /* implemented */
#if NCURSES_TPARM_VARARGS
extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */
extern NCURSES_EXPORT(char *) tparm (const char *, ...); /* special */
#else
extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG); /* special */
extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */
extern NCURSES_EXPORT(char *) tparm (const char *, NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG); /* special */
extern NCURSES_EXPORT(char *) tparm_varargs (const char *, ...); /* special */
#endif
extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */
@ -896,11 +922,20 @@ typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
extern NCURSES_EXPORT(bool) is_term_resized (int, int);
extern NCURSES_EXPORT(char *) keybound (int, int);
extern NCURSES_EXPORT(const char *) curses_version (void);
extern NCURSES_EXPORT(int) alloc_pair (int, int);
extern NCURSES_EXPORT(int) assume_default_colors (int, int);
extern NCURSES_EXPORT(int) define_key (const char *, int);
extern NCURSES_EXPORT(int) extended_color_content(int, int *, int *, int *);
extern NCURSES_EXPORT(int) extended_pair_content(int, int *, int *);
extern NCURSES_EXPORT(int) extended_slk_color(int);
extern NCURSES_EXPORT(int) find_pair (int, int);
extern NCURSES_EXPORT(int) free_pair (int);
extern NCURSES_EXPORT(int) get_escdelay (void);
extern NCURSES_EXPORT(int) init_extended_color(int, int, int, int);
extern NCURSES_EXPORT(int) init_extended_pair(int, int, int);
extern NCURSES_EXPORT(int) key_defined (const char *);
extern NCURSES_EXPORT(int) keyok (int, bool);
extern NCURSES_EXPORT(void) reset_color_pairs (void);
extern NCURSES_EXPORT(int) resize_term (int, int);
extern NCURSES_EXPORT(int) resizeterm (int, int);
extern NCURSES_EXPORT(int) set_escdelay (int);
@ -930,6 +965,7 @@ extern NCURSES_EXPORT(bool) is_pad (const WINDOW *); /* @GENERATED_EXT_FUNCS@ *
extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT(bool) is_subwin (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT(int) wgetdelay (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */
extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* @GENERATED_EXT_FUNCS@ */
#else
@ -982,7 +1018,7 @@ extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(longname) (SCREEN*); /* implemente
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mvcur) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(napms) (SCREEN*, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (SCREEN*, int, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, NCURSES_CONST char *, FILE *, FILE *); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, const char *, FILE *, FILE *); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newwin) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nl) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nocbreak) (SCREEN*); /* implemented:SP_FUNC */
@ -1026,13 +1062,22 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidattr) (SCREEN*, chtype); /* implem
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidputs) (SCREEN*, chtype, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
#if @NCURSES_EXT_FUNCS@
extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(alloc_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(assume_default_colors) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(define_key) (SCREEN*, const char *, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_color_content) (SCREEN*, int, int *, int *, int *); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_pair_content) (SCREEN*, int, int *, int *); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_slk_color) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(find_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(free_pair) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_color) (SCREEN*, int, int, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_pair) (SCREEN*, int, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(is_term_resized) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */ /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(reset_color_pairs) (SCREEN*); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resize_term) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resizeterm) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
@ -1086,7 +1131,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
* These pseudo functions are always implemented as macros:
*/
#define getyx(win,y,x) (y = getcury(win), x = getcurx(win))
#define getyx(win,y,x) (y = getcury(win), x = getcurx(win))
#define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win))
#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win))
#define getparyx(win,y,x) (y = getpary(win), x = getparx(win))
@ -1129,36 +1174,40 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
/* It seems older SYSV curses versions define these */
#if !NCURSES_OPAQUE
#define getattrs(win) NCURSES_CAST(int, (win) ? (win)->_attrs : A_NORMAL)
#define getcurx(win) ((win) ? (win)->_curx : ERR)
#define getcury(win) ((win) ? (win)->_cury : ERR)
#define getbegx(win) ((win) ? (win)->_begx : ERR)
#define getbegy(win) ((win) ? (win)->_begy : ERR)
#define getmaxx(win) ((win) ? ((win)->_maxx + 1) : ERR)
#define getmaxy(win) ((win) ? ((win)->_maxy + 1) : ERR)
#define getparx(win) ((win) ? (win)->_parx : ERR)
#define getpary(win) ((win) ? (win)->_pary : ERR)
#define getattrs(win) NCURSES_CAST(int, NCURSES_OK_ADDR(win) ? (win)->_attrs : A_NORMAL)
#define getcurx(win) (NCURSES_OK_ADDR(win) ? (win)->_curx : ERR)
#define getcury(win) (NCURSES_OK_ADDR(win) ? (win)->_cury : ERR)
#define getbegx(win) (NCURSES_OK_ADDR(win) ? (win)->_begx : ERR)
#define getbegy(win) (NCURSES_OK_ADDR(win) ? (win)->_begy : ERR)
#define getmaxx(win) (NCURSES_OK_ADDR(win) ? ((win)->_maxx + 1) : ERR)
#define getmaxy(win) (NCURSES_OK_ADDR(win) ? ((win)->_maxy + 1) : ERR)
#define getparx(win) (NCURSES_OK_ADDR(win) ? (win)->_parx : ERR)
#define getpary(win) (NCURSES_OK_ADDR(win) ? (win)->_pary : ERR)
#endif /* NCURSES_OPAQUE */
#define wstandout(win) (wattrset(win,A_STANDOUT))
#define wstandend(win) (wattrset(win,A_NORMAL))
#define wstandout(win) (wattrset(win,A_STANDOUT))
#define wstandend(win) (wattrset(win,A_NORMAL))
#define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL)
#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL)
#if !NCURSES_OPAQUE
#if NCURSES_WATTR_MACROS
#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@
#define wattrset(win,at) ((win) \
? ((win)->_color = PAIR_NUMBER(at), \
(win)->_attrs = NCURSES_CAST(attr_t, at), \
OK) \
: ERR)
#define wattrset(win,at) \
(NCURSES_OK_ADDR(win) \
? ((win)->_color = NCURSES_CAST(int, PAIR_NUMBER(at)), \
(win)->_attrs = NCURSES_CAST(attr_t, at), \
OK) \
: ERR)
#else
#define wattrset(win,at) ((win) \
? ((win)->_attrs = NCURSES_CAST(attr_t, at), \
OK) \
: ERR)
#define wattrset(win,at) \
(NCURSES_OK_ADDR(win) \
? ((win)->_attrs = NCURSES_CAST(attr_t, at), \
OK) \
: ERR)
#endif
#endif /* NCURSES_WATTR_MACROS */
#endif /* NCURSES_OPAQUE */
#define scroll(win) wscrl(win,1)
@ -1177,7 +1226,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
#define winsstr(w, s) winsnstr(w, s, -1)
#if !NCURSES_OPAQUE
#define redrawwin(win) wredrawln(win, 0, ((win) ? (win)->_maxy+1 : -1))
#define redrawwin(win) wredrawln(win, 0, (NCURSES_OK_ADDR(win) ? (win)->_maxy+1 : -1))
#endif /* NCURSES_OPAQUE */
#define waddstr(win,str) waddnstr(win,str,-1)
@ -1186,7 +1235,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
/*
* These apply to the first 256 color pairs.
*/
#define COLOR_PAIR(n) NCURSES_BITS((n), 0)
#define COLOR_PAIR(n) (NCURSES_BITS((n), 0) & A_COLOR)
#define PAIR_NUMBER(a) (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,(a)) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
/*
@ -1198,13 +1247,13 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
#define addchstr(str) waddchstr(stdscr,(str))
#define addnstr(str,n) waddnstr(stdscr,(str),(n))
#define addstr(str) waddnstr(stdscr,(str),-1)
#define attroff(at) wattroff(stdscr,(at))
#define attron(at) wattron(stdscr,(at))
#define attrset(at) wattrset(stdscr,(at))
#define attr_get(ap,cp,o) wattr_get(stdscr,(ap),(cp),(o))
#define attr_off(a,o) wattr_off(stdscr,(a),(o))
#define attr_on(a,o) wattr_on(stdscr,(a),(o))
#define attr_set(a,c,o) wattr_set(stdscr,(a),(c),(o))
#define attroff(at) wattroff(stdscr,(at))
#define attron(at) wattron(stdscr,(at))
#define attrset(at) wattrset(stdscr,(at))
#define bkgd(ch) wbkgd(stdscr,(ch))
#define bkgdset(ch) wbkgdset(stdscr,(ch))
#define chgat(n,a,c,o) wchgat(stdscr,(n),(a),(c),(o))
@ -1247,8 +1296,8 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
#define mvwaddchstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),-1))
#define mvwaddnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),(n)))
#define mvwaddstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),-1))
#define mvwdelch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wdelch(win))
#define mvwchgat(win,y,x,n,a,c,o) (wmove((win),(y),(x)) == ERR ? ERR : wchgat((win),(n),(a),(c),(o)))
#define mvwdelch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wdelch(win))
#define mvwgetch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wgetch(win))
#define mvwgetnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : wgetnstr((win),(str),(n)))
#define mvwgetstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : wgetstr((win),(str)))
@ -1288,31 +1337,53 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
* Some wide-character functions can be implemented without the extensions.
*/
#if !NCURSES_OPAQUE
#define getbkgd(win) ((win) ? ((win)->_bkgd) : 0)
#define getbkgd(win) (NCURSES_OK_ADDR(win) ? ((win)->_bkgd) : 0)
#endif /* NCURSES_OPAQUE */
#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a))
#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a))
#if !NCURSES_OPAQUE
#if NCURSES_WATTR_MACROS
#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@
#define wattr_set(win,a,p,opts) (((win) \
? ((win)->_attrs = ((a) & ~A_COLOR), \
(win)->_color = (p)) \
: OK), \
OK)
#define wattr_get(win,a,p,opts) ((void)(((a) != (void *)0) ? (*(a) = (win) ? (win)->_attrs : 0) : OK), \
(void)(((p) != (void *)0) ? (*(p) = (NCURSES_PAIRS_T) ((win) ? (win)->_color : 0)) : OK), \
OK)
#else
#define wattr_set(win,a,p,opts) (((win) \
? ((win)->_attrs = (((a) & ~A_COLOR) | (attr_t)COLOR_PAIR(p))) \
: OK), \
OK)
#define wattr_get(win,a,p,opts) ((void)(((a) != (void *)0) ? (*(a) = (win) ? (win)->_attrs : 0) : OK), \
(void)(((p) != (void *)0) ? (*(p) = (NCURSES_PAIRS_T) ((win) ? PAIR_NUMBER((win)->_attrs) : 0)) : OK), \
OK)
#endif
#define wattr_set(win,a,p,opts) \
(NCURSES_OK_ADDR(win) \
? ((void)((win)->_attrs = ((a) & ~A_COLOR), \
(win)->_color = (opts) ? *(int *)(opts) : (p)), \
OK) \
: ERR)
#define wattr_get(win,a,p,opts) \
(NCURSES_OK_ADDR(win) \
? ((void)(NCURSES_OK_ADDR(a) \
? (*(a) = (win)->_attrs) \
: OK), \
(void)(NCURSES_OK_ADDR(p) \
? (*(p) = (NCURSES_PAIRS_T) (win)->_color) \
: OK), \
(void)(NCURSES_OK_ADDR(opts) \
? (*(int *)(opts) = (win)->_color) \
: OK), \
OK) \
: ERR)
#else /* !(NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
#define wattr_set(win,a,p,opts) \
(NCURSES_OK_ADDR(win) \
? ((void)((win)->_attrs = (((a) & ~A_COLOR) | \
(attr_t)COLOR_PAIR(p))), \
OK) \
: ERR)
#define wattr_get(win,a,p,opts) \
(NCURSES_OK_ADDR(win) \
? ((void)(NCURSES_OK_ADDR(a) \
? (*(a) = (win)->_attrs) \
: OK), \
(void)(NCURSES_OK_ADDR(p) \
? (*(p) = (NCURSES_PAIRS_T) PAIR_NUMBER((win)->_attrs)) \
: OK), \
OK) \
: ERR)
#endif /* (NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */
#endif /* NCURSES_WATTR_MACROS */
#endif /* NCURSES_OPAQUE */
/*
@ -1321,8 +1392,8 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
* use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already
* use stdarg.h, so...
*/
#define vw_printw vwprintw
#define vw_scanw vwscanw
/* define vw_printw vwprintw */
/* define vw_scanw vwscanw */
/*
* Export fallback function for use in C++ binding.
@ -1337,23 +1408,30 @@ NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list);
*/
#if @NCURSES_EXT_FUNCS@
#if !NCURSES_OPAQUE
#define is_cleared(win) ((win) ? (win)->_clear : FALSE)
#define is_idcok(win) ((win) ? (win)->_idcok : FALSE)
#define is_idlok(win) ((win) ? (win)->_idlok : FALSE)
#define is_immedok(win) ((win) ? (win)->_immed : FALSE)
#define is_keypad(win) ((win) ? (win)->_use_keypad : FALSE)
#define is_leaveok(win) ((win) ? (win)->_leaveok : FALSE)
#define is_nodelay(win) ((win) ? ((win)->_delay == 0) : FALSE)
#define is_notimeout(win) ((win) ? (win)->_notimeout : FALSE)
#define is_pad(win) ((win) ? ((win)->_flags & _ISPAD) != 0 : FALSE)
#define is_scrollok(win) ((win) ? (win)->_scroll : FALSE)
#define is_subwin(win) ((win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE)
#define is_syncok(win) ((win) ? (win)->_sync : FALSE)
#define wgetparent(win) ((win) ? (win)->_parent : 0)
#define wgetscrreg(win,t,b) ((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
#define is_cleared(win) (NCURSES_OK_ADDR(win) ? (win)->_clear : FALSE)
#define is_idcok(win) (NCURSES_OK_ADDR(win) ? (win)->_idcok : FALSE)
#define is_idlok(win) (NCURSES_OK_ADDR(win) ? (win)->_idlok : FALSE)
#define is_immedok(win) (NCURSES_OK_ADDR(win) ? (win)->_immed : FALSE)
#define is_keypad(win) (NCURSES_OK_ADDR(win) ? (win)->_use_keypad : FALSE)
#define is_leaveok(win) (NCURSES_OK_ADDR(win) ? (win)->_leaveok : FALSE)
#define is_nodelay(win) (NCURSES_OK_ADDR(win) ? ((win)->_delay == 0) : FALSE)
#define is_notimeout(win) (NCURSES_OK_ADDR(win) ? (win)->_notimeout : FALSE)
#define is_pad(win) (NCURSES_OK_ADDR(win) ? ((win)->_flags & _ISPAD) != 0 : FALSE)
#define is_scrollok(win) (NCURSES_OK_ADDR(win) ? (win)->_scroll : FALSE)
#define is_subwin(win) (NCURSES_OK_ADDR(win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE)
#define is_syncok(win) (NCURSES_OK_ADDR(win) ? (win)->_sync : FALSE)
#define wgetdelay(win) (NCURSES_OK_ADDR(win) ? (win)->_delay : 0)
#define wgetparent(win) (NCURSES_OK_ADDR(win) ? (win)->_parent : 0)
#define wgetscrreg(win,t,b) (NCURSES_OK_ADDR(win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR)
#endif
#endif
/*
* X/Open says this returns a bool; SVr4 also checked for out-of-range line.
* The macro provides compatibility:
*/
#define is_linetouched(w,l) ((!(w) || ((l) > getmaxy(w)) || ((l) < 0)) ? ERR : (is_linetouched)((w),(l)))
#endif /* NCURSES_NOMACROS */
/*

View File

@ -1,4 +1,4 @@
/* $Id: curses.tail,v 1.21 2011/10/29 20:03:22 tom Exp $ */
/* $Id: curses.tail,v 1.25 2019/12/14 22:28:39 tom Exp $ */
/*
* vile:cmode:
* This file is part of ncurses, designed to be appended after curses.h.in
@ -111,7 +111,9 @@ extern NCURSES_EXPORT(mmask_t) NCURSES_SP_NAME(mousemask) (SCREEN*, mmask_t, mma
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mouseinterval) (SCREEN*, int);
#endif
#ifndef NCURSES_NOMACROS
#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)
#endif
/* other non-XSI functions */
@ -126,10 +128,8 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mcprint) (SCREEN*, char *, int); /* d
/* Debugging : use with libncurses_g.a */
extern NCURSES_EXPORT(void) _tracef (const char *, ...) GCC_PRINTFLIKE(1,2);
extern NCURSES_EXPORT(void) _tracedump (const char *, WINDOW *);
extern NCURSES_EXPORT(char *) _traceattr (attr_t);
extern NCURSES_EXPORT(char *) _traceattr2 (int, chtype);
extern NCURSES_EXPORT(char *) _nc_tracebits (void);
extern NCURSES_EXPORT(char *) _tracechar (int);
extern NCURSES_EXPORT(char *) _tracechtype (chtype);
extern NCURSES_EXPORT(char *) _tracechtype2 (int, chtype);
@ -142,8 +142,8 @@ extern NCURSES_EXPORT(char *) _tracecchar_t2 (int, const cchar_t *);
#define _tracech_t _tracechtype
#define _tracech_t2 _tracechtype2
#endif
extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *);
extern NCURSES_EXPORT(void) trace (const unsigned int);
extern NCURSES_EXPORT(void) trace (const unsigned) GCC_DEPRECATED("use curses_trace");
extern NCURSES_EXPORT(unsigned) curses_trace (const unsigned);
/* trace masks */
#define TRACE_DISABLE 0x0000 /* turn off tracing */
@ -174,6 +174,8 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
#define OPTIMIZE_ALL 0xff /* enable all optimizations (dflt) */
#endif
extern NCURSES_EXPORT(void) exit_curses (int) GCC_NORETURN;
#include <unctrl.h>
#ifdef __cplusplus

View File

@ -1,4 +1,4 @@
/* $Id: curses.wide,v 1.46 2014/02/01 22:00:32 tom Exp $ */
/* $Id: curses.wide,v 1.50 2017/03/26 16:05:21 tom Exp $ */
/*
* vile:cmode:
* This file is part of ncurses, designed to be appended after curses.h.in
@ -204,7 +204,7 @@ extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *); /* implement
extern NCURSES_EXPORT(int) wget_wch (WINDOW *, wint_t *); /* implemented */
extern NCURSES_EXPORT(int) wget_wstr (WINDOW *, wint_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *,wint_t *, int); /* implemented */
extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *, wint_t *, int); /* implemented */
extern NCURSES_EXPORT(int) whline_set (WINDOW *, const cchar_t *, int); /* implemented */
extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *); /* implemented */
extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, cchar_t *, int); /* implemented */
@ -261,7 +261,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_puts) (SCREEN*, attr_t, NCURSES_P
#define wins_wstr(w,t) wins_nwstr((w),(t),-1)
#if !NCURSES_OPAQUE
#define wgetbkgrnd(win,wch) ((win) ? (*(wch) = (win)->_bkgrnd) : *(wch), OK)
#define wgetbkgrnd(win,wch) (NCURSES_OK_ADDR(wch) ? ((win) ? (*(wch) = (win)->_bkgrnd) : *(wch), OK) : ERR)
#endif
#define mvadd_wch(y,x,c) mvwadd_wch(stdscr,(y),(x),(c))

View File

@ -1,7 +1,7 @@
#!/bin/sh
# $Id: edit_cfg.sh,v 1.12 2001/12/23 00:52:40 tom Exp $
# $Id: edit_cfg.sh,v 1.13 2017/08/12 12:22:06 tom Exp $
##############################################################################
# Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. #
# Copyright (c) 2000,2001,2017 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"), #
@ -38,7 +38,7 @@
#
BAK=save$$
TMP=edit$$
trap "rm -f $BAK $TMP" 0 1 2 5 15
trap "rm -f $BAK $TMP" 0 1 2 3 15
for name in \
HAVE_TCGETATTR \
HAVE_TERMIOS_H \

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2006 Free Software Foundation, Inc. *
* Copyright (c) 2006-2014,2017 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 *
@ -31,19 +31,23 @@
****************************************************************************/
/*
* $Id: hashed_db.h,v 1.5 2006/08/19 15:58:34 tom Exp $
* $Id: hashed_db.h,v 1.8 2017/07/22 16:22:49 tom Exp $
*/
#ifndef HASHED_DB_H
#define HASHED_DB_H 1
#include <ncurses_cfg.h>
#include <curses.h>
#if USE_HASHED_DB
#define DB_DBM_HSEARCH 0 /* quiet gcc -Wundef with db6 */
#include <db.h>
#ifndef DBN_SUFFIX
#ifndef DBM_SUFFIX
#define DBM_SUFFIX ".db"
#endif

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* Copyright (c) 1998-2017,2019 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 *
@ -29,12 +29,15 @@
/****************************************************************************
* Author: Thomas E. Dickey 1996-on *
****************************************************************************/
/* $Id: nc_alloc.h,v 1.22 2013/01/26 21:56:51 tom Exp $ */
/* $Id: nc_alloc.h,v 1.24 2019/12/15 01:00:51 tom Exp $ */
#ifndef NC_ALLOC_included
#define NC_ALLOC_included 1
/* *INDENT-OFF* */
#include <ncurses_cfg.h>
#include <curses.h>
#ifdef __cplusplus
extern "C" {
#endif
@ -69,8 +72,9 @@ extern "C" {
#if HAVE_LIBDBMALLOC || HAVE_LIBDMALLOC || NO_LEAKS
#define HAVE_NC_FREEALL 1
struct termtype;
extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN;
extern NCURSES_EXPORT(void) _nc_free_tinfo(int) GCC_NORETURN;
extern NCURSES_EXPORT(void) _nc_free_tinfo(int) GCC_NORETURN GCC_DEPRECATED("use exit_terminfo");
#ifdef NCURSES_INTERNALS
extern NCURSES_EXPORT(void) _nc_free_tic(int) GCC_NORETURN;
extern NCURSES_EXPORT(void) _nc_free_tparm(void);
extern NCURSES_EXPORT(void) _nc_leaks_dump_entry(void);
@ -79,8 +83,13 @@ extern NCURSES_EXPORT(void) _nc_leaks_tic(void);
#if NCURSES_SP_FUNCS
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit)(SCREEN*, int) GCC_NORETURN;
#endif
extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN;
#define ExitProgram(code) _nc_free_and_exit(code)
#else /* !NCURSES_INTERNALS */
extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN GCC_DEPRECATED("use exit_curses");
#endif
#define ExitProgram(code) exit_curses(code)
#endif /* NO_LEAKS, etc */

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. *
* Copyright (c) 2008-2018,2019 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 *
@ -27,19 +27,19 @@
****************************************************************************/
/****************************************************************************
* Author: Thomas Dickey, 2008-on *
* *
* Author: Thomas Dickey, 2008-on *
****************************************************************************/
/* $Id: nc_mingw.h,v 1.3 2010/09/25 22:16:12 juergen Exp $ */
/* $Id: nc_mingw.h,v 1.6 2019/06/23 19:55:08 tom Exp $ */
#ifndef NC_MINGW_H
#define NC_MINGW_H 1
#ifdef _WIN32
#ifdef WINVER
# if WINVER < 0x0501
# error WINVER must at least be 0x0501
# endif
# endif
#else
# define WINVER 0x0501
#endif
@ -51,7 +51,7 @@
#undef gettimeofday
#define gettimeofday(tv,tz) _nc_gettimeofday(tv,tz)
#include <sys/time.h> /* for struct timeval */
#include <sys/time.h> /* for struct timeval */
extern int _nc_gettimeofday(struct timeval *, void *);
@ -63,7 +63,9 @@ extern int _nc_gettimeofday(struct timeval *, void *);
#define getlogin() "username"
#undef wcwidth
#define wcwidth(ucs) _nc_wcwidth(ucs)
#define wcwidth(ucs) _nc_wcwidth((wchar_t)(ucs))
extern int _nc_wcwidth(wchar_t);
#endif /* _WIN32 */
#endif /* NC_MINGW_H */

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
* Copyright (c) 1998-2009,2017 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 *
@ -32,7 +32,7 @@
****************************************************************************/
/*
* $Id: nc_panel.h,v 1.7 2009/07/04 18:20:02 tom Exp $
* $Id: nc_panel.h,v 1.9 2017/07/22 17:06:03 tom Exp $
*
* nc_panel.h
*
@ -43,6 +43,9 @@
#ifndef NC_PANEL_H
#define NC_PANEL_H 1
#include <ncurses_cfg.h>
#include <curses.h>
#ifdef __cplusplus
extern "C"
{

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2012,2013 Free Software Foundation, Inc. *
* Copyright (c) 2012-2013,2016 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 *
@ -35,8 +35,12 @@
#include <ncurses_cfg.h>
#if HAVE_BSD_STRING_H
#include <bsd/string.h>
#endif
/*
* $Id: nc_string.h,v 1.4 2013/12/15 01:09:19 tom Exp $
* $Id: nc_string.h,v 1.7 2016/09/10 19:57:15 tom Exp $
*
* String-hacks. Use these macros to stifle warnings on (presumably) correct
* uses of strcat, strcpy and sprintf.
@ -56,14 +60,18 @@
#if USE_STRING_HACKS && HAVE_STRLCAT
#define _nc_STRCAT(d,s,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,n))
#define _nc_STRNCAT(d,s,m,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,m))
#else
#define _nc_STRCAT(d,s,n) NCURSES_VOID strcat((d),(s))
#define _nc_STRNCAT(d,s,m,n) NCURSES_VOID strncat((d),(s),(n))
#endif
#if USE_STRING_HACKS && HAVE_STRLCPY
#define _nc_STRCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n))
#define _nc_STRNCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n))
#else
#define _nc_STRCPY(d,s,n) NCURSES_VOID strcpy((d),(s))
#define _nc_STRNCPY(d,s,n) NCURSES_VOID strncpy((d),(s),(n))
#endif
#if USE_STRING_HACKS && HAVE_SNPRINTF

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2011 Free Software Foundation, Inc. *
* Copyright (c) 2011-2017,2018 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 *
@ -30,11 +30,13 @@
* Author: Thomas E. Dickey 2011 *
****************************************************************************/
/* $Id: nc_termios.h,v 1.2 2011/06/25 20:44:05 tom Exp $ */
/* $Id: nc_termios.h,v 1.6 2018/06/24 00:06:37 tom Exp $ */
#ifndef NC_TERMIOS_included
#define NC_TERMIOS_included 1
#include <ncurses_cfg.h>
#if HAVE_TERMIOS_H && HAVE_TCGETATTR
#else /* !HAVE_TERMIOS_H */
@ -69,101 +71,91 @@
#else /* !HAVE_TERMIO_H */
#if __MINGW32__
#if _WIN32
/* c_cc chars */
#define VINTR 0
#define VQUIT 1
#define VERASE 2
#define VKILL 3
#define VEOF 4
#define VTIME 5
#define VMIN 6
/* lflag bits */
#define ISIG 0x0001
#define ICANON 0x0002
#define ECHO 0x0004
#define ECHOE 0x0008
#define ECHOK 0x0010
#define ECHONL 0x0020
#define NOFLSH 0x0040
#define IEXTEN 0x0100
/* c_iflag bits */
#define ISTRIP 0000040
#define INLCR 0000100
#define IGNCR 0000200
#define ICRNL 0000400
#define BRKINT 0000002
#define PARMRK 0000010
#define IXON 0002000
#define IGNBRK 0000001
#define IGNPAR 0000004
#define INPCK 0000020
#define IXOFF 0010000
#define VEOF 4
#define VERASE 5
#define VINTR 6
#define VKILL 7
#define VMIN 9
#define VQUIT 10
#define VTIME 16
/* c_oflag bits */
#define OPOST 0000001
/* iflag bits */
#define IGNBRK 0x00001
#define BRKINT 0x00002
#define IGNPAR 0x00004
#define INPCK 0x00010
#define ISTRIP 0x00020
#define INLCR 0x00040
#define IGNCR 0x00080
#define ICRNL 0x00100
#define IXON 0x00400
#define IXOFF 0x01000
#define PARMRK 0x10000
/* c_cflag bit meaning */
#define CBAUD 0010017
#define CSIZE 0000060
#define CS8 0000060
#define B0 0000000
#define B50 0000001
#define B75 0000002
#define B110 0000003
#define B134 0000004
#define B150 0000005
#define B200 0000006
#define B300 0000007
#define B600 0000010
#define B1200 0000011
#define B1800 0000012
#define B2400 0000013
#define B4800 0000014
#define B9600 0000015
#define CLOCAL 0004000
#define CREAD 0000200
#define CSTOPB 0000100
#define HUPCL 0002000
#define PARENB 0000400
#define PARODD 0001000
/* oflag bits */
#define OPOST 0x00001
/* c_lflag bits */
#define ECHO 0000010
#define ECHONL 0000100
#define ISIG 0000001
#define IEXTEN 0100000
#define ICANON 0000002
#define NOFLSH 0000200
#define ECHOE 0000020
#define ECHOK 0000040
/* cflag bits */
#define CBAUD 0x0100f
#define B0 0x00000
#define B50 0x00001
#define B75 0x00002
#define B110 0x00003
#define B134 0x00004
#define B150 0x00005
#define B200 0x00006
#define B300 0x00007
#define B600 0x00008
#define B1200 0x00009
#define B1800 0x0000a
#define B2400 0x0000b
#define B4800 0x0000c
#define B9600 0x0000d
/* tcflush() */
#define TCIFLUSH 0
#define CSIZE 0x00030
#define CS8 0x00030
#define CSTOPB 0x00040
#define CREAD 0x00080
#define PARENB 0x00100
#define PARODD 0x00200
#define HUPCL 0x00400
#define CLOCAL 0x00800
/* tcsetattr uses these */
#define TCSADRAIN 1
/* ioctls */
#define TCGETA 0x5405
#define TCFLSH 0x540B
#define TIOCGWINSZ 0x5413
#define TCIFLUSH 0
#define TCSADRAIN 3
#ifndef cfgetospeed
#define cfgetospeed(t) ((t)->c_cflag & CBAUD)
#endif
#ifndef tcsetattr
#define tcsetattr(fd, cmd, arg) _nc_mingw_ioctl(fd, cmd, arg)
#define tcsetattr(fd, opt, arg) _nc_mingw_tcsetattr(fd, opt, arg)
#endif
#ifndef tcgetattr
#define tcgetattr(fd, arg) _nc_mingw_ioctl(fd, TCGETA, arg)
#define tcgetattr(fd, arg) _nc_mingw_tcgetattr(fd, arg)
#endif
#ifndef tcflush
#define tcflush(fd, arg) _nc_mingw_ioctl(fd, TCFLSH, arg)
#define tcflush(fd, queue) _nc_mingw_tcflush(fd, queue)
#endif
#undef ttyname
#define ttyname(fd) NULL
#else
#endif /* __MINGW32__ */
#endif /* _WIN32 */
#endif /* HAVE_TERMIO_H */
#endif /* HAVE_TERMIOS_H */

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 2006-2010,2012 Free Software Foundation, Inc. *
* Copyright (c) 2006-2017,2018 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 *
@ -30,11 +30,14 @@
* Author: Thomas E. Dickey 2006 *
****************************************************************************/
/* $Id: nc_tparm.h,v 1.6 2012/02/18 21:34:42 tom Exp $ */
/* $Id: nc_tparm.h,v 1.9 2018/03/17 19:19:58 tom Exp $ */
#ifndef NC_TPARM_included
#define NC_TPARM_included 1
#include <ncurses_cfg.h>
#include <curses.h>
/*
* Cast parameters past the formatting-string for tparm() to match the
* assumption of the varargs code.
@ -70,7 +73,6 @@
#define TPARM_3(a,b,c,d) TPARM_4(a,b,c,d,0)
#define TPARM_2(a,b,c) TPARM_3(a,b,c,0)
#define TPARM_1(a,b) TPARM_2(a,b,0)
#define TPARM_1(a,b) TPARM_2(a,b,0)
#define TPARM_0(a) TPARM_1(a,0)
#endif

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. *
* Copyright (c) 1998-2016,2017 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 *
@ -27,10 +27,13 @@
****************************************************************************/
/****************************************************************************
* Author: Thomas E. Dickey <dickey@clark.net> 1997 *
* Author: Thomas E. Dickey 1997-on *
****************************************************************************/
/*
* $Id: ncurses_cfg.hin,v 1.7 2005/01/02 01:26:58 tom Exp $
* $Id: ncurses_cfg.hin,v 1.11 2017/12/09 20:41:54 tom Exp $
*
* Both ncurses_cfg.h and ncurses_def.h are internal header-files used when
* building ncurses.
*
* This is a template-file used to generate the "ncurses_cfg.h" file.
*
@ -40,7 +43,7 @@
*
* See:
* http://invisible-island.net/autoconf/
* ftp://invisible-island.net/autoconf/
* ftp://ftp.invisible-island.net/autoconf/
*/
#ifndef NC_CONFIG_H
#define NC_CONFIG_H
@ -52,11 +55,6 @@
#ifdef __cplusplus
#undef const
#undef inline
#else
#if defined(lint) || defined(TRACE)
#undef inline
#define inline /* nothing */
#endif
#endif
/* On HP-UX, the C compiler doesn't grok mbstate_t without
@ -69,4 +67,7 @@
#endif
#endif
/*
* vile:cmode
*/
#endif /* NC_CONFIG_H */

View File

@ -1,6 +1,6 @@
# $Id: ncurses_defs,v 1.62 2013/12/14 23:52:07 tom Exp $
# $Id: ncurses_defs,v 1.91 2019/06/23 15:19:43 tom Exp $
##############################################################################
# Copyright (c) 2000-2012,2013 Free Software Foundation, Inc. #
# Copyright (c) 2000-2018,2019 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"), #
@ -41,15 +41,26 @@ DECL_ERRNO
ETIP_NEEDS_MATH_H
GCC_NORETURN /* nothing */
GCC_UNUSED /* nothing */
HAVE_ALLOC_PAIR
HAVE_ASSUME_DEFAULT_COLORS
HAVE_BIG_CORE
HAVE_BSD_CGETENT
HAVE_BSD_SIGNAL_H
HAVE_BSD_STRING_H
HAVE_BTOWC
HAVE_BUILTIN_H
HAVE_CHGAT 1
HAVE_COLOR_CONTENT 1
HAVE_COLOR_SET 1
HAVE_CONSISTENT_GETENV
HAVE_COPYWIN 1
HAVE_CURSCR 1
HAVE_CURSES_DATA_TABSIZE 1
HAVE_CURSES_DATA_TTYTYPE 1
HAVE_DELSCREEN 1
HAVE_DERWIN 1
HAVE_DIRENT_H
HAVE_DUPWIN 1
HAVE_ERRNO
HAVE_FCNTL_H
HAVE_FILTER 1
@ -69,7 +80,9 @@ HAVE_GETWIN 1
HAVE_GPM_H
HAVE_GPP_BUILTIN_H
HAVE_GXX_BUILTIN_H
HAVE_HALFDELAY 1
HAVE_HAS_KEY
HAVE_INIT_EXTENDED_COLOR
HAVE_INTTYPES_H
HAVE_IOSTREAM
HAVE_ISASCII
@ -83,8 +96,10 @@ HAVE_LIBGPM
HAVE_LIBMENU
HAVE_LIBMPATROL
HAVE_LIBPANEL
HAVE_LIB_PCRE2
HAVE_LIMITS_H
HAVE_LINK
HAVE_LOCALECONV
HAVE_LOCALE_H
HAVE_LONG_FILE_NAMES
HAVE_MATH_H
@ -96,11 +111,16 @@ HAVE_MBSTOWCS
HAVE_MBTOWC
HAVE_MENU_H
HAVE_MKSTEMP
HAVE_MVDERWIN 1
HAVE_MVVLINE 1
HAVE_MVWIN 1
HAVE_MVWVLINE 1
HAVE_NANOSLEEP
HAVE_NC_ALLOC_H
HAVE_NEWPAD 1
HAVE_PANEL_H
HAVE_PCRE2_POSIX_H
HAVE_PCREPOSIX_H
HAVE_POLL
HAVE_POLL_H
HAVE_PURIFY
@ -111,8 +131,10 @@ HAVE_REGEXPR_H_FUNCS
HAVE_REGEXP_H_FUNCS
HAVE_REGEX_H_FUNCS
HAVE_REMOVE
HAVE_RESET_COLOR_PAIRS
HAVE_RESIZETERM
HAVE_RESIZE_TERM
HAVE_RESTARTTERM 1
HAVE_RIPOFFLINE 1
HAVE_SCR_DUMP 1
HAVE_SELECT
@ -134,6 +156,7 @@ HAVE_STRLCAT
HAVE_STRLCPY
HAVE_STRSTR
HAVE_SYMLINK
HAVE_SYSCONF
HAVE_SYS_BSDTYPES_H
HAVE_SYS_IOCTL_H
HAVE_SYS_PARAM_H
@ -147,6 +170,7 @@ HAVE_TCGETATTR
HAVE_TCGETPGRP
HAVE_TELL
HAVE_TERMATTRS 1
HAVE_TERMCAP_H 1
HAVE_TERMIOS_H
HAVE_TERMIO_H
HAVE_TERMNAME 1
@ -156,6 +180,8 @@ HAVE_TGETENT 1
HAVE_TIGETNUM 1
HAVE_TIGETSTR 1
HAVE_TIMES
HAVE_TPUTS_SP
HAVE_TSEARCH
HAVE_TTYENT_H
HAVE_TYPEAHEAD 1
HAVE_TYPEINFO
@ -165,26 +191,35 @@ HAVE_UNCTRL_H 1
HAVE_UNISTD_H
HAVE_UNLINK
HAVE_USE_DEFAULT_COLORS
HAVE_USE_ENV 1
HAVE_USE_EXTENDED_NAMES
HAVE_USE_SCREEN
HAVE_USE_WINDOW
HAVE_VFSCANF
HAVE_VIDPUTS 1
HAVE_VID_PUTS 1
HAVE_VSNPRINTF
HAVE_VSSCANF
HAVE_VW_PRINTW 1
HAVE_WCHGAT 1
HAVE_WCSRTOMBS
HAVE_WCSTOMBS
HAVE_WCTOB
HAVE_WCTOMB
HAVE_WCTYPE_H
HAVE_WINSDELLN 1
HAVE_WINSSTR 1
HAVE_WORKING_POLL
HAVE_WRESIZE
HAVE_WSYNCDOWN 1
HAVE__DOSCAN
HAVE__TRACEF
MIXEDCASE_FILENAMES
NCURSES_CHAR_EQ
NCURSES_EXPANDED
NCURSES_EXT_COLORS
NCURSES_EXT_FUNCS
NCURSES_EXT_PUTWIN
NCURSES_NO_PADDING
NCURSES_OSPEED_COMPAT
NCURSES_PATHSEP ':'
@ -201,6 +236,7 @@ TERMPATH "none"
TIME_WITH_SYS_TIME
TYPEOF_CHTYPE
USE_COLORFGBG
USE_FOPEN_BIN_R
USE_GETCAP
USE_GETCAP_CACHE
USE_HARD_TABS

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. *
* Copyright (c) 1998-2014,2018 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 *
@ -25,11 +25,41 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************/
/* $Id: ncurses_dll.h.in,v 1.8 2009/04/04 22:26:27 tom Exp $ */
/* $Id: ncurses_dll.h.in,v 1.11 2018/06/23 21:38:14 tom Exp $ */
#ifndef NCURSES_DLL_H_incl
#define NCURSES_DLL_H_incl 1
/*
* MinGW gcc (unlike MSYS2 and Cygwin) should define _WIN32 and possibly _WIN64.
*/
#if defined(__MINGW64__)
#ifndef _WIN64
#define _WIN64 1
#endif
#elif defined(__MINGW32__)
#ifndef _WIN32
#define _WIN32 1
#endif
/* 2014-08-02 workaround for broken MinGW compiler.
* Oddly, only TRACE is mapped to trace - the other -D's are okay.
* suggest TDM as an alternative.
*/
#if (__GNUC__ == 4) && (__GNUC_MINOR__ == 8)
#ifdef trace
#undef trace
#define TRACE
#endif
#endif /* broken compiler */
#endif /* MingW */
/*
* For reentrant code, we map the various global variables into SCREEN by
* using functions to access them.
@ -44,7 +74,7 @@
#undef NCURSES_DLL
#define NCURSES_STATIC
#if defined(__CYGWIN__) || defined(__MINGW32__)
#if defined(__CYGWIN__) || defined(_WIN32)
# if defined(NCURSES_DLL)
# if defined(NCURSES_STATIC)
# undef NCURSES_STATIC

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2008,2011 Free Software Foundation, Inc. *
* Copyright (c) 1998-2017,2018 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 *
@ -28,17 +28,16 @@
/****************************************************************************
* Author: Juergen Pfeifer, 2008-on *
* *
****************************************************************************/
/* $Id: ncurses_mingw.h,v 1.2 2011/06/25 20:51:00 tom Exp $ */
/* $Id: ncurses_mingw.h,v 1.5 2018/06/24 00:07:35 tom Exp $ */
/*
* This is a placeholder up to now and describes what needs to be implemented
* to support I/O to external terminals with ncurses on the Windows OS.
*/
#if __MINGW32__
#ifdef _WIN32
#ifndef _NC_MINGWH
#define _NC_MINGWH
@ -47,28 +46,36 @@
#undef TERMIOS
#define TERMIOS 1
#define InvalidHandle ((TERM_HANDLE)-1)
#define InvalidConsoleHandle(s) ((s)==InvalidHandle)
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
typedef unsigned int speed_t;
typedef unsigned short otcflag_t;
typedef unsigned char ospeed_t;
#define NCCS 32
#define NCCS 18
struct termios
{
tcflag_t c_iflag; /* input mode */
tcflag_t c_oflag; /* output mode */
tcflag_t c_cflag; /* control mode */
tcflag_t c_lflag; /* local mode */
cc_t c_line; /* line discipline */
cc_t c_cc[NCCS]; /* control characters */
speed_t c_ispeed; /* input speed */
speed_t c_ospeed; /* c_ospeed */
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
char c_line;
cc_t c_cc[NCCS];
speed_t c_ispeed;
speed_t c_ospeed;
};
extern int _nc_mingw_ioctl(int fd, long int request, struct termios* arg);
extern void _nc_set_term_driver(void* term);
extern NCURSES_EXPORT(int) _nc_mingw_tcsetattr(
int fd,
int optional_actions,
const struct termios* arg);
extern NCURSES_EXPORT(int) _nc_mingw_tcgetattr(
int fd,
struct termios* arg);
extern NCURSES_EXPORT(int) _nc_mingw_tcflush(
int fd,
int queue);
extern NCURSES_EXPORT(void) _nc_set_term_driver(void* term);
#endif /* _NC_MINGWH */
#endif /* __MINGW32__ */
#endif /* _WIN32 */

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* Copyright (c) 1998-2018,2019 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 *
@ -32,7 +32,7 @@
* and: Thomas E. Dickey 1998-on *
****************************************************************************/
/* $Id: term_entry.h,v 1.44 2013/05/25 20:13:38 tom Exp $ */
/* $Id: term_entry.h,v 1.58 2019/12/07 16:11:15 tom Exp $ */
/*
* term_entry.h -- interface to entry-manipulation code
@ -40,53 +40,18 @@
#ifndef NCURSES_TERM_ENTRY_H_incl
#define NCURSES_TERM_ENTRY_H_incl 1
/* *INDENT-OFF* */
#ifdef __cplusplus
extern "C" {
#endif
#include <curses.h>
#include <term.h>
/*
* see db_iterator.c - this enumeration lists the places searched for a
* terminal description and defines the order in which they are searched.
*/
typedef enum {
dbdTIC = 0, /* special, used by tic when writing entry */
#if NCURSES_USE_DATABASE
dbdEnvOnce, /* the $TERMINFO environment variable */
dbdHome, /* $HOME/.terminfo */
dbdEnvList, /* the $TERMINFO_DIRS environment variable */
dbdCfgList, /* the compiled-in TERMINFO_DIRS value */
dbdCfgOnce, /* the compiled-in TERMINFO value */
#endif
#if NCURSES_USE_TERMCAP
dbdEnvOnce2, /* the $TERMCAP environment variable */
dbdEnvList2, /* the $TERMPATH environment variable */
dbdCfgList2, /* the compiled-in TERMPATH */
#endif
dbdLAST
} DBDIRS;
#define MAX_USES 32
#define MAX_CROSSLINKS 16
typedef struct entry {
TERMTYPE tterm;
unsigned nuses;
struct {
char *name;
struct entry *link;
long line;
} uses[MAX_USES];
int ncrosslinks;
struct entry *crosslinks[MAX_CROSSLINKS];
long cstart, cend;
long startline;
struct entry *next;
struct entry *last;
} ENTRY;
/* *INDENT-OFF* */
/*
* These macros may be used by programs that know about TERMTYPE:
*/
#if NCURSES_XNAMES
#define NUM_BOOLEANS(tp) (tp)->num_Booleans
#define NUM_NUMBERS(tp) (tp)->num_Numbers
@ -106,15 +71,66 @@ extern "C" {
#define for_each_string(n,tp) for(n = 0; n < NUM_STRINGS(tp); n++)
#if NCURSES_XNAMES
#define for_each_ext_boolean(n,tp) for(n = BOOLCOUNT; n < NUM_BOOLEANS(tp); n++)
#define for_each_ext_number(n,tp) for(n = NUMCOUNT; n < NUM_NUMBERS(tp); n++)
#define for_each_ext_string(n,tp) for(n = STRCOUNT; n < NUM_STRINGS(tp); n++)
#define for_each_ext_boolean(n,tp) for(n = BOOLCOUNT; (int) n < (int) NUM_BOOLEANS(tp); n++)
#define for_each_ext_number(n,tp) for(n = NUMCOUNT; (int) n < (int) NUM_NUMBERS(tp); n++)
#define for_each_ext_string(n,tp) for(n = STRCOUNT; (int) n < (int) NUM_STRINGS(tp); n++)
#endif
#define ExtBoolname(tp,i,names) EXT_NAMES(tp, i, BOOLCOUNT, (i - (tp->num_Booleans - tp->ext_Booleans)), names)
#define ExtNumname(tp,i,names) EXT_NAMES(tp, i, NUMCOUNT, (i - (tp->num_Numbers - tp->ext_Numbers)) + tp->ext_Booleans, names)
#define ExtStrname(tp,i,names) EXT_NAMES(tp, i, STRCOUNT, (i - (tp->num_Strings - tp->ext_Strings)) + (tp->ext_Numbers + tp->ext_Booleans), names)
/*
* The remaining type-definitions and macros are used only internally by the
* ncurses utilities.
*/
#ifdef NCURSES_INTERNALS
/*
* see db_iterator.c - this enumeration lists the places searched for a
* terminal description and defines the order in which they are searched.
*/
typedef enum {
dbdTIC = 0, /* special, used by tic when writing entry */
#if NCURSES_USE_DATABASE
dbdEnvOnce, /* the $TERMINFO environment variable */
dbdHome, /* $HOME/.terminfo */
dbdEnvList, /* the $TERMINFO_DIRS environment variable */
dbdCfgList, /* the compiled-in TERMINFO_DIRS value */
dbdCfgOnce, /* the compiled-in TERMINFO value */
#endif
#if NCURSES_USE_TERMCAP
dbdEnvOnce2, /* the $TERMCAP environment variable */
dbdEnvList2, /* the $TERMPATH environment variable */
dbdCfgList2, /* the compiled-in TERMPATH */
#endif
dbdLAST
} DBDIRS;
#define MAX_USES 32
#define MAX_CROSSLINKS 16
typedef struct entry ENTRY;
typedef struct {
char *name;
ENTRY *link;
long line;
} ENTRY_USES;
struct entry {
TERMTYPE2 tterm;
unsigned nuses;
ENTRY_USES uses[MAX_USES];
int ncrosslinks;
ENTRY *crosslinks[MAX_CROSSLINKS];
long cstart;
long cend;
long startline;
ENTRY *next;
ENTRY *last;
};
extern NCURSES_EXPORT_VAR(ENTRY *) _nc_head;
extern NCURSES_EXPORT_VAR(ENTRY *) _nc_tail;
#define for_entry_list(qp) for (qp = _nc_head; qp; qp = qp->next)
@ -131,7 +147,10 @@ extern NCURSES_EXPORT_VAR(ENTRY *) _nc_tail;
#define PRESENT(s) (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING))
#define ANDMISSING(p,q) \
{if (PRESENT(p) && !PRESENT(q)) _nc_warning(#p " but no " #q);}
{ \
if (PRESENT(p) && !PRESENT(q)) \
_nc_warning(#p " but no " #q); \
}
#define PAIRED(p,q) \
{ \
@ -141,25 +160,25 @@ extern NCURSES_EXPORT_VAR(ENTRY *) _nc_tail;
_nc_warning(#p " but no " #q); \
}
/*
* These entrypoints are used only by the ncurses utilities such as tic.
*/
/* alloc_entry.c: elementary allocation code */
extern NCURSES_EXPORT(ENTRY *) _nc_copy_entry (ENTRY *oldp);
extern NCURSES_EXPORT(char *) _nc_save_str (const char *const);
extern NCURSES_EXPORT(void) _nc_init_entry (TERMTYPE *const);
extern NCURSES_EXPORT(void) _nc_merge_entry (TERMTYPE *const, TERMTYPE *const);
extern NCURSES_EXPORT(void) _nc_init_entry (ENTRY *const);
extern NCURSES_EXPORT(void) _nc_merge_entry (ENTRY *const, ENTRY *const);
extern NCURSES_EXPORT(void) _nc_wrap_entry (ENTRY *const, bool);
/* alloc_ttype.c: elementary allocation code */
extern NCURSES_EXPORT(void) _nc_align_termtype (TERMTYPE *, TERMTYPE *);
extern NCURSES_EXPORT(void) _nc_copy_termtype (TERMTYPE *, const TERMTYPE *);
extern NCURSES_EXPORT(void) _nc_align_termtype (TERMTYPE2 *, TERMTYPE2 *);
/* free_ttype.c: elementary allocation code */
extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *);
/* lib_acs.c */
extern NCURSES_EXPORT(void) _nc_init_acs (void); /* corresponds to traditional 'init_acs()' */
extern NCURSES_EXPORT(void) _nc_free_termtype2 (TERMTYPE2 *);
/* lib_termcap.c: trim sgr0 string for termcap users */
extern NCURSES_EXPORT(char *) _nc_trim_sgr0 (TERMTYPE *);
extern NCURSES_EXPORT(char *) _nc_trim_sgr0 (TERMTYPE2 *);
/* parse_entry.c: entry-parsing code */
#if NCURSES_XNAMES
@ -170,8 +189,9 @@ extern NCURSES_EXPORT(int) _nc_parse_entry (ENTRY *, int, bool);
extern NCURSES_EXPORT(int) _nc_capcmp (const char *, const char *);
/* write_entry.c: writing an entry to the file system */
extern NCURSES_EXPORT(void) _nc_set_writedir (char *);
extern NCURSES_EXPORT(void) _nc_write_entry (TERMTYPE *const);
extern NCURSES_EXPORT(void) _nc_set_writedir (const char *);
extern NCURSES_EXPORT(void) _nc_write_entry (TERMTYPE2 *const);
extern NCURSES_EXPORT(int) _nc_write_object (TERMTYPE2 *, char *, unsigned *, unsigned);
/* comp_parse.c: entry list handling */
extern NCURSES_EXPORT(void) _nc_read_entry_source (FILE*, char*, int, bool, bool (*)(ENTRY*));
@ -180,13 +200,37 @@ extern NCURSES_EXPORT(int) _nc_resolve_uses (bool); /* obs 20040705 */
extern NCURSES_EXPORT(int) _nc_resolve_uses2 (bool, bool);
extern NCURSES_EXPORT(void) _nc_free_entries (ENTRY *);
extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype)(TERMTYPE *); /* obs 20040705 */
extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype2)(TERMTYPE *, bool);
extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype2)(TERMTYPE2 *, bool);
/* trace_xnames.c */
extern NCURSES_EXPORT(void) _nc_trace_xnames (TERMTYPE *);
/* *INDENT-ON* */
#endif /* NCURSES_INTERNALS */
/*
* These entrypoints were used by tack before 1.08.
*/
#undef NCURSES_TACK_1_08
#ifdef NCURSES_INTERNALS
#define NCURSES_TACK_1_08 /* nothing */
#else
#define NCURSES_TACK_1_08 GCC_DEPRECATED("upgrade to tack 1.08")
#endif
/* alloc_ttype.c: elementary allocation code */
extern NCURSES_EXPORT(void) _nc_copy_termtype (TERMTYPE *, const TERMTYPE *) NCURSES_TACK_1_08;
/* lib_acs.c */
extern NCURSES_EXPORT(void) _nc_init_acs (void) NCURSES_TACK_1_08; /* corresponds to traditional 'init_acs()' */
/* free_ttype.c: elementary allocation code */
extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *) NCURSES_TACK_1_08;
#ifdef __cplusplus
}
#endif
#endif /* NCURSES_TERM_ENTRY_H_incl */
/* *INDENT-ON* */
#endif /* NCURSES_TERM_ENTRY_H_incl */

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998,2000 Free Software Foundation, Inc. *
* Copyright (c) 1998-2001,2018 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 *
@ -31,7 +31,7 @@
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
/* $Id: termcap.h.in,v 1.16 2001/03/24 21:53:27 tom Exp $ */
/* $Id: termcap.h.in,v 1.18 2018/04/07 20:46:20 tom Exp $ */
#ifndef NCURSES_TERMCAP_H_incl
#define NCURSES_TERMCAP_H_incl 1
@ -48,9 +48,6 @@ extern "C"
#include <sys/types.h>
#undef NCURSES_CONST
#define NCURSES_CONST @NCURSES_CONST@
#undef NCURSES_OSPEED
#define NCURSES_OSPEED @NCURSES_OSPEED@
@ -60,11 +57,11 @@ extern NCURSES_EXPORT_VAR(char *) BC;
extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed;
#if !defined(NCURSES_TERM_H_incl)
extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);
extern NCURSES_EXPORT(char *) tgetstr (const char *, char **);
extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);
extern NCURSES_EXPORT(int) tgetent (char *, const char *);
extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *);
extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *);
extern NCURSES_EXPORT(int) tgetflag (const char *);
extern NCURSES_EXPORT(int) tgetnum (const char *);
extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));
#endif

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* Copyright (c) 1998-2018,2019 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 *
@ -33,9 +33,8 @@
****************************************************************************/
/*
* $Id: tic.h,v 1.69 2012/03/17 18:22:10 tom Exp $
* tic.h - Global variables and structures for the terminfo
* compiler.
* $Id: tic.h,v 1.80 2019/12/07 16:05:22 tom Exp $
* tic.h - Global variables and structures for the terminfo compiler.
*/
#ifndef __TIC_H
@ -45,10 +44,12 @@
extern "C" {
#endif
#include <ncurses_cfg.h>
#include <curses.h> /* for the _tracef() prototype, ERR/OK, bool defs */
/*
** The format of compiled terminfo files is as follows:
** The format of SVr2 compiled terminfo files is as follows:
**
** Header (12 bytes), containing information given below
** Names Section, containing the names of the terminal
@ -64,6 +65,11 @@ extern "C" {
** String Table, containing the actual characters of the string
** capabilities.
**
** In the SVr2 format, "short" means signed 16-bit numbers, which is sometimes
** inconvenient. The numbers are signed, to provide for absent and canceled
** values. ncurses6.1 introduced an extension to this compiled format, by
** making the Number Section a list of signed 32-bit integers.
**
** NOTE that all short integers in the file are stored using VAX/PDP-style
** byte-order, i.e., least-significant byte first.
**
@ -76,6 +82,7 @@ extern "C" {
*/
#define MAGIC 0432 /* first two bytes of a compiled entry */
#define MAGIC2 01036 /* first two bytes of a compiled 32-bit entry */
#undef BYTE
#define BYTE(p,n) (unsigned char)((p)[n])
@ -84,14 +91,23 @@ extern "C" {
#define IS_NEG2(p) ((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377))
#define LOW_MSB(p) (BYTE(p,0) + 256*BYTE(p,1))
#define IS_TIC_MAGIC(p) (LOW_MSB(p) == MAGIC)
#define IS_TIC_MAGIC(p) (LOW_MSB(p) == MAGIC || LOW_MSB(p) == MAGIC2)
#define quick_prefix(s) (!strncmp((s), "b64:", (size_t)4) || !strncmp((s), "hex:", (size_t)4))
/*
* The "maximum" here is misleading; XSI guarantees minimum values, which a
* given implementation may exceed.
*/
#define MAX_NAME_SIZE 512 /* maximum legal name field size (XSI:127) */
#define MAX_ENTRY_SIZE 4096 /* maximum legal entry size */
#define MAX_ENTRY_SIZE1 4096 /* maximum legal entry size (SVr2) */
#define MAX_ENTRY_SIZE2 32768 /* maximum legal entry size (ncurses6.1) */
#if NCURSES_EXT_COLORS && HAVE_INIT_EXTENDED_COLOR
#define MAX_ENTRY_SIZE MAX_ENTRY_SIZE2
#else
#define MAX_ENTRY_SIZE MAX_ENTRY_SIZE1
#endif
/*
* The maximum size of individual name or alias is guaranteed in XSI to be at
@ -118,7 +134,8 @@ extern "C" {
#define DEBUG_LEVEL(n) ((n) << TRACE_SHIFT)
#define set_trace_level(n) \
_nc_tracing &= DEBUG_LEVEL(MAX_DEBUG_LEVEL), \
_nc_tracing &= DEBUG_LEVEL(MAX_DEBUG_LEVEL) \
+ DEBUG_LEVEL(MAX_DEBUG_LEVEL) - 1, \
_nc_tracing |= DEBUG_LEVEL(n)
#ifdef TRACE
@ -127,11 +144,6 @@ extern "C" {
#define DEBUG(n, a) /*nothing*/
#endif
extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
extern NCURSES_EXPORT(void) _nc_tracef (char *, ...) GCC_PRINTFLIKE(1,2);
extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
/*
* These are the types of tokens returned by the scanner. The first
* three are also used in the hash table of capability names. The scanner
@ -148,49 +160,33 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
#define NO_PUSHBACK -1 /* used in pushtype to indicate no pushback */
/*
* The global structure in which the specific parts of a
* scanned token are returned.
*
*/
/*
* The global structure in which the specific parts of a
* scanned token are returned.
*/
struct token
{
char *tk_name; /* name of capability */
char *tk_name; /* name of capability */
int tk_valnumber; /* value of capability (if a number) */
char *tk_valstring; /* value of capability (if a string) */
};
extern NCURSES_EXPORT_VAR(struct token) _nc_curr_token;
/*
* Offsets to string capabilities, with the corresponding functionkey
* codes.
*/
/*
* Offsets to string capabilities, with the corresponding functionkey codes.
*/
struct tinfo_fkeys {
unsigned offset;
chtype code;
};
#if BROKEN_LINKER
#define _nc_tinfo_fkeys _nc_tinfo_fkeysf()
extern NCURSES_EXPORT(const struct tinfo_fkeys *) _nc_tinfo_fkeysf (void);
#else
extern NCURSES_EXPORT_VAR(const struct tinfo_fkeys) _nc_tinfo_fkeys[];
#endif
typedef short HashValue;
/*
* The file comp_captab.c contains an array of these structures, one
* per possible capability. These are indexed by a hash table array of
* pointers to the same structures for use by the parser.
*/
/*
* The file comp_captab.c contains an array of these structures, one per
* possible capability. These are indexed by a hash table array of pointers to
* the same structures for use by the parser.
*/
struct name_table_entry
{
const char *nte_name; /* name to hash on */
@ -199,10 +195,9 @@ struct name_table_entry
HashValue nte_link; /* index in table of next hash, or -1 */
};
/*
* Use this structure to hide differences between terminfo and termcap
* tables.
*/
/*
* Use this structure to hide differences between terminfo and termcap tables.
*/
typedef struct {
unsigned table_size;
const HashValue *table_data;
@ -217,13 +212,23 @@ struct alias
const char *source;
};
extern NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool);
extern NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool);
extern NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool);
extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool);
#define NOTFOUND ((struct name_table_entry *) 0)
/*
* The file comp_userdefs.c contains an array of these structures, one per
* possible capability. These are indexed by a hash table array of pointers to
* the same structures for use by the parser.
*/
struct user_table_entry
{
const char *ute_name; /* name to hash on */
int ute_type; /* mask (BOOLEAN, NUMBER, STRING) */
unsigned ute_argc; /* number of parameters */
unsigned ute_args; /* bit-mask for string parameters */
HashValue ute_index; /* index of associated variable in its array */
HashValue ute_link; /* index in table of next hash, or -1 */
};
/*
* The casts are required for correct sign-propagation with systems such as
* AIX, IRIX64, Solaris which default to unsigned characters. The C standard
@ -256,6 +261,10 @@ extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool);
#ifdef NCURSES_TERM_ENTRY_H_incl
/*
* These entrypoints are used only by the ncurses utilities such as tic.
*/
#ifdef NCURSES_INTERNALS
/* access.c */
extern NCURSES_EXPORT(unsigned) _nc_pathlast (const char *);
extern NCURSES_EXPORT(bool) _nc_is_abs_path (const char *);
@ -264,17 +273,21 @@ extern NCURSES_EXPORT(bool) _nc_is_file_path (const char *);
extern NCURSES_EXPORT(char *) _nc_basename (char *);
extern NCURSES_EXPORT(char *) _nc_rootname (char *);
/* comp_captab.c */
extern NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool);
extern NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool);
extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool);
/* comp_hash.c: name lookup */
extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry
(const char *, const HashValue *);
extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_type_entry
(const char *, int, bool);
extern NCURSES_EXPORT(struct user_table_entry const *) _nc_find_user_entry
(const char *);
/* comp_scan.c: lexical analysis */
extern NCURSES_EXPORT(int) _nc_get_token (bool);
extern NCURSES_EXPORT(void) _nc_panic_mode (char);
extern NCURSES_EXPORT(void) _nc_push_token (int);
extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *);
extern NCURSES_EXPORT_VAR(int) _nc_curr_col;
extern NCURSES_EXPORT_VAR(int) _nc_curr_line;
extern NCURSES_EXPORT_VAR(int) _nc_syntax;
@ -296,11 +309,12 @@ extern NCURSES_EXPORT(void) _nc_syserr_abort (const char *const,...) GCC_PRINTFL
extern NCURSES_EXPORT(void) _nc_warning (const char *const,...) GCC_PRINTFLIKE(1,2);
extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings;
/* comp_expand.c: expand string into readable form */
extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int);
/* comp_scan.c */
extern NCURSES_EXPORT_VAR(struct token) _nc_curr_token;
/* comp_scan.c: decode string from readable form */
extern NCURSES_EXPORT(int) _nc_trans_string (char *, char *);
/* comp_userdefs.c */
NCURSES_EXPORT(const struct user_table_entry *) _nc_get_userdefs_table (void);
NCURSES_EXPORT(const HashData *) _nc_get_hash_user (void);
/* captoinfo.c: capability conversion */
extern NCURSES_EXPORT(char *) _nc_captoinfo (const char *, const char *, int const);
@ -309,6 +323,14 @@ extern NCURSES_EXPORT(char *) _nc_infotocap (const char *, const char *, int con
/* home_terminfo.c */
extern NCURSES_EXPORT(char *) _nc_home_terminfo (void);
/* init_keytry.c */
#if BROKEN_LINKER
#define _nc_tinfo_fkeys _nc_tinfo_fkeysf()
extern NCURSES_EXPORT(const struct tinfo_fkeys *) _nc_tinfo_fkeysf (void);
#else
extern NCURSES_EXPORT_VAR(const struct tinfo_fkeys) _nc_tinfo_fkeys[];
#endif
/* lib_tparm.c */
#define NUM_PARM 9
@ -316,8 +338,13 @@ extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
extern NCURSES_EXPORT(int) _nc_tparm_analyze(const char *, char **, int *);
/* lib_trace.c */
extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
/* lib_tputs.c */
extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent */
extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent */
/* comp_main.c: compiler main */
extern const char * _nc_progname;
@ -331,6 +358,33 @@ extern NCURSES_EXPORT(void) _nc_last_db(void);
/* write_entry.c */
extern NCURSES_EXPORT(int) _nc_tic_written (void);
#endif /* NCURSES_INTERNALS */
/*
* These entrypoints were used by tack before 1.08.
*/
#undef NCURSES_TACK_1_08
#ifdef NCURSES_INTERNALS
#define NCURSES_TACK_1_08 /* nothing */
#else
#define NCURSES_TACK_1_08 GCC_DEPRECATED("upgrade to tack 1.08")
#endif
/* comp_hash.c: name lookup */
extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry
(const char *, const HashValue *) NCURSES_TACK_1_08;
extern NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool) NCURSES_TACK_1_08;
/* comp_scan.c: lexical analysis */
extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *) NCURSES_TACK_1_08;
/* comp_expand.c: expand string into readable form */
extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int) NCURSES_TACK_1_08;
/* comp_scan.c: decode string from readable form */
extern NCURSES_EXPORT(int) _nc_trans_string (char *, char *) NCURSES_TACK_1_08;
#endif /* NCURSES_TERM_ENTRY_H_incl */
#ifdef __cplusplus

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 2010,2011 Free Software Foundation, Inc. *
.\" Copyright (c) 2010-2016,2019 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 *
@ -26,30 +26,96 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: MKada_config.in,v 1.5 2011/03/26 14:44:51 tom Exp $
.\" $Id: MKada_config.in,v 1.11 2019/09/07 20:22:51 tom Exp $
.ds C adacurses@USE_CFG_SUFFIX@\-config
.TH ADACURSES "1" "" "" "User Commands"
.SH NAME
adacurses\-config \- helper script for AdaCurses libraries
adacurses@USE_CFG_SUFFIX@\-config \- helper script for @ADA_LIBNAME@ libraries
.SH SYNOPSIS
.B adacurses\-config
.B \*C
[\fIoptions\fR]
.SH DESCRIPTION
This is a shell script which simplifies configuring an application to use
the AdaCurses library binding to ncurses.
the @ADA_LIBNAME@ library binding to ncurses.
.SH OPTIONS
.TP
\fB\-\-cflags\fR
echos the gnat (Ada compiler) flags needed to compile with AdaCurses.
echos the gnat (Ada compiler) flags needed to compile with @ADA_LIBNAME@.
.TP
\fB\-\-libs\fR
echos the gnat libraries needed to link with AdaCurses.
echos the gnat libraries needed to link with @ADA_LIBNAME@.
.TP
\fB\-\-version\fR
echos the release+patchdate version of the ncurses libraries used
to configure and build AdaCurses.
to configure and build @ADA_LIBNAME@.
.TP
\fB\-\-help\fR
prints a list of the \fBadacurses\-config\fP script's options.
prints a list of the \fB\*C\fP script's options.
.PP
If no options are given, \fB\*C\fP prints the combination
of
\fB\-\-cflags\fR and
\fB\-\-libs\fR
that \fBgnatmake\fP expects (see example).
.SH EXAMPLE
.PP
For example, supposing that you want to compile the "Hello World!"
program for @ADA_LIBNAME@.
Make a file named "hello.adb":
.RS
.nf
.ft CW
with Terminal_Interface.Curses; use Terminal_Interface.Curses;
procedure Hello is
Visibility : Cursor_Visibility := Invisible;
done : Boolean := False;
c : Key_Code;
begin
Init_Screen;
Set_Echo_Mode (False);
Set_Cursor_Visibility (Visibility);
Set_Timeout_Mode (Standard_Window, Non_Blocking, 0);
Move_Cursor (Line => Lines / 2, Column => (Columns - 12) / 2);
Add (Str => "Hello World!");
while not done loop
c := Get_Keystroke (Standard_Window);
case c is
when Character'Pos ('q') => done := True;
when others => null;
end case;
Nap_Milli_Seconds (50);
end loop;
End_Windows;
end Hello;
.fi
.RE
.PP
Then, using
.RS
.ft CW
gnatmake `adacurses-config --cflags` hello -largs `adacurses-config --libs`
.ft
.RE
.PP
or (simpler):
.RS
.ft CW
gnatmake hello `adacurses-config`
.ft
.RE
.PP
you will compile and link the program.
.SH "SEE ALSO"
\fBcurses\fR(3X)
.PP

View File

@ -1,10 +1,10 @@
#!/bin/sh
# $Id: MKterminfo.sh,v 1.12 2003/01/11 21:42:12 tom Exp $
# $Id: MKterminfo.sh,v 1.17 2019/03/02 22:18:27 tom Exp $
#
# MKterminfo.sh -- generate terminfo.5 from Caps tabular data
#
#***************************************************************************
# Copyright (c) 1998,2002,2003 Free Software Foundation, Inc. *
# Copyright (c) 1998-2018,2019 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 *
@ -50,25 +50,34 @@ if test "${LC_COLLATE+set}" = set; then LC_COLLATE=C; export LC_COLLATE; fi
#
head=$1
caps=$2
tail=$3
cat <<'EOF'
'\" t
.\" DO NOT EDIT THIS FILE BY HAND!
.\" It is generated from terminfo.head, Caps, and terminfo.tail.
.\"
.\" Note: this must be run through tbl before nroff.
.\" The magic cookie on the first line triggers this under some man programs.
shift 1
caps=
while test $# -gt 1
do
caps="$caps $1"
shift 1
done
tail=$1
cat <<EOF
'\\" t
.\\" DO NOT EDIT THIS FILE BY HAND!
.\\" It is generated from terminfo.head, $caps, and terminfo.tail.
.\\"
.\\" Note: this must be run through tbl before nroff.
.\\" The magic cookie on the first line triggers this under some man programs.
EOF
cat $head
temp=temp$$
sorted=sorted$$
unsorted=unsorted$$
trap "rm -f $sorted $temp $unsorted; exit 99" 1 2 5 15
trap "code=\$?; rm -f $sorted $temp $unsorted; exit \$code" EXIT HUP INT QUIT TERM
rm -f $sorted $temp $unsorted
sed -n <$caps "\
cat $caps | sed -n "\
/%%-STOP-HERE-%%/q
/^#%center/s, expand,,
/^#%lw25/s, lw6 , lw7 ,
/^#%/s/#%//p
/^#/d
s/[ ][ ]*/ /g
@ -105,6 +114,7 @@ done <$unsorted
test $saved = yes && sort $temp >>$sorted
sed -e 's/^\.\.$//' $sorted | tr "\005\006" "\012\134"
cat $tail
rm -f $sorted $temp $unsorted
sed -e '/^center expand;/s, expand,,' \
-e '/^\.TS/,/^\\/s, lw[1-9][0-9]*\., l.,' \
$tail

View File

@ -1,6 +1,6 @@
# $Id: Makefile.in,v 1.47 2013/08/04 20:23:20 tom Exp $
# $Id: Makefile.in,v 1.49 2019/03/02 22:18:27 tom Exp $
##############################################################################
# Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. #
# Copyright (c) 1998-2015,2019 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"), #
@ -34,7 +34,7 @@
# NOTE: When you add or rename a man page, make sure you update both
# the top-level MANIFEST and any man/*.renames files!
SHELL = /bin/sh
SHELL = @SHELL@
VPATH = @srcdir@
DESTDIR = @DESTDIR@
@ -62,15 +62,20 @@ $(DESTDIR)$(mandir) :
EDITARGS = $(DESTDIR)$(mandir) $(srcdir) terminfo.5 *-config.1 $(srcdir)/*.[0-9]*
install install.man : terminfo.5 $(DESTDIR)$(mandir)
sh ../edit_man.sh normal installing $(EDITARGS)
$(SHELL) ../edit_man.sh normal installing $(EDITARGS)
uninstall uninstall.man :
-sh ../edit_man.sh normal removing $(EDITARGS)
-$(SHELL) ../edit_man.sh normal removing $(EDITARGS)
# We compose terminfo.5 from the real sources...
CAPLIST=$(srcdir)/../include/@TERMINFO_CAPS@
terminfo.5: $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail Makefile $(srcdir)/MKterminfo.sh
sh $(srcdir)/MKterminfo.sh $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail >terminfo.5
CAPLIST = \
$(srcdir)/../include/@TERMINFO_CAPS@ \
$(srcdir)/../include/Caps-ncurses
terminfo.5: $(srcdir)/terminfo.head \
$(CAPLIST) \
$(srcdir)/terminfo.tail \
Makefile $(srcdir)/MKterminfo.sh
$(SHELL) $(srcdir)/MKterminfo.sh $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail >terminfo.5
mostlyclean :
-rm -f core tags TAGS *~ *.bak *.ln *.atac trace
@ -79,7 +84,7 @@ clean: mostlyclean
rm -f terminfo.5
../edit_man.sed : make_sed.sh @MANPAGE_RENAMES@
sh $(srcdir)/make_sed.sh @MANPAGE_RENAMES@ >../edit_man.sed
$(SHELL) $(srcdir)/make_sed.sh @MANPAGE_RENAMES@ >../edit_man.sed
distclean realclean: clean
rm -f Makefile *-config.1 ../edit_man.* ../man_alias.*

View File

@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2018,2019 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 *
@ -27,14 +27,14 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: captoinfo.1m,v 1.25 2010/12/04 18:36:44 tom Exp $
.\" $Id: captoinfo.1m,v 1.29 2019/10/12 21:10:00 tom Exp $
.TH @CAPTOINFO@ 1M ""
.ds n 5
.ds d @TERMINFO@
.SH NAME
\fB@CAPTOINFO@\fR \- convert a \fItermcap\fR description into a \fIterminfo\fR description
.SH SYNOPSIS
\fB@CAPTOINFO@\fR [\fB\-v\fR\fIn\fR \fIwidth\fR] [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR . . .
\fB@CAPTOINFO@\fR [\fB\-v\fR\fIn\fR \fIwidth\fR] [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR ...
.SH DESCRIPTION
\fB@CAPTOINFO@\fR looks in each given text
\fIfile\fR for \fBtermcap\fR descriptions.
@ -152,7 +152,7 @@ GG acs magic cookie count
.TE
.PP
If the single-line capabilities occur in an entry, they will automatically
be composed into an \fIacsc\fR string.
be composed into an \fBacsc\fR string.
The double-line capabilities and
\fBGG\fR are discarded with a warning message.
.PP
@ -174,18 +174,24 @@ font3 s3ds
.TE
.PP
Additionally, the AIX \fIbox1\fR capability will be automatically translated to
an \fIacsc\fR string.
an \fBacsc\fR string.
.PP
Hewlett-Packard's terminfo library supports two nonstandard terminfo
capabilities \fImeml\fR (memory lock) and \fImemu\fR (memory unlock).
capabilities \fBmeml\fR (memory lock) and \fBmemu\fR (memory unlock).
These will be discarded with a warning message.
.SH NOTES
This utility is actually a link to \fB@TIC@\fR(1M), running in \fI\-I\fR mode.
You can use other \fB@TIC@\fR options such as \fB\-f\fR and \fB\-x\fR.
.PP
The trace option is not identical to SVr4's.
The verbose option is not identical to SVr4's.
Under SVr4, instead of following
the \fB\-v\fR with a trace level n, you repeat it n times.
.SH PORTABILITY
X/Open Curses, Issue 7 (2009) describes \fBtic\fP briefly,
but omits this program.
SVr4 systems provide \fBcaptoinfo\fP as a separate application from \fBtic\fP.
.PP
NetBSD does not provide this application.
.SH SEE ALSO
\fB@INFOCMP@\fR(1M),
\fBcurses\fR(3X),

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2017,2018 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 *
@ -26,21 +26,135 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: clear.1,v 1.10 2013/06/22 22:22:11 tom Exp $
.\" $Id: clear.1,v 1.22 2018/07/28 21:45:40 tom Exp $
.TH @CLEAR@ 1 ""
.\" these would be fallbacks for DS/DE,
.\" but groff changed the meaning of the macros.
.de NS
.ie n .sp
.el .sp .5
.ie n .in +4
.el .in +2
.nf
.ft C \" Courier
..
.de NE
.fi
.ft R
.ie n .in -4
.el .in -2
..
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.ds n 5
.SH NAME
\fB@CLEAR@\fR \- clear the terminal screen
.SH SYNOPSIS
\fB@CLEAR@\fR
\fB@CLEAR@\fR [\fB\-T\fR\fItype\fR] [\fB\-V\fP] [\fB\-x\fP]
.br
.SH DESCRIPTION
\fB@CLEAR@\fR clears your screen if this is possible,
including its scrollback buffer (if the extended "E3" capability is defined).
\fB@CLEAR@\fR looks in the environment for the terminal type and then in the
including its scrollback buffer
(if the extended \*(``E3\*('' capability is defined).
\fB@CLEAR@\fR looks in the environment for the terminal type
given by the environment variable \fBTERM\fP,
and then in the
\fBterminfo\fR database to determine how to clear the screen.
.PP
\fB@CLEAR@\fR ignores any command-line parameters that may be present.
\fB@CLEAR@\fR writes to the standard output.
You can redirect the standard output to a file (which prevents
\fB@CLEAR@\fR from actually clearing the screen),
and later \fBcat\fP the file to the screen, clearing it at that point.
.SH OPTIONS
.PP
.TP 5
.B \-T \fItype\fP
indicates the \fItype\fR of terminal.
Normally this option is
unnecessary, because the default is taken from the environment
variable \fBTERM\fR.
If \fB\-T\fR is specified, then the shell
variables \fBLINES\fR and \fBCOLUMNS\fR will also be ignored.
.TP
.B \-V
reports the version of ncurses which was used in this program, and exits.
The options are as follows:
.TP
.B \-x
do not attempt to clear the terminal's scrollback buffer
using the extended \*(``E3\*('' capability.
.SH HISTORY
A \fBclear\fP command appeared in 2.79BSD dated February 24, 1979.
Later that was provided in Unix 8th edition (1985).
.PP
AT&T adapted a different BSD program (\fBtset\fP) to make
a new command (\fBtput\fP),
and used this to replace the \fBclear\fP command with a shell script
which calls \fBtput clear\fP, e.g.,
.NS
/usr/bin/tput ${1:+-T$1} clear 2> /dev/null
exit
.NE
.PP
In 1989, when Keith Bostic revised the BSD \fBtput\fP command
to make it similar to the AT&T \fBtput\fP,
he added a shell script for the \fBclear\fP command:
.NS
exec tput clear
.NE
.PP
The remainder of the script in each case is a copyright notice.
.PP
The ncurses \fBclear\fP command began in 1995 by adapting the original
BSD \fBclear\fP command (with terminfo, of course).
.PP
The \fBE3\fP extension came later:
.bP
In June 1999, xterm provided an extension to the standard control
sequence for clearing the screen.
Rather than clearing just the visible part of the screen using
.NS
printf '\\033[2J'
.NE
.IP
one could clear the \fIscrollback\fP using
.NS
printf '\\033[\fB3\fPJ'
.NE
.IP
This is documented in \fIXTerm Control Sequences\fP as a feature originating
with xterm.
.bP
A few other terminal developers adopted the feature, e.g., PuTTY in 2006.
.bP
In April 2011, a Red Hat developer submitted a patch to the Linux
kernel, modifying its console driver to do the same thing.
The Linux change, part of the 3.0 release, did not mention xterm,
although it was cited in the Red Hat bug report (#683733)
which led to the change.
.bP
Again, a few other terminal developers adopted the feature.
But the
next relevant step was a change to the \fBclear\fP program in 2013
to incorporate this extension.
.bP
In 2013, the \fBE3\fP extension was overlooked in \fB@TPUT@\fP with
the \*(``clear\*('' parameter.
That was addressed in 2016 by reorganizing \fB@TPUT@\fP to share
its logic with \fB@CLEAR@\fP and \fB@TSET@\fP.
.SH PORTABILITY
Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7
(POSIX.1-2008) nor X/Open Curses Issue 7 documents @TSET@ or @RESET@.
.PP
The latter documents \fBtput\fP, which could be used to replace this utility
either via a shell script or by an alias (such as a symbolic link) to
run \fB@TPUT@\fP as \fB@CLEAR@\fP.
.SH SEE ALSO
\fB@TPUT@\fR(1), \fBterminfo\fR(\*n)
.PP

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 2001-2011,2012 Free Software Foundation, Inc. *
.\" Copyright (c) 2001-2017,2019 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 *
@ -26,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_add_wch.3x,v 1.15 2012/11/03 23:03:59 tom Exp $
.\" $Id: curs_add_wch.3x,v 1.25 2019/10/27 00:07:13 tom Exp $
.TH curs_add_wch 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
.IP \(bu 4
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.SH NAME
\fBadd_wch\fP,
@ -55,6 +60,7 @@
.B "int wecho_wchar( WINDOW *\fIwin\fP, const cchar_t *\fIwch\fB );"
.br
.SH DESCRIPTION
.SS add_wch
.PP
The
\fBadd_wch\fP,
@ -83,12 +89,13 @@ and the rendition specified by \fIwch\fP is ignored.
If the character part of \fIwch\fP is
a tab, newline, backspace or other control character,
the window is updated and the cursor moves as if \fBaddch\fR were called.
.SS echo_wchar
.PP
The \fBecho_wchar\fP
function is functionally equivalent to a call to
\fBadd_wch\fP
followed by a call to
\fBrefresh\fP.
\fBrefresh\fP(3X).
Similarly, the
\fBwecho_wchar\fP
is functionally equivalent to a call to
@ -107,80 +114,104 @@ These symbols correspond to the same VT100 line-drawing set as
\fBaddch\fP(3X).
.PP
.TS
l l l l
_ _ _ _
lw(1.5i) lw7 lw7 lw20.
\fIName\fR \fIUnicode\fP \fIDefault\fR \fIDescription\fR
WACS_BLOCK 0x25ae # solid square block
WACS_BOARD 0x2592 # board of squares
WACS_BTEE 0x2534 + bottom tee
WACS_BULLET 0x00b7 o bullet
WACS_CKBOARD 0x2592 : checker board (stipple)
WACS_DARROW 0x2193 v arrow pointing down
WACS_DEGREE 0x00b0 ' degree symbol
WACS_DIAMOND 0x25c6 + diamond
WACS_GEQUAL 0x2265 > greater-than-or-equal-to
WACS_HLINE 0x2500 \- horizontal line
WACS_LANTERN 0x2603 # lantern symbol
WACS_LARROW 0x2190 < arrow pointing left
WACS_LEQUAL 0x2264 < less-than-or-equal-to
WACS_LLCORNER 0x2514 + lower left-hand corner
WACS_LRCORNER 0x2518 + lower right-hand corner
WACS_LTEE 0x2524 + left tee
WACS_NEQUAL 0x2260 ! not-equal
WACS_PI 0x03c0 * greek pi
WACS_PLMINUS 0x00b1 # plus/minus
WACS_PLUS 0x253c + plus
WACS_RARROW 0x2192 > arrow pointing right
WACS_RTEE 0x251c + right tee
WACS_S1 0x23ba \- scan line 1
WACS_S3 0x23bb \- scan line 3
WACS_S7 0x23bc \- scan line 7
WACS_S9 0x23bd \&_ scan line 9
WACS_STERLING 0x00a3 f pound-sterling symbol
WACS_TTEE 0x252c + top tee
WACS_UARROW 0x2191 ^ arrow pointing up
WACS_ULCORNER 0x250c + upper left-hand corner
WACS_URCORNER 0x2510 + upper right-hand corner
WACS_VLINE 0x2502 | vertical line
l l l l l
l l l l l
_ _ _ _ _
lw(1.5i) lw5 lw5 lw5 lw20.
\fBACS\fR \fBUnicode\fP \fBASCII\fR \fBacsc\fP \fBGlyph\fR
\fBName\fR \fBDefault\fP \fBDefault\fR \fBchar\fP \fBName\fR
WACS_BLOCK 0x25ae # 0 solid square block
WACS_BOARD 0x2592 # h board of squares
WACS_BTEE 0x2534 + v bottom tee
WACS_BULLET 0x00b7 o ~ bullet
WACS_CKBOARD 0x2592 : a checker board (stipple)
WACS_DARROW 0x2193 v . arrow pointing down
WACS_DEGREE 0x00b0 ' f degree symbol
WACS_DIAMOND 0x25c6 + ` diamond
WACS_GEQUAL 0x2265 > > greater-than-or-equal-to
WACS_HLINE 0x2500 \- q horizontal line
WACS_LANTERN 0x2603 # i lantern symbol
WACS_LARROW 0x2190 < , arrow pointing left
WACS_LEQUAL 0x2264 < y less-than-or-equal-to
WACS_LLCORNER 0x2514 + m lower left-hand corner
WACS_LRCORNER 0x2518 + j lower right-hand corner
WACS_LTEE 0x2524 + t left tee
WACS_NEQUAL 0x2260 ! | not-equal
WACS_PI 0x03c0 * { greek pi
WACS_PLMINUS 0x00b1 # g plus/minus
WACS_PLUS 0x253c + n plus
WACS_RARROW 0x2192 > + arrow pointing right
WACS_RTEE 0x251c + u right tee
WACS_S1 0x23ba \- o scan line 1
WACS_S3 0x23bb \- p scan line 3
WACS_S7 0x23bc \- r scan line 7
WACS_S9 0x23bd \&_ s scan line 9
WACS_STERLING 0x00a3 f } pound-sterling symbol
WACS_TTEE 0x252c + w top tee
WACS_UARROW 0x2191 ^ \- arrow pointing up
WACS_ULCORNER 0x250c + l upper left-hand corner
WACS_URCORNER 0x2510 + k upper right-hand corner
WACS_VLINE 0x2502 | x vertical line
.TE
.PP
The wide-character configuration of ncurses also defines symbols
for thick- and double-lines:
for thick lines (\fBacsc\fP \*(``J\*('' to \*(``V\*(''):
.TS
l l l l l
l l l l l
_ _ _ _ _
lw(1.5i) lw5 lw5 lw5 lw20.
\fBACS\fR \fBUnicode\fP \fBASCII\fR \fBacsc\fP \fBGlyph\fR
\fBName\fR \fBDefault\fP \fBDefault\fR \fBchar\fP \fBName\fR
WACS_T_BTEE 0x253b + V thick tee pointing up
WACS_T_HLINE 0x2501 - Q thick horizontal line
WACS_T_LLCORNER 0x2517 + M thick lower left corner
WACS_T_LRCORNER 0x251b + J thick lower right corner
WACS_T_LTEE 0x252b + T thick tee pointing right
WACS_T_PLUS 0x254b + N thick large plus
WACS_T_RTEE 0x2523 + U thick tee pointing left
WACS_T_TTEE 0x2533 + W thick tee pointing down
WACS_T_ULCORNER 0x250f + L thick upper left corner
WACS_T_URCORNER 0x2513 + K thick upper right corner
WACS_T_VLINE 0x2503 | X thick vertical line
.TE
.PP
and for double-lines (\fBacsc\fP \*(``A\*('' to \*(``I\*(''):
.PP
.TS
l l l l
_ _ _ _
lw(1.5i) lw7 lw7 lw20.
\fIName\fR \fIUnicode\fP \fIDefault\fR \fIDescription\fR
WACS_T_ULCORNER 0x250f + thick upper left corner
WACS_T_LLCORNER 0x2517 + thick lower left corner
WACS_T_URCORNER 0x2513 + thick upper right corner
WACS_T_LRCORNER 0x251b + thick lower right corner
WACS_T_LTEE 0x252b + thick tee pointing right
WACS_T_RTEE 0x2523 + thick tee pointing left
WACS_T_BTEE 0x253b + thick tee pointing up
WACS_T_TTEE 0x2533 + thick tee pointing down
WACS_T_HLINE 0x2501 - thick horizontal line
WACS_T_VLINE 0x2503 | thick vertical line
WACS_T_PLUS 0x254b + thick large plus or crossover
WACS_D_ULCORNER 0x2554 + double upper left corner
WACS_D_LLCORNER 0x255a + double lower left corner
WACS_D_URCORNER 0x2557 + double upper right corner
WACS_D_LRCORNER 0x255d + double lower right corner
WACS_D_RTEE 0x2563 + double tee pointing left
WACS_D_LTEE 0x2560 + double tee pointing right
WACS_D_BTEE 0x2569 + double tee pointing up
WACS_D_TTEE 0x2566 + double tee pointing down
WACS_D_HLINE 0x2550 - double horizontal line
WACS_D_VLINE 0x2551 | double vertical line
WACS_D_PLUS 0x256c + double large plus or crossover
l l l l l
l l l l l
_ _ _ _ _
lw(1.5i) lw5 lw5 lw5 lw20.
\fBACS\fR \fBUnicode\fP \fBASCII\fR \fBacsc\fP \fBGlyph\fR
\fBName\fR \fBDefault\fP \fBDefault\fR \fBchar\fP \fBName\fR
WACS_D_BTEE 0x2569 + H double tee pointing up
WACS_D_HLINE 0x2550 - R double horizontal line
WACS_D_LLCORNER 0x255a + D double lower left corner
WACS_D_LRCORNER 0x255d + A double lower right corner
WACS_D_LTEE 0x2560 + F double tee pointing right
WACS_D_PLUS 0x256c + E double large plus
WACS_D_RTEE 0x2563 + G double tee pointing left
WACS_D_TTEE 0x2566 + I double tee pointing down
WACS_D_ULCORNER 0x2554 + C double upper left corner
WACS_D_URCORNER 0x2557 + B double upper right corner
WACS_D_VLINE 0x2551 | Y double vertical line
.TE
.PP
Unicode's descriptions for these characters differs slightly from ncurses,
by introducing the term \*(``light\*('' (along with less important details).
Here are its descriptions for the normal, thick, and double horizontal lines:
.bP
U+2500 BOX DRAWINGS LIGHT HORIZONTAL
.bP
U+2501 BOX DRAWINGS HEAVY HORIZONTAL
.bP
U+2550 BOX DRAWINGS DOUBLE HORIZONTAL
.SH RETURN VALUE
.PP
All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success.
.PP
Functions with a "mv" prefix first perform a cursor movement using
Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
@ -213,7 +244,66 @@ SVr4 curses implementations defined their line-drawing symbols in
terms of intermediate symbols.
This implementation extends those symbols, providing new definitions
which are not in the SVr4 implementations.
.PP
Not all Unicode-capable terminals provide support for VT100-style
alternate character sets (i.e., the \fBacsc\fP capability),
with their corresponding line-drawing characters.
X/Open Curses did not address the aspect of integrating Unicode with
line-drawing characters.
Existing implementations of Unix curses (AIX, HPUX, Solaris)
use only the \fBacsc\fP character-mapping to provide this feature.
As a result, those implementations can only use single-byte line-drawing
characters.
Ncurses 5.3 (2002) provided a table of Unicode values to solve these problems.
NetBSD curses incorporated that table in 2010.
.PP
In this implementation, the Unicode values are used instead of the
terminal description's \fBacsc\fP mapping as discussed in ncurses(3X)
for the environment variable \fBNCURSES_NO_UTF8_ACS\fP.
In contrast, for the same cases, the line-drawing characters
described in \fBcurs_addch\fP(3X) will use only the ASCII default values.
.PP
Having Unicode available does not solve all of the problems with
line-drawing for curses:
.bP
The closest Unicode equivalents to the
VT100 graphics \fIS1\fP, \fIS3\fP, \fIS7\fP and \fIS9\fP
frequently are not displayed at
the regular intervals which the terminal used.
.bP
The \fIlantern\fP is a special case.
It originated with the AT&T 4410 terminal in the early 1980s.
There is no accessible documentation depicting the lantern symbol
on the AT&T terminal.
.IP
Lacking documentation, most readers assume that a \fIstorm lantern\fP
was intended.
But there are several possibilities, all with problems.
.IP
Unicode 6.0 (2010) does provide two lantern symbols: U+1F383 and U+1F3EE.
Those were not available in 2002, and are irrelevant since
they lie outside the BMP and as a result are not generally available
in terminals.
They are not storm lanterns, in any case.
.IP
Most \fIstorm lanterns\fP have a tapering glass chimney
(to guard against tipping);
some have a wire grid protecting the chimney.
.IP
For the tapering appearance, \[u2603] U+2603 was adequate.
In use on a terminal, no one can tell what the image represents.
Unicode calls it a snowman.
.IP
Others have suggested these alternatives:
\[sc] U+00A7 (section mark),
\[u0398] U+0398 (theta),
\[u03A6] U+03A6 (phi),
\[u03B4] U+03B4 (delta),
\[u2327] U+2327 (x in a rectangle),
\[u256C] U+256C (forms double vertical and horizontal), and
\[u2612] U+2612 (ballot box with x).
.SH SEE ALSO
.na
.PP
\fBcurses\fR(3X),
\fBcurs_addch\fR(3X),

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
.\" Copyright (c) 2002-2017,2019 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 *
@ -26,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_add_wchstr.3x,v 1.10 2012/11/03 22:54:43 tom Exp $
.\" $Id: curs_add_wchstr.3x,v 1.12 2019/11/30 21:06:30 tom Exp $
.TH curs_add_wchstr 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
.IP \(bu 4
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.na
.hy 0
@ -101,7 +106,7 @@ X/Open does not define any error conditions.
This implementation returns an error
if the window pointer is null.
.PP
Functions with a "mv" prefix first perform a cursor movement using
Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES

View File

@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
.\" Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2018,2019 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 *
@ -27,8 +27,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_addch.3x,v 1.32 2011/01/15 14:15:10 tom Exp $
.\" $Id: curs_addch.3x,v 1.50 2019/11/30 20:07:00 tom Exp $
.TH curs_addch 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.SH NAME
\fBaddch\fR,
\fBwaddch\fR,
@ -52,93 +60,118 @@
\fBint wechochar(WINDOW *win, const chtype ch);\fR
.br
.SH DESCRIPTION
.SS Adding characters
The \fBaddch\fR, \fBwaddch\fR, \fBmvaddch\fR and \fBmvwaddch\fR routines put
the character \fIch\fR into the given window at its current window position,
which is then advanced. They are analogous to \fBputchar\fR in \fBstdio\fR(3).
If the advance is at the right margin, the cursor automatically wraps to the
beginning of the next line. At the bottom of the current scrolling region, if
\fBscrollok\fR is enabled, the scrolling region is scrolled up one line.
which is then advanced.
They are analogous to \fBputchar\fR(3) in \fBstdio\fR(3).
If the advance is at the right margin:
.bP
The cursor automatically wraps to the beginning of the next line.
.bP
At the bottom of the current scrolling region,
and if \fBscrollok\fR is enabled,
the scrolling region is scrolled up one line.
.bP
If \fBscrollok\fR is not enabled,
writing a character at the lower right margin succeeds.
However, an error is returned because
it is not possible to wrap to a new line
.PP
If \fIch\fR is a tab, newline, or backspace,
the cursor is moved appropriately within the window.
If \fIch\fR is a tab, newline, carriage return or backspace,
the cursor is moved appropriately within the window:
.bP
Backspace moves the cursor one character left; at the left
edge of a window it does nothing.
.bP
Carriage return moves the cursor to the window left margin on the current line.
.bP
Newline does a \fBclrtoeol\fR,
then moves the cursor to the window left margin on the next line,
scrolling the window if on the last line.
.bP
Tabs are considered to be at every eighth column.
The tab interval may be altered by setting the \fBTABSIZE\fR variable.
.PP
If \fIch\fR is any control character other than tab, newline, or backspace, it
is drawn in \fB^\fR\fIX\fR notation. Calling \fBwinch\fR after adding a
If \fIch\fR is any other control character, it
is drawn in \fB^\fR\fIX\fR notation.
Calling \fBwinch\fR after adding a
control character does not return the character itself, but instead returns
the ^-representation of the control character.
.PP
Video attributes can be combined with a character argument passed to
\fBaddch\fR or related functions by logical-ORing them into the character.
(Thus, text, including attributes, can be copied from one place to another
using \fBinch\fR and \fBaddch\fR.) See the \fBcurs_attr\fR(3X) page for
using \fBinch\fR(3X) and \fBaddch\fR.) See the \fBcurs_attr\fR(3X) page for
values of predefined video attribute constants that can be usefully OR'ed
into characters.
.SS Echoing characters
.PP
The \fBechochar\fR and \fBwechochar\fR routines are equivalent to a call to
\fBaddch\fR followed by a call to \fBrefresh\fR, or a call to \fBwaddch\fR
followed by a call to \fBwrefresh\fR. The knowledge that only a single
\fBaddch\fR followed by a call to \fBrefresh\fR(3X), or a call to \fBwaddch\fR
followed by a call to \fBwrefresh\fR.
The knowledge that only a single
character is being output is used and, for non-control characters, a
considerable performance gain may be seen by using these routines instead of
their equivalents.
.SS Line Graphics
The following variables may be used to add line drawing characters to the
screen with routines of the \fBaddch\fR family. The default character listed
screen with routines of the \fBaddch\fR family.
The default character listed
below is used if the \fBacsc\fR capability does not define a terminal-specific
replacement for it.
replacement for it,
or if the terminal and locale configuration requires Unicode but the
library is unable to use Unicode.
.PP
The names are taken from VT100 nomenclature.
.PP
.TS
l l l
_ _ _
l l l.
\fIName\fR \fIDefault\fR \fIDescription\fR
ACS_BLOCK # solid square block
ACS_BOARD # board of squares
ACS_BTEE + bottom tee
ACS_BULLET o bullet
ACS_CKBOARD : checker board (stipple)
ACS_DARROW v arrow pointing down
ACS_DEGREE ' degree symbol
ACS_DIAMOND + diamond
ACS_GEQUAL > greater-than-or-equal-to
ACS_HLINE \- horizontal line
ACS_LANTERN # lantern symbol
ACS_LARROW < arrow pointing left
ACS_LEQUAL < less-than-or-equal-to
ACS_LLCORNER + lower left-hand corner
ACS_LRCORNER + lower right-hand corner
ACS_LTEE + left tee
ACS_NEQUAL ! not-equal
ACS_PI * greek pi
ACS_PLMINUS # plus/minus
ACS_PLUS + plus
ACS_RARROW > arrow pointing right
ACS_RTEE + right tee
ACS_S1 \- scan line 1
ACS_S3 \- scan line 3
ACS_S7 \- scan line 7
ACS_S9 \&_ scan line 9
ACS_STERLING f pound-sterling symbol
ACS_TTEE + top tee
ACS_UARROW ^ arrow pointing up
ACS_ULCORNER + upper left-hand corner
ACS_URCORNER + upper right-hand corner
ACS_VLINE | vertical line
l l l l
l l l l
_ _ _ _
l l l l.
\fBACS\fR \fBACS\fR \fBacsc\fP \fBGlyph\fR
\fBName\fR \fBDefault\fR \fBchar\fP \fBName\fR
ACS_BLOCK # 0 solid square block
ACS_BOARD # h board of squares
ACS_BTEE + v bottom tee
ACS_BULLET o ~ bullet
ACS_CKBOARD : a checker board (stipple)
ACS_DARROW v . arrow pointing down
ACS_DEGREE ' f degree symbol
ACS_DIAMOND + ` diamond
ACS_GEQUAL > > greater-than-or-equal-to
ACS_HLINE \- q horizontal line
ACS_LANTERN # i lantern symbol
ACS_LARROW < , arrow pointing left
ACS_LEQUAL < y less-than-or-equal-to
ACS_LLCORNER + m lower left-hand corner
ACS_LRCORNER + j lower right-hand corner
ACS_LTEE + t left tee
ACS_NEQUAL ! | not-equal
ACS_PI * { greek pi
ACS_PLMINUS # g plus/minus
ACS_PLUS + n plus
ACS_RARROW > + arrow pointing right
ACS_RTEE + u right tee
ACS_S1 \- o scan line 1
ACS_S3 \- p scan line 3
ACS_S7 \- r scan line 7
ACS_S9 \&_ s scan line 9
ACS_STERLING f } pound-sterling symbol
ACS_TTEE + w top tee
ACS_UARROW ^ \- arrow pointing up
ACS_ULCORNER + l upper left-hand corner
ACS_URCORNER + k upper right-hand corner
ACS_VLINE | x vertical line
.TE
.SH RETURN VALUE
All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success
(the SVr4 manuals specify only "an integer value other than \fBERR\fR") upon
successful completion, unless otherwise noted in the preceding routine
descriptions.
(the SVr4 manuals specify only
\*(``an integer value other than \fBERR\fR\*('') upon successful completion,
unless otherwise noted in the preceding routine descriptions.
.PP
Functions with a "mv" prefix first perform a cursor movement using
Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
@ -147,10 +180,36 @@ Note that \fBaddch\fR, \fBmvaddch\fR, \fBmvwaddch\fR, and
.SH PORTABILITY
All these functions are described in the XSI Curses standard, Issue 4.
The defaults specified for forms-drawing characters apply in the POSIX locale.
.SS ACS Symbols
.LP
X/Open Curses states that the \fIACS_\fP definitions are \fBchar\fP constants.
For the wide-character implementation (see \fBcurs_add_wch\fP),
there are analogous \fIWACS_\fP definitions which are \fBcchar_t\fP constants.
Some implementations are problematic:
.bP
Some implementations define the ACS symbols to a constant
(such as Solaris), while others define those to entries in an array.
.IP
This implementation uses an array \fBacs_map\fP, as done in SVr4 curses.
NetBSD also uses an array, actually named \fB_acs_char\fP, with a \fB#define\fP
for compatibility.
.bP
HPUX curses equates some of the \fIACS_\fP symbols
to the analogous \fIWACS_\fP symbols as if the \fIACS_\fP symbols were
wide characters.
The misdefined symbols are the arrows
and other symbols which are not used for line-drawing.
.bP
X/Open Curses (issues 2 through 7) has a typographical error
for the ACS_LANTERN symbol, equating its \*(``VT100+ Character\*(''
to \fBI\fP (capital I), while the header files for SVr4 curses
and the various implementations use \fBi\fP (lowercase).
.IP
None of the terminal descriptions on Unix platforms use uppercase-I,
except for Solaris (i.e., \fIscreen\fP's terminal description,
apparently based on the X/Open documentation around 1995).
On the other hand, the terminal description \fIgs6300\fP
(AT&T PC6300 with EMOTS Terminal Emulator) uses lowercase-i.
.LP
Some ACS symbols
(ACS_S3,
@ -161,13 +220,66 @@ ACS_PI,
ACS_NEQUAL,
ACS_STERLING)
were not documented in
any publicly released System V. However, many publicly available terminfos
any publicly released System V.
However, many publicly available terminfos
include \fBacsc\fR strings in which their key characters (pryz{|}) are
embedded, and a second-hand list of their character descriptions has come
to light. The ACS-prefixed names for them were invented for \fBncurses\fR(3X).
to light.
The ACS-prefixed names for them were invented for \fBncurses\fR(3X).
.LP
The \fBTABSIZE\fR variable is implemented in some versions of curses,
but is not part of X/Open curses.
The \fIdisplayed\fP values for the \fIACS_\fP and \fIWACS_\fP constants
depend on
.bP
the library configuration, i.e., \fBncurses\fP versus \fBncursesw\fP,
where the latter is capable of displaying Unicode while the former is not, and
.bP
whether the \fIlocale\fP uses UTF-8 encoding.
.LP
In certain cases, the terminal is unable to display line-drawing characters
except by using UTF-8 (see the discussion of \fBNCURSES_NO_UTF8_ACS\fP in
ncurses(3X)).
.SS Character Set
X/Open Curses assumes that the parameter passed to \fBwaddch\fP contains
a single character.
As discussed in \fBcurs_attr\fP(3X), that character may have been
more than eight bits in an SVr3 or SVr4 implementation,
but in the X/Open Curses model, the details are not given.
The important distinction between SVr4 curses and X/Open Curses is
that the non-character information (attributes and color) was
separated from the character information which is packed in a \fBchtype\fP
to pass to \fBwaddch\fP.
.PP
In this implementation, \fBchtype\fP holds an eight-bit character.
But ncurses allows multibyte characters to be passed in a succession
of calls to \fBwaddch\fP.
The other implementations do not do this;
a call to \fBwaddch\fP passes exactly one character
which may be rendered as one or more cells on the screen
depending on whether it is printable.
.PP
Depending on the locale settings,
ncurses will inspect the byte passed in each call to \fBwaddch\fP,
and check if the latest call will continue a multibyte sequence.
When a character is \fIcomplete\fP,
ncurses displays the character and moves to the next position in the screen.
.PP
If the calling application interrupts the succession of bytes in
a multibyte character by moving the current location (e.g., using \fBwmove\fP),
ncurses discards the partially built character,
starting over again.
.PP
For portability to other implementations,
do not rely upon this behavior:
.bP
check if a character can be represented as a single byte in the current locale
before attempting call \fBwaddch\fP, and
.bP
call \fBwadd_wch\fP for characters which cannot be handled by \fBwaddch\fP.
.SS TABSIZE
.LP
The \fBTABSIZE\fR variable is implemented in SVr4 and other versions of curses,
but is not part of X/Open curses
(see \fBcurs_variables\fR(3X) for more details).
.LP
If \fIch\fR is a carriage return,
the cursor is moved to the beginning of the current row of the window.

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2017,2019 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 *
@ -26,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_addchstr.3x,v 1.16 2012/11/03 22:54:43 tom Exp $
.\" $Id: curs_addchstr.3x,v 1.18 2019/11/30 21:06:30 tom Exp $
.TH curs_addchstr 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
.IP \(bu 4
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.na
.hy 0
@ -95,7 +100,7 @@ X/Open does not define any error conditions.
This implementation returns an error
if the window pointer is null.
.PP
Functions with a "mv" prefix first perform a cursor movement using
Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2017,2019 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 *
@ -26,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_addstr.3x,v 1.17 2012/11/03 22:57:31 tom Exp $
.\" $Id: curs_addstr.3x,v 1.19 2019/11/30 21:06:30 tom Exp $
.TH curs_addstr 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
.IP \(bu 4
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.na
.hy 0
@ -89,7 +94,7 @@ if the string pointer is null or
.bP
if the corresponding calls to \fBwaddch\fP return an error.
.PP
Functions with a "mv" prefix first perform a cursor movement using
Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
.\" Copyright (c) 2002-2017,2019 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 *
@ -26,10 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_addwstr.3x,v 1.11 2012/11/03 22:57:31 tom Exp $
.\" $Id: curs_addwstr.3x,v 1.13 2019/11/30 21:06:30 tom Exp $
.TH curs_addwstr 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
.IP \(bu 4
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.na
.hy 0
@ -91,7 +96,7 @@ if the string pointer is null or
.bP
if the corresponding calls to \fBwadd_wch\fP return an error.
.PP
Functions with a "mv" prefix first perform a cursor movement using
Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES

View File

@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
.\" Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2018,2019 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 *
@ -27,146 +27,256 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_attr.3x,v 1.39 2013/09/21 20:39:49 Sven.Joachim Exp $
.\" $Id: curs_attr.3x,v 1.65 2019/11/30 21:06:30 tom Exp $
.TH curs_attr 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de NS
.ie n .sp
.el .sp .5
.ie n .in +4
.el .in +2
.nf
.ft C \" Courier
..
.de NE
.fi
.ft R
.ie n .in -4
.el .in -2
..
.de bP
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.na
.hy 0
.\" ---------------------------------------------------------------------------
.SH NAME
.\" attr_get
\fBattr_get\fR,
\fBwattr_get\fR,
\fBattr_set\fR,
\fBwattr_set\fR,
.\" .br
\fBattr_off\fR,
\fBwattr_off\fR,
\fBattr_on\fR,
\fBwattr_on\fR,
.\" .br
\fBattroff\fR,
\fBwattroff\fR,
\fBattron\fR,
\fBwattron\fR,
\fBattrset\fR,
\fBwattrset\fR,
\fBcolor_set\fR,
\fBwcolor_set\fR,
\fBstandend\fR,
\fBwstandend\fR,
\fBstandout\fR,
\fBwstandout\fR,
\fBattr_get\fR,
\fBwattr_get\fR,
\fBattr_off\fR,
\fBwattr_off\fR,
\fBattr_on\fR,
\fBwattr_on\fR,
\fBattr_set\fR,
\fBwattr_set\fR,
.\" .br
\fBchgat\fR,
\fBwchgat\fR,
\fBmvchgat\fR,
\fBmvwchgat\fR,
\fBPAIR_NUMBER\fR \- \fBcurses\fR character and window attribute control routines
.\" .br
\fBcolor_set\fR,
\fBwcolor_set\fR,
.\" .br
\fBstandend\fR,
\fBwstandend\fR,
\fBstandout\fR,
\fBwstandout\fR \- \fBcurses\fR character and window attribute control routines
.ad
.hy
.\" ---------------------------------------------------------------------------
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
\fBint attr_get(attr_t *\fP\fIattrs\fP\fB, short *\fP\fIpair\fP\fB, void *\fP\fIopts\fP\fB);\fR
.br
\fBint attroff(int attrs);\fR
\fBint wattr_get(WINDOW *\fP\fIwin\fP\fB, attr_t *\fP\fIattrs\fP\fB, short *\fP\fIpair\fP\fB,\fR \fBvoid *\fP\fIopts\fP\fB);\fR
.br
\fBint wattroff(WINDOW *win, int attrs);\fR
\fBint attr_set(attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void *\fP\fIopts\fP\fB);\fR
.br
\fBint attron(int attrs);\fR
\fBint wattr_set(WINDOW *\fP\fIwin\fP\fB, attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void *\fP\fIopts\fP\fB);\fR
.sp
\fBint attr_off(attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR
.br
\fBint wattron(WINDOW *win, int attrs);\fR
\fBint wattr_off(WINDOW *\fP\fIwin\fP\fB, attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR
.br
\fBint attrset(int attrs);\fR
\fBint attr_on(attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR
.br
\fBint wattrset(WINDOW *win, int attrs);\fR
\fBint wattr_on(WINDOW *\fP\fIwin\fP\fB, attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR
.sp
\fBint attroff(int \fP\fIattrs);\fR
.br
\fBint color_set(short color_pair_number, void* opts);\fR
\fBint wattroff(WINDOW *\fP\fIwin\fP\fB, int \fP\fIattrs\fP\fB);\fR
.br
\fBint wcolor_set(WINDOW *win, short color_pair_number,\fR
\fBvoid* opts);\fR
\fBint attron(int \fP\fIattrs\fP\fB);\fR
.br
\fBint wattron(WINDOW *\fP\fIwin\fP\fB, int \fP\fIattrs\fP\fB);\fR
.br
\fBint attrset(int \fP\fIattrs\fP\fB);\fR
.br
\fBint wattrset(WINDOW *\fP\fIwin\fP\fB, int \fP\fIattrs\fP\fB);\fR
.sp
\fBint chgat(int \fP\fIn\fP\fB, attr_t \fP\fIattr\fP\fB, short \fP\fIpair\fP\fB,\fR \fBconst void *\fP\fIopts\fP\fB);\fR
.br
\fBint wchgat(WINDOW *\fP\fIwin\fP\fB,\fP
\fBint \fP\fIn\fP\fB, attr_t \fP\fIattr\fP\fB,\fR \fBshort \fP\fIpair\fP\fB, const void *\fP\fIopts\fP\fB);\fR
.br
\fBint mvchgat(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB,\fP
\fBint \fP\fIn\fP\fB, attr_t \fP\fIattr\fP\fB,\fR \fBshort \fP\fIpair\fP\fB, const void *\fP\fIopts\fP\fB);\fR
.br
\fBint mvwchgat(WINDOW *\fP\fIwin, int \fP\fIy, int \fP\fIx\fP\fB,\fP
\fBint \fP\fIn,\fR \fBattr_t \fP\fIattr\fP\fB, short \fP\fIpair\fP\fB, const void *\fP\fIopts\fP\fB);\fR
.sp
\fBint color_set(short \fP\fIpair\fP\fB, void* \fP\fIopts\fP\fB);\fR
.br
\fBint wcolor_set(WINDOW *\fP\fIwin\fP\fB, short \fP\fIpair\fP\fB,\fR \fBvoid* \fP\fIopts);\fR
.sp
\fBint standend(void);\fR
.br
\fBint wstandend(WINDOW *win);\fR
\fBint wstandend(WINDOW *\fP\fIwin\fP\fB);\fR
.br
\fBint standout(void);\fR
.br
\fBint wstandout(WINDOW *win);\fR
.br
\fBint attr_get(attr_t *attrs, short *pair, void *opts);\fR
.br
\fBint wattr_get(WINDOW *win, attr_t *attrs, short *pair,\fR
\fBvoid *opts);\fR
.br
\fBint attr_off(attr_t attrs, void *opts);\fR
.br
\fBint wattr_off(WINDOW *win, attr_t attrs, void *opts);\fR
.br
\fBint attr_on(attr_t attrs, void *opts);\fR
.br
\fBint wattr_on(WINDOW *win, attr_t attrs, void *opts);\fR
.br
\fBint attr_set(attr_t attrs, short pair, void *opts);\fR
.br
\fBint wattr_set(WINDOW *win, attr_t attrs, short pair, void *opts);\fR
.br
\fBint chgat(int n, attr_t attr, short color,\fR
\fBconst void *opts)\fR
.br
\fBint wchgat(WINDOW *win, int n, attr_t attr,\fR
\fBshort color, const void *opts)\fR
.br
\fBint mvchgat(int y, int x, int n, attr_t attr,\fR
\fBshort color, const void *opts)\fR
.br
\fBint mvwchgat(WINDOW *win, int y, int x, int n,\fR
\fBattr_t attr, short color, const void *opts)\fR
.br
\fBint wstandout(WINDOW *\fP\fIwin\fP\fB);\fR
.\" ---------------------------------------------------------------------------
.SH DESCRIPTION
These routines manipulate the current attributes of the named window. The
current attributes of a window apply to all characters that are written into
the window with \fBwaddch\fR, \fBwaddstr\fR and \fBwprintw\fR. Attributes are
.PP
These routines manipulate the current attributes of the named window,
which then apply to all characters that are written into
the window with \fBwaddch\fR, \fBwaddstr\fR and \fBwprintw\fR.
Attributes are
a property of the character, and move with the character through any scrolling
and insert/delete line/character operations. To the extent possible, they are
and insert/delete line/character operations.
To the extent possible, they are
displayed as appropriate modifications to the graphic rendition of characters
put on the screen.
.PP
The routine \fBattrset\fR sets the current attributes of the given window to
\fIattrs\fR. The routine \fBattroff\fR turns off the named attributes without
turning any other attributes on or off. The routine \fBattron\fR turns on the
named attributes without affecting any others. The routine \fBstandout\fR is
the same as \fBattron(A_STANDOUT)\fR. The routine \fBstandend\fR is the same
as \fBattrset(A_NORMAL)\fR or \fBattrset(0)\fR, that is, it turns off all
attributes.
.PP
The \fBattrset\fR and related routines do not affect the attributes used
These routines do not affect the attributes used
when erasing portions of the window.
See \fBcurs_bkgd\fR(3X) for functions which modify the attributes used for
erasing and clearing.
.PP
The routine \fBcolor_set\fR sets the current color of the given window to the
foreground/background combination described by the color_pair_number. The
parameter opts is reserved for future use, applications must supply a null
pointer.
Routines which do not have a \fBWINDOW*\fP parameter apply to \fBstdscr\fP.
For example,
\fBattr_set\fP is the \fBstdscr\fP variant of \fBwattr_set\fP.
.\" ---------------------------------------------------------------------------
.SS Window attributes
.PP
The routine \fBwattr_get\fR returns the current attribute and color pair for
the given window; \fBattr_get\fR returns the current attribute and color pair
for \fBstdscr\fR.
The remaining \fBattr_\fR* functions operate exactly like the corresponding
\fBattr\fR* functions, except that they take arguments of type \fBattr_t\fR
rather than \fBint\fR.
There are two sets of functions:
.bP
functions for manipulating the window attributes and color:
\fBwattr_set\fP and \fBwattr_get\fP.
.bP
functions for manipulating only the window attributes (not color):
\fBwattr_on\fP and \fBwattr_off\fP.
.PP
The \fBwattr_set\fP function sets the current attributes
of the given window to \fIattrs\fP, with color specified by \fIpair\fP.
.PP
Use \fBwattr_get\fP to retrieve attributes for the given window.
.PP
Use \fBattr_on\fP and \fBwattr_on\fP to turn on window attributes, i.e.,
values OR'd together in \fIattr\fP,
without affecting other attributes.
Use \fBattr_off\fP and \fBwattr_off\fP to turn off window attributes,
again values OR'd together in \fIattr\fP,
without affecting other attributes.
.\" ---------------------------------------------------------------------------
.SS Legacy window attributes
The X/Open window attribute routines which \fIset\fP or \fIget\fP,
turn \fIon\fP or \fIoff\fP
are extensions of older routines
which assume that color pairs are OR'd into the attribute parameter.
These newer routines use similar names, because
X/Open simply added an underscore (\fB_\fP) for the newer names.
.PP
The \fBint\fP datatype used in the legacy routines is treated as if
it is the same size as \fBchtype\fP (used by \fBaddch\fP(3X)).
It holds the common video attributes (such as bold, reverse),
as well as a few bits for color.
Those bits correspond to the \fBA_COLOR\fP symbol.
The \fBCOLOR_PAIR\fP macro provides a value which can be OR'd into
the attribute parameter.
For example,
as long as that value fits into the \fBA_COLOR\fP mask,
then these calls produce similar results:
.NS
attrset(A_BOLD | COLOR_PAIR(\fIpair\fP));
attr_set(A_BOLD, \fIpair\fP, NULL);
.NE
.PP
However, if the value does not fit, then the \fBCOLOR_PAIR\fP macro
uses only the bits that fit.
For example, because in ncurses \fBA_COLOR\fP has eight (8) bits,
then \fBCOLOR_PAIR(\fP\fI259\fP\fB)\fP is 4
(i.e., 259 is 4 more than the limit 255).
.PP
The \fBPAIR_NUMBER\fP macro extracts a pair number from an \fBint\fP
(or \fBchtype\fP).
For example, the \fIinput\fP and \fIoutput\fP values in these statements
would be the same:
.NS
int value = A_BOLD | COLOR_PAIR(\fIinput\fP);
int \fIoutput\fP = PAIR_NUMBER(value);
.NE
.PP
The \fBattrset\fP routine is a legacy feature predating SVr4 curses
but kept in X/Open Curses for the same reason that SVr4 curses kept it:
compatibility.
.PP
The remaining \fBattr\fR* functions operate exactly like the corresponding
\fBattr_\fR* functions, except that they take arguments of type \fBint\fR
rather than \fBattr_t\fR.
.PP
There is no corresponding \fBattrget\fP function as such in X/Open Curses,
although ncurses provides \fBgetattrs\fP (see curs_legacy(3X)).
.\" ---------------------------------------------------------------------------
.SS Change character rendition
.PP
The routine \fBchgat\fR changes the attributes of a given number of characters
starting at the current cursor location of \fBstdscr\fR. It does not update
the cursor and does not perform wrapping. A character count of \-1 or greater
starting at the current cursor location of \fBstdscr\fR.
It does not update
the cursor and does not perform wrapping.
A character count of \-1 or greater
than the remaining window width means to change attributes all the way to the
end of the current line. The \fBwchgat\fR function generalizes this to any
window; the \fBmvwchgat\fR function does a cursor move before acting. In these
functions, the color argument is a color-pair index (as in the first argument
of \fIinit_pair\fR, see \fBcurs_color\fR(3X)). The \fBopts\fR argument is not
presently used, but is reserved for the future (leave it \fBNULL\fR).
.SS Attributes
end of the current line.
The \fBwchgat\fR function generalizes this to any window;
the \fBmvwchgat\fR function does a cursor move before acting.
.PP
In these functions,
the color \fIpair\fP argument is a color-pair index
(as in the first argument of \fBinit_pair\fR, see \fBcurs_color\fR(3X)).
.\" ---------------------------------------------------------------------------
.SS Change window color
The routine \fBcolor_set\fR sets the current color of the given window to the
foreground/background combination described by the color \fIpair\fP parameter.
.\" ---------------------------------------------------------------------------
.SS Standout
.PP
The routine \fBstandout\fR is
the same as \fBattron(A_STANDOUT)\fR.
The routine \fBstandend\fR is the same
as \fBattrset(A_NORMAL)\fR or \fBattrset(0)\fR, that is, it turns off all
attributes.
.PP
X/Open does not mark these \*(``restricted\*('', because
.bP
they have well established legacy use, and
.bP
there is no ambiguity about the way the attributes
might be combined with a color pair.
.\" ---------------------------------------------------------------------------
.SH VIDEO ATTRIBUTES
The following video attributes, defined in \fB<curses.h>\fR, can be passed to
the routines \fBattron\fR, \fBattroff\fR, and \fBattrset\fR, or OR'd with the
characters passed to \fBaddch\fR.
characters passed to \fBaddch\fR (see \fBcurs_addch\fR(3X)).
.PP
.RS
.TS
l l
l l
_ _ _
l l .
\fIName\fR \fIDescription\fR
@ -182,7 +292,7 @@ l l .
\fBA_ALTCHARSET\fR Alternate character set
\fBA_ITALIC\fR Italics (non-X/Open extension)
\fBA_CHARTEXT\fR Bit-mask to extract a character
\fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR Color-pair number \fIn\fR
\fBA_COLOR\fR Bit-mask to extract a color (legacy routines)
.TE
.RE
.PP
@ -190,7 +300,7 @@ These video attributes are supported by \fBattr_on\fP and related functions
(which also support the attributes recognized by \fBattron\fP, etc.):
.RS
.TS
l l
l l
_ _ _
l l .
\fIName\fR \fIDescription\fR
@ -203,59 +313,226 @@ l l .
.TE
.RE
.PP
For consistency
.PP
The following macro is the reverse of \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR:
.PP
.br
\fBPAIR_NUMBER(\fR\fIattrs\fR) Returns the pair number associated
with the \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR attribute.
.br
.PP
The return values of many of these routines are not meaningful (they are
implemented as macro-expanded assignments and simply return their argument).
The SVr4 manual page claims (falsely) that these routines always return \fB1\fR.
.\" ---------------------------------------------------------------------------
.SH NOTES
Note that \fBattroff\fR, \fBwattroff\fR, \fBattron\fR, \fBwattron\fR,
\fBattrset\fR, \fBwattrset\fR, \fBstandend\fR and \fBstandout\fR may be macros.
These functions may be macros:
.sp
.RS
\fBattroff\fR, \fBwattroff\fR, \fBattron\fR, \fBwattron\fR,
\fBattrset\fR, \fBwattrset\fR, \fBstandend\fR and \fBstandout\fR.
.RE
.PP
\fBCOLOR_PAIR\fP values can only be OR'd with attributes if the pair
Color pair values can only be OR'd with attributes if the pair
number is less than 256.
The alternate functions such as \fBcolor_set\fP can pass a color pair
value directly.
However, ncurses ABI 4 and 5 simply OR this value within the alternate functions.
However, ncurses ABI 4 and 5 simply OR this value
within the alternate functions.
You must use ncurses ABI 6 to support more than 256 color pairs.
.\" ---------------------------------------------------------------------------
.SH HISTORY
X/Open Curses is largely based on SVr4 curses,
adding support for \*(``wide-characters\*('' (not specific to Unicode).
Some of the X/Open differences from SVr4 curses address the way
video attributes can be applied to wide-characters.
But aside from that, \fBattrset\fP and \fBattr_set\fP are similar.
SVr4 curses provided the basic features for manipulating video attributes.
However, earlier versions of curses provided a part of these features.
.PP
As seen in 2.8BSD, curses assumed 7-bit characters,
using the eighth bit of a byte to represent the \fIstandout\fP
feature (often implemented as bold and/or reverse video).
The BSD curses library provided functions \fBstandout\fP and \fBstandend\fP
which were carried along into X/Open Curses due to their pervasive use
in legacy applications.
.PP
Some terminals in the 1980s could support a variety of video attributes,
although the BSD curses library could do nothing with those.
System V (1983) provided an improved curses library.
It defined the \fBA_\fP symbols for use by applications to manipulate the
other attributes.
There are few useful references for the chronology.
.PP
Goodheart's book
\fIUNIX Curses Explained\fP (1991) describes SVr3 (1987),
commenting on several functions:
.bP
the \fBattron\fP, \fBattroff\fP, \fBattrset\fP functions
(and most of the functions found in SVr4 but not in BSD curses) were
introduced by System V,
.bP
the alternate character set feature with \fBA_ALTCHARSET\fP was
added in SVr2 and improved in SVr3 (by adding \fBacs_map[]\fP),
.bP
\fBstart_color\fP and related color-functions were introduced by System V.3.2,
.bP
pads, soft-keys were added in SVr3, and
.PP
Goodheart did not mention the background character or the \fBcchar_t\fP type.
Those are respectively SVr4 and X/Open features.
He did mention the \fBA_\fP constants, but did not indicate their values.
Those were not the same in different systems,
even for those marked as System V.
.PP
Different Unix systems used different sizes for the bit-fields in \fBchtype\fP
for \fIcharacters\fP and \fIcolors\fP, and took into account the different
integer sizes (32-bit versus 64-bit).
.PP
This table showing the number of bits for \fBA_COLOR\fP
and \fBA_CHARTEXT\fP
was gleaned from the curses header files for
various operating systems and architectures.
The inferred architecture and notes reflect
the format and size of the defined constants
as well as clues such as the alternate character set implementation.
A 32-bit library can be used on a 64-bit system,
but not necessarily the reverse.
.RS
.TS
l l l l l l
_ _ _ _ _ _
l l l l l l .
\fIYear\fR \fISystem\fR \fIArch\fP \fIColor\fR \fIChar\fR \fINotes\fR
1992 Solaris 5.2 32 6 17 SVr4 curses
1992 HPUX 9 32 no 8 SVr2 curses
1992 AIX 3.2 32 no 23 SVr2 curses
1994 OSF/1 r3 32 no 23 SVr2 curses
1995 HP-UX 10.00 32 6 16 SVr3 \*(``curses_colr\*(''
1995 HP-UX 10.00 32 6 8 SVr4, X/Open curses
1995 Solaris 5.4 32/64 7 16 X/Open curses
1996 AIX 4.2 32 7 16 X/Open curses
1996 OSF/1 r4 32 6 16 X/Open curses
1997 HP-UX 11.00 32 6 8 X/Open curses
2000 U/Win 32/64 7/31 16 uses \fBchtype\fP
.TE
.RE
.PP
Notes:
.RS 3
.PP
Regarding HP-UX,
.bP
HP-UX 10.20 (1996) added support for 64-bit PA-RISC processors in 1996.
.bP
HP-UX 10.30 (1997) marked \*(``curses_colr\*('' obsolete.
That version of curses was dropped with HP-UX 11.30 in 2006.
.PP
Regarding OSF/1 (and Tru64),
.bP
These used 64-bit hardware.
Like ncurses, the OSF/1 curses interface is not customized for 32-bit
and 64-bit versions.
.bP
Unlike other systems which evolved from AT&T code,
OSF/1 provided a new implementation for X/Open curses.
.PP
Regarding Solaris,
.bP
The initial release of Solaris was in 1992.
.bP
The \fIxpg4\fP (X/Open) curses was developed by MKS from 1990 to 1995.
Sun's copyright began in 1996.
.bP
Sun updated the X/Open curses interface
after 64-bit support was introduced in 1997,
but did not modify the SVr4 curses interface.
.PP
Regarding U/Win,
.bP
Development of the curses library began in 1991, stopped in 2000.
.bP
Color support was added in 1998.
.bP
The library uses only \fBchtype\fP (no \fBcchar_t\fP).
.RE
.PP
Once X/Open curses was adopted in the mid-1990s, the constraint of
a 32-bit interface with many colors and wide-characters for \fBchtype\fP
became a moot point.
The \fBcchar_t\fP structure (whose size and
members are not specified in X/Open Curses) could be extended as needed.
.PP
Other interfaces are rarely used now:
.bP
BSD curses was improved slightly in 1993/1994 using Keith Bostic's
modification to make the library 8-bit clean for \fBnvi\fP.
He moved \fIstandout\fP attribute to a structure member.
.IP
The resulting 4.4BSD curses was replaced by ncurses over the next ten years.
.bP
U/Win is rarely used now.
.\" ---------------------------------------------------------------------------
.SH EXTENSIONS
.PP
This implementation provides the \fBA_ITALIC\fP attribute for terminals
which have the \fBenter_italics_mode\fP (\fBsitm\fP)
and \fBexit_italics_mode\fP (\fBritm\fP) capabilities.
Italics are not mentioned in X/Open Curses.
Unlike the other video attributes, \fBA_ITALIC\fP is unrelated
to the \fBset_attributes\fP capabilities.
This implementation makes the assumption that
\fBexit_attribute_mode\fP may also reset italics.
.PP
Each of the functions added by XSI Curses has a parameter \fIopts\fP,
which X/Open Curses still (after more than twenty years) documents
as reserved for future use, saying that it should be \fBNULL\fP.
This implementation uses that parameter in ABI 6 for the functions which
have a color-pair parameter to support \fIextended color pairs\fP:
.bP
For functions which modify the color, e.g.,
\fBwattr_set\fP,
if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
and used to set the color pair instead of the \fBshort\fP \fIpair\fP parameter.
.bP
For functions which retrieve the color, e.g.,
\fBwattr_get\fP,
if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
and used to retrieve the color pair as an \fBint\fP value,
in addition
retrieving it via the standard pointer to \fBshort\fP parameter.
.PP
The remaining functions which have \fIopts\fP,
but do not manipulate color,
e.g., \fBwattr_on\fP and \fBwattr_off\fP
are not used by this implementation except to check that they are \fBNULL\fP.
.\" ---------------------------------------------------------------------------
.SH PORTABILITY
These functions are supported in the XSI Curses standard, Issue 4. The
standard defined the dedicated type for highlights, \fBattr_t\fR, which is not
defined in SVr4 curses. The functions taking \fBattr_t\fR arguments are
not supported under SVr4.
These functions are supported in the XSI Curses standard, Issue 4.
The standard defined the dedicated type for highlights,
\fBattr_t\fR, which was not defined in SVr4 curses.
The functions taking \fBattr_t\fR arguments were not supported under SVr4.
.PP
Very old versions of this library did not force an update of the screen
when changing the attributes.
Use \fBtouchwin\fR to force the screen to match the updated attributes.
.PP
The XSI Curses standard states that whether the traditional functions
\fBattron\fR/\fBattroff\fR/\fBattrset\fR can manipulate attributes other than
\fBA_BLINK\fR, \fBA_BOLD\fR, \fBA_DIM\fR, \fBA_REVERSE\fR, \fBA_STANDOUT\fR, or
\fBA_UNDERLINE\fR is "unspecified". Under this implementation as well as
\fBA_UNDERLINE\fR is \*(``unspecified\*(''.
Under this implementation as well as
SVr4 curses, these functions correctly manipulate all other highlights
(specifically, \fBA_ALTCHARSET\fR, \fBA_PROTECT\fR, and \fBA_INVIS\fR).
.PP
This implementation provides the \fBA_ITALIC\fP attribute for terminals
which have the \fIenter_italics_mode\fP (sitm) and \fIexit_italics_mode\fP (ritm) capabilities.
Italics are not mentioned in X/Open Curses.
Unlike the other video attributes, \fBI_ITALIC\fP is unrelated
to the \fIset_attributes\fP capabilities.
This implementation makes the assumption that
\fIexit_attribute_mode\fP may also reset italics.
.PP
XSI Curses added the new entry points, \fBattr_get\fR, \fBattr_on\fR,
XSI Curses added these entry points:
.sp
.RS
\fBattr_get\fR, \fBattr_on\fR,
\fBattr_off\fR, \fBattr_set\fR, \fBwattr_on\fR, \fBwattr_off\fR,
\fBwattr_get\fR, \fBwattr_set\fR. These are intended to work with
\fBwattr_get\fR, \fBwattr_set\fR
.RE
.PP
The new functions are intended to work with
a new series of highlight macros prefixed with \fBWA_\fR.
The older macros have direct counterparts in the newer set of names:
.PP
.RS
.ne 9
.TS
l l
l l
_ _ _
l l .
\fIName\fR \fIDescription\fR
@ -270,13 +547,26 @@ l l .
.TE
.RE
.PP
Older versions of this library did not force an update of the screen
when changing the attributes.
Use \fBtouchwin\fR to force the screen to match the updated attributes.
.PP
XSI curses does not assign values to these symbols,
nor does it state whether or not they are related to the
similarly-named A_NORMAL, etc.:
.bP
The XSI curses standard specifies that each pair of corresponding \fBA_\fR
and \fBWA_\fR-using functions operates on the same current-highlight
information.
.bP
However, in some implementations, those symbols have unrelated values.
.IP
For example, the Solaris \fIxpg4\fP (X/Open) curses declares
\fBattr_t\fP to be an unsigned short integer (16-bits),
while \fBchtype\fP is a unsigned integer (32-bits).
The \fBWA_\fP symbols in this case are different from the \fBA_\fP symbols
because they are used for a smaller datatype which does not
represent \fBA_CHARTEXT\fP or \fBA_COLOR\fP.
.IP
In this implementation (as in many others), the values happen to be
the same because it simplifies copying information between
\fBchtype\fP and \fBcchar_t\fP variables.
.PP
The XSI standard extended conformance level adds new highlights
\fBA_HORIZONTAL\fR, \fBA_LEFT\fR, \fBA_LOW\fR, \fBA_RIGHT\fR, \fBA_TOP\fR,
@ -284,23 +574,28 @@ The XSI standard extended conformance level adds new highlights
As of August 2013,
no known terminal provides these highlights
(i.e., via the \fBsgr1\fP capability).
.\" ---------------------------------------------------------------------------
.SH RETURN VALUE
All routines return the integer \fBOK\fR on success, or \fBERR\fP on failure.
.PP
X/Open does not define any error conditions.
.PP
This implementation returns an error
if the window pointer is null.
The \fBwcolor_set\fP function returns an error if the color pair parameter
is outside the range 0..COLOR_PAIRS\-1.
This implementation also provides
\fBgetattrs\fR
for compatibility with older versions of curses.
This implementation
.bP
returns an error if the window pointer is null.
.bP
returns an error if the color pair parameter
for \fBwcolor_set\fP is outside the range 0..COLOR_PAIRS\-1.
.bP
does not return an error if either of the parameters of \fBwattr_get\fP
used for retrieving attribute or color-pair values is \fBNULL\fP.
.PP
Functions with a "mv" prefix first perform a cursor movement using
Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.\" ---------------------------------------------------------------------------
.SH SEE ALSO
.na
\fBcurses\fR(3X),
\fBcurs_addch\fR(3X),
\fBcurs_addstr\fR(3X),

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2010,2018 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 *
@ -26,7 +26,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_beep.3x,v 1.12 2010/12/04 18:36:44 tom Exp $
.\" $Id: curs_beep.3x,v 1.13 2018/07/28 21:34:06 tom Exp $
.TH curs_beep 3X ""
.SH NAME
\fBbeep\fR, \fBflash\fR \- \fBcurses\fR bell and screen flash routines
@ -40,9 +40,12 @@
.SH DESCRIPTION
The \fBbeep\fR and \fBflash\fR routines are used to alert the terminal user.
The routine \fBbeep\fR sounds an audible alarm on the terminal, if possible;
otherwise it flashes the screen (visible bell). The routine \fBflash\fR
flashes the screen, and if that is not possible, sounds the alert. If neither
alert is possible, nothing happens. Nearly all terminals have an audible alert
otherwise it flashes the screen (visible bell).
The routine \fBflash\fR
flashes the screen, and if that is not possible, sounds the alert.
If neither
alert is possible, nothing happens.
Nearly all terminals have an audible alert
(bell or beep), but only some can flash the screen.
.SH RETURN VALUE
These routines return \fBOK\fR if they succeed in beeping or flashing,

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2003,2010 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2018,2019 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 *
@ -26,7 +26,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_bkgd.3x,v 1.22 2010/12/04 18:36:44 tom Exp $
.\" $Id: curs_bkgd.3x,v 1.29 2019/07/13 21:01:06 tom Exp $
.de bP
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.TH curs_bkgd 3X ""
.SH NAME
\fBbkgdset\fR, \fBwbkgdset\fR,
@ -35,57 +39,121 @@
.SH SYNOPSIS
\fB#include <curses.h>\fR
.PP
\fBvoid bkgdset(chtype ch);\fR
\fBvoid bkgdset(chtype \fP\fIch\fP\fB);\fR
.br
\fBvoid wbkgdset(WINDOW *win, chtype ch);\fR
\fBvoid wbkgdset(WINDOW *\fP\fIwin, chtype \fP\fIch\fP\fB);\fR
.br
\fBint bkgd(chtype ch);\fR
\fBint bkgd(chtype \fP\fIch\fP\fB);\fR
.br
\fBint wbkgd(WINDOW *win, chtype ch);\fR
\fBint wbkgd(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIch\fP\fB);\fR
.br
\fBchtype getbkgd(WINDOW *win);\fR
\fBchtype getbkgd(WINDOW *\fP\fIwin\fP\fB);\fR
.br
.SH DESCRIPTION
.SS bkgdset
The \fBbkgdset\fR and \fBwbkgdset\fR routines manipulate the
background of the named window.
The window background is a \fBchtype\fR consisting of
any combination of attributes (i.e., rendition) and a character.
The attribute part of the background is combined (OR'ed) with all non-blank
characters that are written into the window with \fBwaddch\fR. Both
the character and attribute parts of the background are combined with
the blank characters. The background becomes a property of the
characters that are written into the window with \fBwaddch\fR.
Both the character and attribute parts of the background are combined with
the blank characters.
The background becomes a property of the
character and moves with the character through any scrolling and
insert/delete line/character operations.
.PP
To the extent possible on a particular terminal,
the attribute part of the background is displayed
as the graphic rendition of the character put on the screen.
.SS bkgd
.PP
The \fBbkgd\fR and \fBwbkgd\fR functions
set the background property of the current or specified window
and then apply this setting to every character position in that window:
and then apply this setting to every character position in that window.
According to X/Open Curses, it should do this:
.PP
.RS
.bP
The rendition of every character on the screen is changed to
the new background rendition.
.PP
.bP
Wherever the former background character
appears, it is changed to the new background character.
.RE
.PP
Neither X/Open Curses nor the SVr4 manual pages give details about
the way the rendition of characters on the screen is updated when
\fBbkgd\fP or \fBwbkgd\fP is used to change the background character.
.PP
This implementation, like SVr4 curses, does not store the background
and window attribute contributions to each cell separately.
It updates the rendition by comparing the character, non-color attributes and
colors contained in the background.
For each cell in the window, whether or not it is blank:
.bP
The library first compares the \fIcharacter\fP,
and if it matches the current character part of the background,
it replaces that with the new background character.
.bP
The library then checks if the cell uses color,
i.e., its color pair value is nonzero.
If not, it simply replaces the attributes and color pair in the
cell with those from the new background character.
.bP
If the cell uses color,
and that matches the color in the current background,
the library removes attributes
which may have come from the current background
and adds attributes from the new background.
It finishes by setting the cell
to use the color from the new background.
.bP
If the cell uses color,
and that does not match the color in the current background,
the library updates only the non-color attributes,
first removing those which may have come from the current background,
and then adding attributes from the new background.
.PP
If the background's character value is zero, a space is assumed.
.PP
If the terminal does not support color,
or if color has not been started with \fBstart_color\fP,
the new background character's color attribute will be ignored.
.SS getbkgd
.PP
The \fBgetbkgd\fR function returns the given window's current background
character/attribute pair.
.SH RETURN VALUE
The routines \fBbkgd\fR and \fBwbkgd\fR return the integer \fBOK\fR.
The SVr4.0 manual says "or a non-negative integer if \fBimmedok\fR is set",
but this appears to be an error.
.SH NOTES
Note that \fBbkgdset\fR and \fBbkgd\fR may be macros.
.SH PORTABILITY
.PP
These functions are described in the XSI Curses standard, Issue 4.
It specifies that \fBbkgd\fR and \fBwbkgd\fR return \fBERR\fR on failure,
but gives no failure conditions.
.PP
The routines \fBbkgd\fR and \fBwbkgd\fR return the integer \fBOK\fR,
unless the library has not been initialized.
.PP
In contrast,
the SVr4.0 manual says \fBbkgd\fR and \fBwbkgd\fR may return \fBOK\fP
"or a non-negative integer if \fBimmedok\fR is set",
which refers to the return value from \fBwrefresh\fP
(used to implement the immediate repainting).
The SVr4 curses \fBwrefresh\fP returns the number of characters
written to the screen during the refresh.
This implementation does not do that.
.SH NOTES
.PP
Note that \fBbkgdset\fR and \fBbkgd\fR may be macros.
.PP
X/Open Curses mentions that the character part of the background must
be a single-byte value.
This implementation, like SVr4, checks to ensure that,
and will reuse the old background character if the check fails.
.SH PORTABILITY
.PP
These functions are described in the XSI Curses standard, Issue 4
(X/Open Curses).
.SH SEE ALSO
.na
.PP
\fBcurses\fR(3X),
\fBcurs_addch\fR(3X),
\fBcurs_attr\fR(3X),

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc. *
.\" Copyright (c) 2002-2017,2018 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 *
@ -26,7 +26,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_bkgrnd.3x,v 1.5 2012/11/03 23:03:59 tom Exp $
.\" $Id: curs_bkgrnd.3x,v 1.10 2018/12/09 00:50:50 tom Exp $
.de bP
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.TH curs_bkgrnd 3X ""
.SH NAME
\fBbkgrnd\fR,
@ -52,12 +56,15 @@
\fBint wgetbkgrnd(WINDOW *\fR\fIwin\fR\fB, cchar_t *\fR\fIwch\fR\fB);\fR
.br
.SH DESCRIPTION
.SS bkgrndset
.PP
The \fBbkgrndset\fR and \fBwbkgrndset\fR routines manipulate the
background of the named window.
The window background is a \fBcchar_t\fR consisting of
any combination of attributes (i.e., rendition) and a complex character.
The attribute part of the background is combined (OR'ed) with all non-blank
characters that are written into the window with \fBwaddch\fR. Both
characters that are written into the window with \fBwaddch\fR.
Both
the character and attribute parts of the background are combined with
the blank characters.
The background becomes a property of the
@ -67,34 +74,47 @@ insert/delete line/character operations.
To the extent possible on a
particular terminal, the attribute part of the background is displayed
as the graphic rendition of the character put on the screen.
.SS bkgrnd
.PP
The \fBbkgrnd\fR and \fBwbkgrnd\fR functions
set the background property of the current or specified window
and then apply this setting to every character position in that window:
.RS
.PP
.bP
The rendition of every character on the screen is changed to
the new background rendition.
.PP
.bP
Wherever the former background character
appears, it is changed to the new background character.
.RE
.SS getbkgrnd
.PP
The \fBgetbkgrnd\fR function returns the given window's current background
character/attribute pair via the \fBwch\fR pointer.
.
If the given window pointer is null,
the character is not updated (but no error returned).
.SH NOTES
Note that
\fBbkgrnd\fR,
\fBbkgrndset\fR, and
\fBgetbkgrnd\fR
may be macros.
.PP
X/Open Curses does not provide details on how the rendition is changed.
This implementation follows the approach used in SVr4 curses,
which is explained in the manual page for \fBwbkgd\fP.
.SH RETURN VALUE
.PP
The \fBbkgrndset\fR and \fBwbkgrndset\fR routines do not return a value.
.PP
Upon successful completion, the other functions return \fBOK\fR.
Otherwise, they return \fBERR\fR.
Otherwise, they return \fBERR\fR:
.bP
A null window pointer is treated as an error.
.bP
A null character pointer is treated as an error.
.SH PORTABILITY
.PP
These functions are described in the XSI Curses standard, Issue 4
(X/Open Curses).
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_bkgd\fR(3X)

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2018,2019 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 *
@ -26,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_border.3x,v 1.22 2010/12/04 18:36:44 tom Exp $
.\" $Id: curs_border.3x,v 1.24 2019/11/30 21:06:30 tom Exp $
.TH curs_border 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.na
.hy 0
.SH NAME
@ -121,23 +125,28 @@ for the following call: \fBwborder(\fR\fIwin\fR\fB,\fR \fIverch\fR\fB,\fR
\fIverch\fR\fB,\fR \fIhorch\fR\fB,\fR \fIhorch\fR\fB, 0, 0, 0, 0)\fR.
.PP
The \fBhline\fR and \fBwhline\fR functions draw a horizontal (left to right)
line using \fIch\fR starting at the current cursor position in the window. The
current cursor position is not changed. The line is at most \fIn\fR characters
line using \fIch\fR starting at the current cursor position in the window.
The
current cursor position is not changed.
The line is at most \fIn\fR characters
long, or as many as fit into the window.
.PP
The \fBvline\fR and \fBwvline\fR functions draw a vertical (top to bottom) line
using \fIch\fR starting at the current cursor position in the window. The
current cursor position is not changed. The line is at most \fIn\fR characters
using \fIch\fR starting at the current cursor position in the window.
The
current cursor position is not changed.
The line is at most \fIn\fR characters
long, or as many as fit into the window.
.SH RETURN VALUE
All routines return the integer \fBOK\fR. The SVr4.0 manual says "or a
All routines return the integer \fBOK\fR.
The SVr4.0 manual says "or a
non-negative integer if \fBimmedok\fR is set", but this appears to be an error.
.PP
X/Open does not define any error conditions.
This implementation returns an error
if the window pointer is null.
.PP
Functions with a "mv" prefix first perform a cursor movement using
Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 2002-2011,2012 Free Software Foundation, Inc. *
.\" Copyright (c) 2002-2012,2019 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 *
@ -26,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_border_set.3x,v 1.11 2012/11/03 23:03:59 tom Exp $
.\" $Id: curs_border_set.3x,v 1.12 2019/11/30 21:06:30 tom Exp $
.TH curs_border_set 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.na
.hy 0
.SH NAME
@ -196,7 +200,7 @@ Otherwise, they return
.PP
Functions using a window parameter return an error if it is null.
.PP
Functions with a "mv" prefix first perform a cursor movement using
Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH SEE ALSO

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2016,2018 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 *
@ -26,7 +26,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_clear.3x,v 1.14 2010/12/04 18:36:44 tom Exp $
.\" $Id: curs_clear.3x,v 1.16 2018/07/28 21:34:06 tom Exp $
.TH curs_clear 3X ""
.na
.hy 0
@ -70,7 +70,8 @@ cleared completely on the next call to \fBwrefresh\fR for that window
and repainted from scratch.
.PP
The \fBclrtobot\fR and \fBwclrtobot\fR routines erase from the cursor to the
end of screen. That is, they erase all lines below the cursor in the window.
end of screen.
That is, they erase all lines below the cursor in the window.
Also, the current line to the right of the cursor, inclusive, is erased.
.PP
The \fBclrtoeol\fR and \fBwclrtoeol\fR routines erase the current line
@ -90,18 +91,20 @@ functions using a window pointer parameter return an error if it is null.
Note that \fBerase\fR, \fBwerase\fR, \fBclear\fR, \fBwclear\fR,
\fBclrtobot\fR, and \fBclrtoeol\fR may be macros.
.SH PORTABILITY
These functions are described in the XSI Curses standard, Issue 4. The
These functions are described in the XSI Curses standard, Issue 4.
The
standard specifies that they return \fBERR\fR on failure, but specifies no
error conditions.
.PP
Some historic curses implementations had, as an undocumented feature, the
ability to do the equivalent of \fBclearok(..., 1)\fR by saying
\fBtouchwin(stdscr)\fR or \fBclear(stdscr)\fR. This will not work under
\fBtouchwin(stdscr)\fR or \fBclear(stdscr)\fR.
This will not work under
ncurses.
.PP
This implementation, and others such as Solaris,
sets the current position to 0,0 after erasing
via \fBwerase()\fP and \fBwclear()\fP.
via \fBwerase\fP and \fBwclear\fP.
That fact is not documented in other implementations,
and may not be true of implementations
which were not derived from SVr4 source.

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2018,2019 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 *
@ -26,136 +26,145 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_color.3x,v 1.35 2010/12/20 00:50:58 tom Exp $
.\" $Id: curs_color.3x,v 1.61 2019/01/20 17:04:08 tom Exp $
.TH curs_color 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
.IP \(bu 4
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.ds n 5
.na
.hy 0
.SH NAME
\fBstart_color\fR,
\fBinit_pair\fR,
\fBinit_color\fR,
\fBhas_colors\fR,
\fBcan_change_color\fR,
\fBinit_pair\fR,
\fBinit_color\fR,
\fBinit_extended_pair\fR,
\fBinit_extended_color\fR,
\fBcolor_content\fR,
\fBpair_content\fR,
\fBCOLOR_PAIR\fR \- \fBcurses\fR color manipulation routines
\fBextended_color_content\fR,
\fBextended_pair_content\fR,
\fBreset_color_pairs\fR,
\fBCOLOR_PAIR\fR,
\fBPAIR_NUMBER\fR \- \fBcurses\fR color manipulation routines
.ad
.hy
.SH SYNOPSIS
\fB# include <curses.h>\fR
\fB#include <curses.h>\fR
.sp
\fBint start_color(void);\fR
.sp
\fBbool has_colors(void);\fR
.br
\fBbool can_change_color(void);\fR
.sp
\fBint init_pair(short pair, short f, short b);\fR
.br
\fBint init_color(short color, short r, short g, short b);\fR
.br
\fBbool has_colors(void);\fR
/* extensions */
.br
\fBbool can_change_color(void);\fR
\fBint init_extended_pair(int pair, int f, int b);\fR
.br
\fBint init_extended_color(int color, int r, int g, int b);\fR
.sp
\fBint color_content(short color, short *r, short *g, short *b);\fR
.br
\fBint pair_content(short pair, short *f, short *b);\fR
.br
/* extensions */
.br
\fBint extended_color_content(int color, int *r, int *g, int *b);\fR
.br
\fBint extended_pair_content(int pair, int *f, int *b);\fR
.sp
/* extensions */
.br
\fBvoid reset_color_pairs(void);\fR
.sp
\fBint COLOR_PAIR(int n);\fR
.br
\fBPAIR_NUMBER(\fR\fIattrs\fR\fB);\fP
.br
.SH DESCRIPTION
.SS Overview
\fBcurses\fR support color attributes on terminals with that capability. To
use these routines \fBstart_color\fR must be called, usually right after
\fBinitscr\fR. Colors are always used in pairs (referred to as color-pairs).
\fBcurses\fR supports color attributes on terminals with that capability.
To use these routines \fBstart_color\fR must be called, usually right after
\fBinitscr\fR.
Colors are always used in pairs (referred to as color-pairs).
A color-pair consists of a foreground color (for characters) and a background
color (for the blank field on which the characters are displayed). A
programmer initializes a color-pair with the routine \fBinit_pair\fR. After it
has been initialized, \fBCOLOR_PAIR\fR(\fIn\fR), a macro defined in
\fB<curses.h>\fR, can be used as a new video attribute.
color (for the blank field on which the characters are displayed).
A programmer initializes a color-pair with the routine \fBinit_pair\fR.
After it has been initialized, \fBCOLOR_PAIR\fR(\fIn\fR)
can be used to convert the pair to a video attribute.
.PP
If a terminal is capable of redefining colors, the programmer can use the
routine \fBinit_color\fR to change the definition of a color. The routines
\fBhas_colors\fR and \fBcan_change_color\fR return \fBTRUE\fR or \fBFALSE\fR,
routine \fBinit_color\fR to change the definition of a color.
The routines \fBhas_colors\fR and \fBcan_change_color\fR
return \fBTRUE\fR or \fBFALSE\fR,
depending on whether the terminal has color capabilities and whether the
programmer can change the colors. The routine \fBcolor_content\fR allows a
programmer can change the colors.
The routine \fBcolor_content\fR allows a
programmer to extract the amounts of red, green, and blue components in an
initialized color. The routine \fBpair_content\fR allows a programmer to find
initialized color.
The routine \fBpair_content\fR allows a programmer to find
out how a given color-pair is currently defined.
.SS Routine Descriptions
The \fBstart_color\fR routine requires no arguments. It must be
called if the programmer wants to use colors, and before any other
color manipulation routine is called. It is good practice to call
this routine right after \fBinitscr\fR. \fBstart_color\fR initializes
eight basic colors (black, red, green, yellow, blue, magenta, cyan,
and white), and two global variables, \fBCOLORS\fR and
\fBCOLOR_PAIRS\fR (respectively defining the maximum number of colors
and color-pairs the terminal can support). It also restores the
colors on the terminal to the values they had when the terminal was
just turned on.
.PP
The \fBinit_pair\fR routine changes the definition of a color-pair. It takes
three arguments: the number of the color-pair to be changed, the foreground
color number, and the background color number.
For portable applications:
.SS Color Rendering
The \fBcurses\fP library combines these inputs to produce the
actual foreground and background colors shown on the screen:
.bP
The value of the first argument
must be between \fB1\fR and \fBCOLOR_PAIRS\-1\fR,
except that if default colors are used (see \fBuse_default_colors\fP)
the upper limit is adjusted to allow for extra pairs which use
a default color in foreground and/or background.
per-character video attributes (e.g., via \fBwaddch\fP),
.bP
The value of the second and
third arguments must be between 0 and \fBCOLORS\fR.
Color pair 0 is assumed to be white on black,
but is actually whatever the terminal implements before color is initialized.
It cannot be modified by the application.
the window attribute (e.g., by \fBwattrset\fP), and
.bP
the background character (e.g., \fBwbkgdset\fP).
.PP
If the color-pair was previously
initialized, the screen is refreshed and all occurrences of that color-pair
are changed to the new definition.
Per-character and window attributes are usually set by a parameter containing
video attributes including a color pair value.
Some functions such as \fBwattr_set\fP use a separate parameter which
is the color pair number.
.PP
As an extension, ncurses allows you to set color pair 0 via
the \fBassume_default_colors\fR routine, or to specify the use of
default colors (color number \fB\-1\fR) if you first invoke the
\fBuse_default_colors\fR routine.
The background character is a special case: it includes a character value,
just as if it were passed to \fBwaddch\fP.
.PP
The \fBinit_color\fR routine changes the definition of a color. It takes four
arguments: the number of the color to be changed followed by three RGB values
(for the amounts of red, green, and blue components). The value of the first
argument must be between \fB0\fR and \fBCOLORS\fR. (See the section
\fBColors\fR for the default color index.) Each of the last three arguments
must be a value between 0 and 1000. When \fBinit_color\fR is used, all
occurrences of that color on the screen immediately change to the new
definition.
The \fBcurses\fP library does the actual work of combining these color
pairs in an internal function called from \fBwaddch\fP:
.bP
If the parameter passed to \fBwaddch\fP is \fIblank\fP,
and it uses the special color pair 0,
.RS
.bP
\fBcurses\fP next checks the window attribute.
.bP
If the window attribute does not use color pair 0,
\fBcurses\fP uses the color pair from the window attribute.
.bP
Otherwise, \fBcurses\fP uses the background character.
.RE
.bP
If the parameter passed to \fBwaddch\fP is \fInot blank\fP,
or it does not use the special color pair 0,
\fBcurses\fP prefers the color pair from the parameter,
if it is nonzero.
Otherwise, it tries the window attribute next, and finally the
background character.
.PP
The \fBhas_colors\fR routine requires no arguments. It returns \fBTRUE\fR if
the terminal can manipulate colors; otherwise, it returns \fBFALSE\fR. This
routine facilitates writing terminal-independent programs. For example, a
programmer can use it to decide whether to use color or some other video
attribute.
Some \fBcurses\fP functions such as \fBwprintw\fP call \fBwaddch\fP.
Those do not combine its parameter with a color pair.
Consequently those calls use only the window attribute or
the background character.
.SH CONSTANTS
.PP
The \fBcan_change_color\fR routine requires no arguments. It returns
\fBTRUE\fR if the terminal supports colors and can change their definitions;
other, it returns \fBFALSE\fR. This routine facilitates writing
terminal-independent programs.
.PP
The \fBcolor_content\fR routine gives programmers a way to find the intensity
of the red, green, and blue (RGB) components in a color. It requires four
arguments: the color number, and three addresses of \fBshort\fRs for storing
the information about the amounts of red, green, and blue components in the
given color. The value of the first argument must be between 0 and
\fBCOLORS\fR. The values that are stored at the addresses pointed to by the
last three arguments are between 0 (no component) and 1000 (maximum amount of
component).
.PP
The \fBpair_content\fR routine allows programmers to find out what colors a
given color-pair consists of. It requires three arguments: the color-pair
number, and two addresses of \fBshort\fRs for storing the foreground and the
background color numbers. The value of the first argument must be between 1
and \fBCOLOR_PAIRS\-1\fR. The values that are stored at the addresses pointed
to by the second and third arguments are between 0 and \fBCOLORS\fR.
.SS Colors
In \fB<curses.h>\fR the following macros are defined. These are the default
colors. \fBcurses\fR also assumes that \fBCOLOR_BLACK\fR is the default
In \fB<curses.h>\fR the following macros are defined.
These are the standard colors (ISO-6429).
\fBcurses\fR also assumes that \fBCOLOR_BLACK\fR is the default
background color for all terminals.
.PP
.nf
@ -168,55 +177,293 @@ background color for all terminals.
\fBCOLOR_CYAN\fR
\fBCOLOR_WHITE\fR
.fi
.PP
Some terminals support more than the eight (8) \*(``ANSI\*('' colors.
There are no standard names for those additional colors.
.SH VARIABLES
.SS COLORS
is initialized by \fBstart_color\fP to the maximum number of colors
the terminal can support.
.SS COLOR_PAIRS
is initialized by \fBstart_color\fP to the maximum number of color pairs
the terminal can support.
.SH FUNCTIONS
.SS start_color
The \fBstart_color\fR routine requires no arguments.
It must be called if the programmer wants to use colors, and before any other
color manipulation routine is called.
It is good practice to call this routine right after \fBinitscr\fR.
\fBstart_color\fR does this:
.bP
It initializes two global variables, \fBCOLORS\fR and
\fBCOLOR_PAIRS\fR (respectively defining the maximum number of colors
and color-pairs the terminal can support).
.bP
It initializes the special color pair \fB0\fP to the default foreground
and background colors.
No other color pairs are initialized.
.bP
It restores the colors on the terminal to the values
they had when the terminal was just turned on.
.bP
If the terminal supports the \fBinitc\fP (\fBinitialize_color\fP) capability,
\fBstart_color\fP
initializes its internal table representing the
red, green, and blue components of the color palette.
.IP
The components depend on whether the terminal uses
CGA (aka \*(``ANSI\*('') or
HLS (i.e., the \fBhls\fP (\fBhue_lightness_saturation\fP) capability is set).
The table is initialized first for eight basic colors
(black, red, green, yellow, blue, magenta, cyan, and white),
using weights that depend upon the CGA/HLS choice.
For \*(``ANSI\*('' colors the weights are \fB680\fP or \fB0\fP
depending on whether the corresponding
red, green, or blue component is used or not.
That permits using \fB1000\fP to represent bold/bright colors.
After the initial eight colors
(if the terminal supports more than eight colors)
the components are initialized using the same pattern,
but with weights of \fB1000\fP.
SVr4 uses a similar scheme, but uses \fB1000\fP
for the components of the initial eight colors.
.IP
\fBstart_color\fP does not attempt to set the terminal's color palette
to match its built-in table.
An application may use \fBinit_color\fP to alter the internal table
along with the terminal's color.
.PP
These limits apply to color values and color pairs.
Values outside these limits are not legal, and may result in a runtime error:
.bP
\fBCOLORS\fP corresponds to the terminal database's \fBmax_colors\fR capability,
(see \fBterminfo\fR(\*n)).
.bP
color values are expected to be in the range \fB0\fP to \fBCOLORS\-1\fP,
inclusive (including \fB0\fP and \fBCOLORS\-1\fP).
.bP
a special color value \fB\-1\fP is used in certain extended functions
to denote the \fIdefault color\fP (see \fBuse_default_colors\fP(3X)).
.bP
\fBCOLOR_PAIRS\fP corresponds to
the terminal database's \fBmax_pairs\fP capability,
(see \fBterminfo\fR(\*n)).
.bP
legal color pair values are in the range \fB1\fP to \fBCOLOR_PAIRS\-1\fP,
inclusive.
.bP
color pair \fB0\fP is special; it denotes \*(``no color\*(''.
.IP
Color pair \fB0\fP is assumed to be white on black,
but is actually whatever the terminal implements before color is initialized.
It cannot be modified by the application.
.SS has_colors
.PP
The \fBhas_colors\fR routine requires no arguments.
It returns \fBTRUE\fR if
the terminal can manipulate colors; otherwise, it returns \fBFALSE\fR.
This routine facilitates writing terminal-independent programs.
For example, a programmer can use it to decide
whether to use color or some other video attribute.
.SS can_change_color
.PP
The \fBcan_change_color\fR routine requires no arguments.
It returns \fBTRUE\fR if the terminal supports colors
and can change their definitions;
other, it returns \fBFALSE\fR.
This routine facilitates writing terminal-independent programs.
.SS init_pair
.PP
The \fBinit_pair\fR routine changes the definition of a color-pair.
It takes three arguments:
the number of the color-pair to be changed, the foreground
color number, and the background color number.
For portable applications:
.bP
The first argument must be a legal color pair value.
If default colors are used (see \fBuse_default_colors\fP(3X))
the upper limit is adjusted to allow for extra pairs which use
a default color in foreground and/or background.
.bP
The second and third arguments must be legal color values.
.PP
If the color-pair was previously initialized,
the screen is refreshed and all occurrences of that color-pair
are changed to the new definition.
.PP
As an extension, ncurses allows you to set color pair \fB0\fP via
the \fBassume_default_colors\fR(3X) routine, or to specify the use of
default colors (color number \fB\-1\fR) if you first invoke the
\fBuse_default_colors\fR(3X) routine.
.SS init_extended_pair
.PP
Because \fBinit_pair\fP uses signed \fBshort\fPs for its parameters,
that limits color-pairs and color-values
to 32767 on modern hardware.
The extension \fBinit_extended_pair\fP uses \fBint\fPs
for the color-pair and color-value,
allowing a larger number of colors to be supported.
.SS init_color
.PP
The \fBinit_color\fR routine changes the definition of a color.
It takes four arguments:
the number of the color to be changed followed by three RGB values
(for the amounts of red, green, and blue components).
.bP
The first argument must be a legal color value;
default colors are not allowed here.
(See the section \fBColors\fR for the default color index.)
.bP
Each of the last three arguments
must be a value in the range \fB0\fP through \fB1000\fP.
.PP
When \fBinit_color\fR is used, all
occurrences of that color on the screen immediately change to the new
definition.
.SS init_extended_color
.PP
Because \fBinit_color\fP uses signed \fBshort\fPs for its parameters,
that limits color-values and their red, green, and blue components
to 32767 on modern hardware.
The extension \fBinit_extended_color\fP uses \fBint\fPs
for the color value and
for setting the red, green, and blue components,
allowing a larger number of colors to be supported.
.SS color_content
.PP
The \fBcolor_content\fR routine gives programmers a way to find the intensity
of the red, green, and blue (RGB) components in a color.
It requires four arguments: the color number, and three addresses
of \fBshort\fRs for storing
the information about the amounts of red, green, and blue components in the
given color.
.bP
The first argument must be a legal color value, i.e.,
\fB0\fP through \fBCOLORS\-1\fP, inclusive.
.bP
The values that are stored at the addresses pointed to by the
last three arguments are in the range
\fB0\fP (no component) through \fB1000\fP
(maximum amount of component), inclusive.
.SS extended_color_content
.PP
Because \fBcolor_content\fP uses signed \fBshort\fPs for its parameters,
that limits color-values and their red, green, and blue components
to 32767 on modern hardware.
The extension \fBextended_color_content\fP uses \fBint\fPs
for the color value and
for returning the red, green, and blue components,
allowing a larger number of colors to be supported.
.SS pair_content
.PP
The \fBpair_content\fR routine allows programmers to find out what colors a
given color-pair consists of.
It requires three arguments: the color-pair
number, and two addresses of \fBshort\fRs for storing the foreground and the
background color numbers.
.bP
The first argument must be a legal color value,
i.e., in the range \fB1\fP through \fBCOLOR_PAIRS\-1\fR, inclusive.
.bP
The values that are stored at the addresses pointed
to by the second and third arguments are in the
range \fB0\fP through \fBCOLORS\fR, inclusive.
.SS extended_pair_content
.PP
Because \fBpair_content\fP uses signed \fBshort\fPs for its parameters,
that limits color-pair and color-values to 32767 on modern hardware.
The extension \fBextended_pair_content\fP uses \fBint\fPs
for the color pair and
for returning the foreground and background colors,
allowing a larger number of colors to be supported.
.SS reset_color_pairs
.PP
The extension \fBreset_color_pairs\fP tells ncurses to discard all
of the color-pair information which was set with \fBinit_pair\fP.
It also touches the current- and standard-screens, allowing an application to
switch color palettes rapidly.
.SS PAIR_NUMBER
.PP
\fBPAIR_NUMBER(\fR\fIattrs\fR) extracts the color
value from its \fIattrs\fP parameter and returns it as a color pair number.
.SS COLOR_PAIR
Its inverse \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR converts a color pair number
to an attribute.
Attributes can hold color pairs in the range 0 to 255.
If you need a color pair larger than that, you must use functions
such as \fBattr_set\fP (which pass the color pair as a separate parameter)
rather than the legacy functions such as \fBattrset\fP.
.SH RETURN VALUE
The routines \fBcan_change_color()\fR and \fBhas_colors()\fR return \fBTRUE\fR
The routines \fBcan_change_color\fR and \fBhas_colors\fR return \fBTRUE\fR
or \fBFALSE\fR.
.PP
All other routines return the integer \fBERR\fR upon failure and an \fBOK\fR
(SVr4 specifies only "an integer value other than \fBERR\fR") upon successful
completion.
(SVr4 specifies only \*(``an integer value
other than \fBERR\fR\*('') upon successful completion.
.PP
X/Open defines no error conditions.
SVr4 does document some error conditions which apply in general:
.bP
This implementation will return \fBERR\fR on attempts to
use color values outside the range 0 to COLORS\-1
use color values outside the range \fB0\fP to \fBCOLORS\fP\-1
(except for the default colors extension),
or use color pairs outside the range 0 to COLOR_PAIRS\-1.
Color values used in \fBinit_color\fP must be in the range 0 to 1000.
or use color pairs outside the range \fB0\fP to \fBCOLOR_PAIRS\-1\fP.
.IP
Color values used in \fBinit_color\fP must be
in the range \fB0\fP to \fB1000\fP.
.IP
An error is returned from all functions
if the terminal has not been initialized.
.IP
An error is returned from secondary functions such as \fBinit_pair\fP
if \fBstart_color\fP was not called.
.bP
SVr4 does much the same, except that
it returns \fBERR\fP from \fBpair_content\fP if the pair was not initialized
using \fBinit_pairs\fP
and
it returns \fBERR\fP from \fBcolor_content\fP
if the terminal does not support changing colors.
.IP
This implementation does not return \fBERR\fP for either case.
.PP
Specific functions make additional checks:
.RS 3
.TP 5
\fBinit_color\fP
returns an error if the terminal does not support
this feature, e.g., if the \fIinitialize_color\fP capability is absent
this feature, e.g., if the \fBinitialize_color\fP capability is absent
from the terminal description.
.TP 5
\fBstart_color\fP
returns an error if the color table cannot be allocated.
.RE
.SH NOTES
In the \fIncurses\fR implementation, there is a separate color activation flag,
color palette, color pairs table, and associated COLORS and COLOR_PAIRS counts
In the \fBncurses\fR implementation, there is a separate color activation flag,
color palette, color pairs table,
and associated \fBCOLORS\fP and \fBCOLOR_PAIRS\fP counts
for each screen; the \fBstart_color\fR function only affects the current
screen. The SVr4/XSI interface is not really designed with this in mind, and
screen.
The SVr4/XSI interface is not really designed with this in mind, and
historical implementations may use a single shared color palette.
.PP
Note that setting an implicit background color via a color pair affects only
character cells that a character write operation explicitly touches. To change
Setting an implicit background color via a color pair affects only
character cells that a character write operation explicitly touches.
To change
the background color used when parts of a window are blanked by erasing or
scrolling operations, see \fBcurs_bkgd\fR(3X).
.PP
Several caveats apply on 386 and 486 machines with VGA-compatible graphics:
Several caveats apply on older x86 machines
(e.g., i386, i486) with VGA-compatible graphics:
.bP
COLOR_YELLOW is actually brown. To get yellow, use COLOR_YELLOW combined with
the \fBA_BOLD\fR attribute.
COLOR_YELLOW is actually brown.
To get yellow, use COLOR_YELLOW combined with the \fBA_BOLD\fR attribute.
.bP
The A_BLINK attribute should in theory cause the background to go bright. This
often fails to work, and even some cards for which it mostly works (such as the
The A_BLINK attribute should in theory cause the background to go bright.
This often fails to work, and even some cards for which it mostly works
(such as the
Paradise and compatibles) do the wrong thing when you try to set a bright
"yellow" background (you get a blinking yellow foreground instead).
\*(``yellow\*('' background (you get a blinking yellow foreground instead).
.bP
Color RGB values are not settable.
.SH PORTABILITY
@ -224,17 +471,28 @@ This implementation satisfies XSI Curses's minimum maximums
for \fBCOLORS\fR and \fBCOLOR_PAIRS\fR.
.PP
The \fBinit_pair\fP routine accepts negative values of foreground
and background color to support the \fBuse_default_colors\fP extension,
and background color to support the \fBuse_default_colors\fR(3X) extension,
but only if that routine has been first invoked.
.PP
The assumption that \fBCOLOR_BLACK\fR is the default
background color for all terminals can be modified using the
\fBassume_default_colors\fP extension.
\fBassume_default_colors\fR(3X) extension.
.PP
This implementation checks the pointers,
e.g., for the values returned by
\fBcolor_content\fP and \fBpair_content\fP,
and will treat those as optional parameters when null.
.PP
X/Open Curses does not specify a limit for the number of colors and
color pairs which a terminal can support.
However, in its use of \fBshort\fP for the parameters,
it carries over SVr4's implementation detail for the compiled
terminfo database, which uses signed 16-bit numbers.
This implementation provides extended versions of those functions
which use \fBshort\fP parameters,
allowing applications to use larger color- and pair-numbers.
.PP
The \fBreset_color_pairs\fP function is an extension of ncurses.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_initscr\fR(3X),

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
.\" Copyright (c) 1998-2018,2019 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 *
@ -26,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_delch.3x,v 1.11 2010/12/04 18:36:44 tom Exp $
.\" $Id: curs_delch.3x,v 1.13 2019/11/30 21:06:30 tom Exp $
.TH curs_delch 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.SH NAME
\fBdelch\fR,
\fBwdelch\fR,
@ -47,21 +51,24 @@
.SH DESCRIPTION
These routines delete the character under the cursor; all characters to the
right of the cursor on the same line are moved to the left one position and the
last character on the line is filled with a blank. The cursor position does
not change (after moving to \fIy\fR, \fIx\fR, if specified). (This does not
last character on the line is filled with a blank.
The cursor position does
not change (after moving to \fIy\fR, \fIx\fR, if specified).
(This does not
imply use of the hardware delete character feature.)
.SH RETURN VALUE
All routines return the integer \fBERR\fR upon failure and an \fBOK\fR (SVr4
specifies only "an integer value other than \fBERR\fR") upon successful
completion.
.PP
Functions with a "mv" prefix first perform a cursor movement using
Functions with a \*(``mv\*('' prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
Note that \fBdelch\fR, \fBmvdelch\fR, and \fBmvwdelch\fR may be macros.
.SH PORTABILITY
These functions are described in the XSI Curses standard, Issue 4. The
These functions are described in the XSI Curses standard, Issue 4.
The
standard specifies that they return \fBERR\fR on failure, but specifies no
error conditions.
.SH SEE ALSO

Some files were not shown because too many files have changed in this diff Show More