<!--
****************************************************************************
- * Copyright (c) 2017,2018 Free Software Foundation, Inc. *
+ * Copyright (c) 2017-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 *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: user_caps.5,v 1.6 2018/02/03 22:38:17 tom Exp @
+ * @Id: user_caps.5,v 1.10 2019/05/18 22:48:40 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>user_caps 5</TITLE>
-<link rev=made href="mailto:bug-ncurses@gnu.org">
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
While ncurses' repertoire of predefined capabilities is closest to
Solaris, Solaris's terminfo database has a few differences from the
- list published by X/Open Curses.
+ list published by X/Open Curses. For example, ncurses can be con-
+ figured with tables which match the terminal databases for AIX, HP-
+ UX or OSF/1, rather than the default Solaris-like configuration.
+
+ <STRONG>o</STRONG> In SVr4 curses and ncurses, the terminal database is defined at
+ compile-time using a text file which lists the different terminal
+ capabilities.
+
+ In principle, the text-file can be extended, but doing this
+ requires recompiling and reinstalling the library. The text-file
+ used in ncurses for terminal capabilities includes details for var-
+ ious systems past the documented X/Open Curses features. For exam-
+ ple, ncurses supports these capabilities in each configuration:
+
+ memory_lock
+ (meml) lock memory above cursor
+
+ memory_unlock
+ (memu) unlock memory
+
+ box_chars_1
+ (box1) box characters primary set
+
+ The memory lock/unlock capabilities were included because they were
+ used in the X11R6 terminal description for <STRONG>xterm</STRONG>. The <EM>box1</EM> capa-
+ bility is used in tic to help with terminal descriptions written
+ for AIX.
During the 1990s, some users were reluctant to use terminfo in spite of
its performance advantages over termcap:
ticipated terminal improvements (or required them to reuse existing
capabilities as a workaround).
- <STRONG>o</STRONG> The limitation to 16-bit signed integers was also mentioned.
- Because termcap stores everything as a string, it could represent
+ <STRONG>o</STRONG> The limitation to 16-bit signed integers was also mentioned.
+ Because termcap stores everything as a string, it could represent
larger numbers.
- Although termcap's extensibility was rarely used (it was never the
- <EM>speaker</EM> who had actually used the feature), the criticism had a point.
- ncurses 5.0 provided a way to detect nonstandard capabilities, deter-
- mine their type and optionally store and retrieve them in a way which
- did not interfere with other applications. These are referred to as
- <EM>user-defined</EM> <EM>capabilities</EM> because no modifications to the toolset's
+ Although termcap's extensibility was rarely used (it was never the
+ <EM>speaker</EM> who had actually used the feature), the criticism had a point.
+ ncurses 5.0 provided a way to detect nonstandard capabilities, deter-
+ mine their type and optionally store and retrieve them in a way which
+ did not interfere with other applications. These are referred to as
+ <EM>user-defined</EM> <EM>capabilities</EM> because no modifications to the toolset's
predefined capability names are needed.
- The ncurses utilities <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> have a command-line option "-x"
- to control whether the nonstandard capabilities are stored or
- retrieved. A library function <STRONG>use_extended_names</STRONG> is provided for the
+ The ncurses utilities <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> have a command-line option "-x"
+ to control whether the nonstandard capabilities are stored or
+ retrieved. A library function <STRONG>use_extended_names</STRONG> is provided for the
same purpose.
- When compiling a terminal database, if "-x" is set, <STRONG>tic</STRONG> will store a
+ When compiling a terminal database, if "-x" is set, <STRONG>tic</STRONG> will store a
user-defined capability if the capability name is not one of the prede-
fined names.
- Because ncurses provides a termcap library interface, these user-
+ Because ncurses provides a termcap library interface, these user-
defined capabilities may be visible to termcap applications:
- <STRONG>o</STRONG> The termcap interface (like all implementations of termcap)
+ <STRONG>o</STRONG> The termcap interface (like all implementations of termcap)
requires that the capability names are 2-characters.
- When the capability is simple enough for use in a termcap applica-
+ When the capability is simple enough for use in a termcap applica-
tion, it is provided as a 2-character name.
- <STRONG>o</STRONG> There are other user-defined capabilities which refer to features
- not usable in termcap, e.g., parameterized strings that use more
+ <STRONG>o</STRONG> There are other user-defined capabilities which refer to features
+ not usable in termcap, e.g., parameterized strings that use more
than two parameters or use more than the trivial expression support
- provided by termcap. For these, the terminfo database should have
+ provided by termcap. For these, the terminfo database should have
only capability names with 3 or more characters.
<STRONG>o</STRONG> Some terminals can send distinct strings for special keys (cursor-,
- keypad- or function-keys) depending on modifier keys (shift, con-
- trol, etc.). While terminfo and termcap have a set of 60 prede-
- fined function-key names, to which a series of keys can be
- assigned, that is insufficient for more than a dozen keys multi-
- plied by more than a couple of modifier combinations. The ncurses
- database uses a convention based on <STRONG>xterm</STRONG> to provide extended spe-
+ keypad- or function-keys) depending on modifier keys (shift, con-
+ trol, etc.). While terminfo and termcap have a set of 60 prede-
+ fined function-key names, to which a series of keys can be
+ assigned, that is insufficient for more than a dozen keys multi-
+ plied by more than a couple of modifier combinations. The ncurses
+ database uses a convention based on <STRONG>xterm</STRONG> to provide extended spe-
cial-key names.
- Fitting that into termcap's limitation of 2-character names would
- be pointless. These extended keys are available only with ter-
+ Fitting that into termcap's limitation of 2-character names would
+ be pointless. These extended keys are available only with ter-
minfo.
</PRE><H3><a name="h3-Recognized-capabilities">Recognized capabilities</a></H3><PRE>
- The ncurses library uses the user-definable capabilities. While the
- terminfo database may have other extensions, ncurses makes explicit
+ The ncurses library uses the user-definable capabilities. While the
+ terminfo database may have other extensions, ncurses makes explicit
checks for these:
- AX <EM>boolean</EM>, asserts that the terminal interprets SGR 39 and SGR 49
- by resetting the foreground and background color, respectively,
+ AX <EM>boolean</EM>, asserts that the terminal interprets SGR 39 and SGR 49
+ by resetting the foreground and background color, respectively,
to the default.
This is a feature recognized by the <STRONG>screen</STRONG> program as well.
- E3 <EM>string</EM>, tells how to clear the terminal's scrollback buffer.
+ E3 <EM>string</EM>, tells how to clear the terminal's scrollback buffer.
When present, the <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG> program sends this before clearing the
terminal.
The command "<STRONG>tput</STRONG> <STRONG>clear</STRONG>" does the same thing.
RGB
- <EM>boolean</EM>, <EM>number</EM> <STRONG>or</STRONG> <EM>string</EM>, to assert that the <STRONG>set_a_foreground</STRONG>
- and <STRONG>set_a_background</STRONG> capabilities correspond to <EM>direct</EM> <EM>colors</EM>,
+ <EM>boolean</EM>, <EM>number</EM> <STRONG>or</STRONG> <EM>string</EM>, to assert that the <STRONG>set_a_foreground</STRONG>
+ and <STRONG>set_a_background</STRONG> capabilities correspond to <EM>direct</EM> <EM>colors</EM>,
using an RGB (red/green/blue) convention. This capability allows
- the <STRONG>color_content</STRONG> function to return appropriate values without
+ the <STRONG>color_content</STRONG> function to return appropriate values without
requiring the application to initialize colors using <STRONG>init_color</STRONG>.
The capability type determines the values which ncurses sees:
<EM>boolean</EM>
- implies that the number of bits for red, green and blue are
- the same. Using the maximum number of colors, ncurses adds
+ implies that the number of bits for red, green and blue are
+ the same. Using the maximum number of colors, ncurses adds
two, divides that sum by three, and assigns the result to red,
green and blue in that order.
If the number of bits needed for the number of colors is not a
- multiple of three, the blue (and green) components lose in
+ multiple of three, the blue (and green) components lose in
comparison to red.
<EM>number</EM>
- tells ncurses what result to add to red, green and blue. If
+ tells ncurses what result to add to red, green and blue. If
ncurses runs out of bits, blue (and green) lose just as in the
<EM>boolean</EM> case.
<EM>string</EM>
- explicitly list the number of bits used for red, green and
+ explicitly list the number of bits used for red, green and
blue components as a slash-separated list of decimal integers.
- Because there are several RGB encodings in use, applications
- which make assumptions about the number of bits per color are
- unlikely to work reliably. As a trivial case, for example, one
- could define <STRONG>RGB#1</STRONG> to represent the standard eight ANSI colors,
+ Because there are several RGB encodings in use, applications
+ which make assumptions about the number of bits per color are
+ unlikely to work reliably. As a trivial case, for example, one
+ could define <STRONG>RGB#1</STRONG> to represent the standard eight ANSI colors,
i.e., one bit per color.
- U8 <EM>boolean</EM>, asserts that ncurses must use Unicode values for line-
+ U8 <EM>number</EM>, asserts that ncurses must use Unicode values for line-
drawing characters, and that it should ignore the alternate char-
- acter set capabilities when the locale uses UTF-8 encoding. For
- more information, see the discussion of <STRONG>NCURSES_NO_UTF8_ACS</STRONG> in
+ acter set capabilities when the locale uses UTF-8 encoding. For
+ more information, see the discussion of <STRONG>NCURSES_NO_UTF8_ACS</STRONG> in
<STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
Set this capability to a nonzero value to enable it.
</PRE><H3><a name="h3-Extended-key-definitions">Extended key-definitions</a></H3><PRE>
Several terminals provide the ability to send distinct strings for com-
- binations of modified special keys. There is no standard for what
+ binations of modified special keys. There is no standard for what
those keys can send.
Since 1999, <STRONG>xterm</STRONG> has supported <EM>shift</EM>, <EM>control</EM>, <EM>alt</EM>, and <EM>meta</EM> modifiers
which produce distinct special-key strings. In a terminal description,
- ncurses has no special knowledge of the modifiers used. Applications
- can use the <EM>naming</EM> <EM>convention</EM> established for <STRONG>xterm</STRONG> to find these spe-
+ ncurses has no special knowledge of the modifiers used. Applications
+ can use the <EM>naming</EM> <EM>convention</EM> established for <STRONG>xterm</STRONG> to find these spe-
cial keys in the terminal description.
- Starting with the curses convention that <EM>key</EM> <EM>names</EM> begin with "k" and
- that shifted special keys are an uppercase name, ncurses' terminal
+ Starting with the curses convention that <EM>key</EM> <EM>names</EM> begin with "k" and
+ that shifted special keys are an uppercase name, ncurses' terminal
database defines these names to which a suffix is added:
<EM>Name</EM> <EM>Description</EM>
----------------------------------
2 Shift
3 Alt
-
4 Shift + Alt
5 Control
6 Shift + Control
15 Meta + Ctrl + Alt
16 Meta + Ctrl + Alt + Shift
- None of these are predefined; terminal descriptions can refer to <EM>names</EM>
+ None of these are predefined; terminal descriptions can refer to <EM>names</EM>
which ncurses will allocate at runtime to <EM>key-codes</EM>. To use these keys
in an ncurses program, an application could do this:
<STRONG>o</STRONG> using a list of extended key <EM>names</EM>, ask <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG> for their val-
ues, and
- <STRONG>o</STRONG> given the list of values, ask <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG> for the <EM>key-code</EM>
+ <STRONG>o</STRONG> given the list of values, ask <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG> for the <EM>key-code</EM>
which would be returned for those keys by <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>.
</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
- The "-x" extension feature of <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> has been adopted in Net-
- BSD curses. That implementation stores user-defined capabilities, but
+ The "-x" extension feature of <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> has been adopted in Net-
+ BSD curses. That implementation stores user-defined capabilities, but
makes no use of these capabilities itself.
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
- <STRONG><A HREF="tic.1m.html">tic(1)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1)</A></STRONG>.
+ <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>.
</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>