ff4ff35918
Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
793 lines
23 KiB
Plaintext
793 lines
23 KiB
Plaintext
'\" t
|
|
.\"***************************************************************************
|
|
.\" Copyright 2018-2024,2025 Thomas E. Dickey *
|
|
.\" Copyright 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 *
|
|
.\" "Software"), to deal in the Software without restriction, including *
|
|
.\" without limitation the rights to use, copy, modify, merge, publish, *
|
|
.\" distribute, distribute with modifications, sublicense, and/or sell *
|
|
.\" copies of the Software, and to permit persons to whom the Software is *
|
|
.\" furnished to do so, subject to the following conditions: *
|
|
.\" *
|
|
.\" The above copyright notice and this permission notice shall be included *
|
|
.\" in all copies or substantial portions of the Software. *
|
|
.\" *
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
|
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
|
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
|
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
|
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
|
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
|
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
|
.\" *
|
|
.\" Except as contained in this notice, the name(s) of the above copyright *
|
|
.\" holders shall not be used in advertising or otherwise to promote the *
|
|
.\" sale, use or other dealings in this Software without prior written *
|
|
.\" authorization. *
|
|
.\"***************************************************************************
|
|
.\"
|
|
.\" $Id: curs_attr.3x,v 1.142 2025/11/12 01:05:49 tom Exp $
|
|
.TH curs_attr 3X 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
|
|
.ie \n(.g \{\
|
|
.ds `` \(lq
|
|
.ds '' \(rq
|
|
.\}
|
|
.el \{\
|
|
.ie t .ds `` ``
|
|
.el .ds `` ""
|
|
.ie t .ds '' ''
|
|
.el .ds '' ""
|
|
.\}
|
|
.
|
|
.de bP
|
|
.ie n .IP \(bu 4
|
|
.el .IP \(bu 2
|
|
..
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH NAME
|
|
\fB\%attr_get\fP,
|
|
\fB\%wattr_get\fP,
|
|
\fB\%attr_set\fP,
|
|
\fB\%wattr_set\fP,
|
|
\fB\%attr_off\fP,
|
|
\fB\%wattr_off\fP,
|
|
\fB\%attr_on\fP,
|
|
\fB\%wattr_on\fP,
|
|
\fB\%attroff\fP,
|
|
\fB\%wattroff\fP,
|
|
\fB\%attron\fP,
|
|
\fB\%wattron\fP,
|
|
\fB\%attrset\fP,
|
|
\fB\%wattrset\fP,
|
|
\fB\%chgat\fP,
|
|
\fB\%wchgat\fP,
|
|
\fB\%mvchgat\fP,
|
|
\fB\%mvwchgat\fP,
|
|
\fB\%color_set\fP,
|
|
\fB\%wcolor_set\fP,
|
|
\fB\%standend\fP,
|
|
\fB\%wstandend\fP,
|
|
\fB\%standout\fP,
|
|
\fB\%wstandout\fP \-
|
|
manipulate attributes of character cells in \fIcurses\fR windows
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH SYNOPSIS
|
|
.nf
|
|
\fB#include <curses.h>
|
|
.PP
|
|
\fBint attr_get(attr_t *\fIattrs\fP, short *\fIpair\fP, void *\fIopts\fP);
|
|
\fBint wattr_get(WINDOW *\fIwin\fP, attr_t *\fIattrs\fP, short *\fIpair\fP,\fR \fPvoid *\fIopts\fP);
|
|
\fBint attr_set(attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP);
|
|
\fBint wattr_set(WINDOW *\fIwin\fP, attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP);
|
|
.PP
|
|
\fBint attr_off(attr_t \fIattrs\fP, void *\fIopts\fP);
|
|
\fBint wattr_off(WINDOW *\fIwin\fP, attr_t \fIattrs\fP, void *\fIopts\fP);
|
|
\fBint attr_on(attr_t \fIattrs\fP, void *\fIopts\fP);
|
|
\fBint wattr_on(WINDOW *\fIwin\fP, attr_t \fIattrs\fP, void *\fIopts\fP);
|
|
.PP
|
|
\fBint attroff(int \fIattrs\fP);
|
|
\fBint wattroff(WINDOW *\fIwin\fP, int \fIattrs\fP);
|
|
\fBint attron(int \fIattrs\fP);
|
|
\fBint wattron(WINDOW *\fIwin\fP, int \fIattrs\fP);
|
|
\fBint attrset(int \fIattrs\fP);
|
|
\fBint wattrset(WINDOW *\fIwin\fP, int \fIattrs\fP);
|
|
.PP
|
|
\fBint chgat(int \fIn\fP, attr_t \fIattr\fP, short \fIpair\fP,\fR \fPconst void *\fIopts\fP);
|
|
\fBint wchgat(WINDOW *\fIwin\fP,
|
|
\fBint \fIn\fB, attr_t \fIattr\fB,\fR \fBshort \fIpair\fB, const void *\fIopts\fB);\fR
|
|
\fBint mvchgat(int \fIy\fB, int \fIx\fB,\fR
|
|
\fBint \fIn\fB, attr_t \fIattr\fB, short \fIpair\fB, const void *\fIopts\fB);\fR
|
|
\fBint mvwchgat(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB,\fR
|
|
\fBint \fIn\fB, attr_t \fIattr\fB, short \fIpair\fB, const void *\fIopts\fB);\fR
|
|
.PP
|
|
\fBint color_set(short \fIpair\fB, void* \fIopts\fB);\fR
|
|
\fBint wcolor_set(WINDOW *\fIwin\fB, short \fIpair\fB,\fR \fBvoid* \fIopts\fP);\fR
|
|
.PP
|
|
\fBint standend(void);\fP
|
|
\fBint wstandend(WINDOW *\fIwin\fB);\fR
|
|
\fBint standout(void);\fP
|
|
\fBint wstandout(WINDOW *\fIwin\fB);\fR
|
|
.fi
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH DESCRIPTION
|
|
These routines manipulate the current attributes of the named window,
|
|
which then apply to all characters that are written into
|
|
the window with \fBwaddch\fP, \fBwaddstr\fP and \fBwprintw\fP.
|
|
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
|
|
displayed as appropriate modifications to the graphic rendition of characters
|
|
put on the screen.
|
|
.PP
|
|
These routines do not affect the attributes used
|
|
when erasing portions of the window.
|
|
See \fBcurs_bkgd\fP(3X) for functions which modify the attributes used for
|
|
erasing and clearing.
|
|
.\" ---------------------------------------------------------------------------
|
|
.SS "Window Attributes"
|
|
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 logically \*(``or\*(''-ed together in \fIattr\fP,
|
|
without affecting other attributes.
|
|
Use \fBattr_off\fP and \fBwattr_off\fP to turn off window attributes,
|
|
again values logically \*(``or\*(''-ed 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 logically \*(``or\*(''-ed
|
|
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
|
|
.I int
|
|
datatype used in the legacy routines is treated as if
|
|
it is the same size as
|
|
.I \%chtype
|
|
(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
|
|
logically \*(``or\*(''-ed into the attribute parameter.
|
|
For example,
|
|
as long as that value fits into the \fBA_COLOR\fP mask,
|
|
then these calls produce similar results:
|
|
.PP
|
|
.RS 4
|
|
.EX
|
|
.nf
|
|
attrset(A_BOLD | COLOR_PAIR(\fIpair\fP));
|
|
attr_set(A_BOLD, \fIpair\fP, NULL);
|
|
.fi
|
|
.EE
|
|
.RE
|
|
.PP
|
|
However, if the value does not fit, then the \fBCOLOR_PAIR\fP macro
|
|
uses only the bits that fit.
|
|
For example,
|
|
because in
|
|
.I \%ncurses
|
|
\fBA_COLOR\fP has eight (8) bits,
|
|
then \fBCOLOR_PAIR(\fI259\fB)\fR is 4
|
|
(i.e., 259 is 4 more than the limit 255).
|
|
.PP
|
|
The \fBPAIR_NUMBER\fP macro extracts a pair number from an
|
|
.I int
|
|
(or
|
|
.IR \%chtype ")."
|
|
For example, the \fIinput\fP and \fIoutput\fP values in these statements
|
|
would be the same:
|
|
.PP
|
|
.RS 4
|
|
.EX
|
|
.nf
|
|
int value = A_BOLD | COLOR_PAIR(\fIinput\fP);
|
|
int \fIoutput\fP = PAIR_NUMBER(value);
|
|
.fi
|
|
.EE
|
|
.RE
|
|
.PP
|
|
The \fBattrset\fP routine is a legacy feature predating SVr4
|
|
.I curses
|
|
but kept in X/Open Curses for the same reason that SVr4
|
|
.I curses
|
|
kept it:
|
|
compatibility.
|
|
.PP
|
|
The remaining \fBattr\fP* functions operate exactly like the corresponding
|
|
\fBattr_\fP* functions, except that they take arguments of type
|
|
.I int
|
|
rather than
|
|
.IR \%attr_t "."
|
|
.PP
|
|
There is no corresponding \fB\%attrget\fP function as such
|
|
in X/Open Curses,
|
|
although
|
|
.I \%ncurses
|
|
provides \fB\%getattrs\fP
|
|
(see \fB\%curs_legacy\fP(3X)).
|
|
.\" ---------------------------------------------------------------------------
|
|
.SS "Change Character Rendition"
|
|
The routine \fBchgat\fP changes the attributes of a given number of characters
|
|
starting at the current cursor location of \fBstdscr\fP.
|
|
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\fP function generalizes this to any window;
|
|
the \fBmvwchgat\fP 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\fP, see \fBcurs_color\fP(3X)).
|
|
.\" ---------------------------------------------------------------------------
|
|
.SS "Change Window Color"
|
|
The routine \fBcolor_set\fP sets the current color of the given window to the
|
|
foreground/background combination described by the color \fIpair\fP parameter.
|
|
.\" ---------------------------------------------------------------------------
|
|
.SS Standout
|
|
The routine \fBstandout\fP is
|
|
the same as \fBattron(A_STANDOUT)\fP.
|
|
The routine \fBstandend\fP is the same
|
|
as \fBattrset(A_NORMAL)\fP or \fBattrset(0)\fP, that is, it turns off all
|
|
attributes.
|
|
.PP
|
|
X/Open Curses 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.
|
|
.\" ---------------------------------------------------------------------------
|
|
.SS "Video Attributes"
|
|
The following video attributes,
|
|
defined in
|
|
.IR \%curses.h ","
|
|
can be passed to
|
|
.BR \%attron ","
|
|
.BR \%attroff ","
|
|
.BR \%attrset ","
|
|
and
|
|
logically \*(``or\*(''-ed with characters passed to \fBaddch\fP(3X).
|
|
.PP
|
|
.if t .ne 15
|
|
.if n .ne 16
|
|
.RS
|
|
.TS
|
|
Lb Lb
|
|
Lb Lx.
|
|
Name Description
|
|
_
|
|
A_NORMAL Normal display (no highlight)
|
|
A_STANDOUT Best highlighting mode available
|
|
A_UNDERLINE Underlining
|
|
A_REVERSE Reverse video
|
|
A_BLINK Blinking
|
|
A_DIM Half bright
|
|
A_BOLD Extra bright or bold
|
|
A_PROTECT Protected mode
|
|
A_INVIS Invisible or blank mode
|
|
A_ALTCHARSET Alternate character set
|
|
A_ITALIC Italics (non-X/Open extension)
|
|
A_ATTRIBUTES Mask to extract character code
|
|
A_CHARTEXT Mask to extract attributes
|
|
A_COLOR Mask to extract color pair identifier
|
|
.TE
|
|
.RE
|
|
.PP
|
|
.BR \%attr_on ","
|
|
.BR \%attr_off ","
|
|
and
|
|
.B \%attr_set
|
|
support the foregoing as well as the following additional attributes.
|
|
.PP
|
|
.if t .ne 7
|
|
.if n .ne 8
|
|
.RS
|
|
.TS
|
|
Lb Lb
|
|
Lb Lx.
|
|
Name Description
|
|
_
|
|
WA_HORIZONTAL Horizontal highlight
|
|
WA_LEFT Left highlight
|
|
WA_LOW Low highlight
|
|
WA_RIGHT Right highlight
|
|
WA_TOP Top highlight
|
|
WA_VERTICAL Vertical highlight
|
|
.TE
|
|
.RE
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH RETURN VALUE
|
|
These functions return
|
|
.B OK
|
|
on success and
|
|
.B ERR
|
|
on failure.
|
|
.PP
|
|
In
|
|
.IR \%ncurses ","
|
|
they return
|
|
.B ERR
|
|
if
|
|
.I win
|
|
is
|
|
.IR NULL "."
|
|
.PP
|
|
.B \%wcolor_set
|
|
returns
|
|
.B ERR
|
|
if
|
|
.I pair
|
|
is outside the range
|
|
.BR 0 .\|. COLOR_PAIRS\-1 .
|
|
.PP
|
|
.B \%wattr_get
|
|
does
|
|
.I not
|
|
fail if its
|
|
.I \%attrs
|
|
or
|
|
.I \%pair
|
|
parameter is
|
|
.IR NULL "."
|
|
.PP
|
|
Functions prefixed with \*(``mv\*('' first perform cursor movement and
|
|
fail if the position
|
|
.RI ( y ,
|
|
.IR x )
|
|
is outside the window boundaries.
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH NOTES
|
|
.BR \%attr_on ","
|
|
.BR \%attr_off ","
|
|
.BR \%attr_set ","
|
|
.BR \%wattr_set ","
|
|
.BR \%chgat ","
|
|
.BR \%mvchgat ","
|
|
.BR \%mvwchgat ","
|
|
.BR \%wchgat ","
|
|
and
|
|
.B \%color_set
|
|
are part of
|
|
.IR \%ncurses "'s"
|
|
wide-character API,
|
|
and are not available in its non-wide-character configuration.
|
|
.PP
|
|
.BR \%attron ","
|
|
.BR \%wattron ","
|
|
.BR \%attroff ","
|
|
.BR \%wattroff ","
|
|
.BR \%attrset ","
|
|
.BR \%wattrset ","
|
|
.BR \%standout ","
|
|
and
|
|
.B \%standend
|
|
may be implemented as macros.
|
|
.PP
|
|
Color pair values may be logically \*(``or\*(''-ed 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,
|
|
.I \%ncurses
|
|
ABI 4 and 5 simply logically \*(``or\*('' this value
|
|
within the alternate functions.
|
|
You must use
|
|
.I \%ncurses
|
|
ABI 6 to support more than 256 color pairs.
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH EXTENSIONS
|
|
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
|
|
.IR NULL "."
|
|
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 and \fBwattr_on\fP,
|
|
if \fIopts\fP is set it is treated as a pointer to
|
|
.IR int ","
|
|
and used to set the color pair instead of the
|
|
.I short
|
|
.I pair
|
|
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
|
|
.IR int ","
|
|
and used to retrieve the color pair as an
|
|
.I int
|
|
value,
|
|
in addition to
|
|
retrieving it via the standard pointer to
|
|
.I short
|
|
parameter.
|
|
.bP
|
|
For functions which turn attributes off, e.g.,
|
|
\fBwattr_off\fP,
|
|
the \fIopts\fP parameter is ignored except to check that it is
|
|
.IR NULL "."
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH PORTABILITY
|
|
These functions are described in X/Open Curses Issue\ 4.
|
|
It specifies no error conditions for them.
|
|
.PP
|
|
The standard defined the dedicated type for highlights,
|
|
.IR \%attr_t ","
|
|
which was not defined in SVr4
|
|
.IR curses "."
|
|
The functions taking
|
|
.I \%attr_t
|
|
arguments were not supported under SVr4.
|
|
.PP
|
|
SVr4 describes the functions not taking
|
|
.I \%attr_t
|
|
or
|
|
.I pair
|
|
arguments as always returning
|
|
.BR 1 "." \" Courier roman in source; SVID 4, vol. 3, p. 480
|
|
.PP
|
|
Very old versions of this library did not force an update of the screen
|
|
when changing the attributes.
|
|
Use \fBtouchwin\fP to force the screen to match the updated attributes.
|
|
.PP
|
|
X/Open Curses states that whether the traditional functions
|
|
\fBattron\fP/\fBattroff\fP/\fBattrset\fP can manipulate attributes other than
|
|
\fBA_BLINK\fP, \fBA_BOLD\fP, \fBA_DIM\fP, \fBA_REVERSE\fP, \fBA_STANDOUT\fP, or
|
|
\fBA_UNDERLINE\fP is \*(``unspecified\*(''.
|
|
Under this implementation as well as
|
|
SVr4
|
|
.IR curses ","
|
|
these functions correctly manipulate all other highlights
|
|
(specifically, \fBA_ALTCHARSET\fP, \fBA_PROTECT\fP, and \fBA_INVIS\fP).
|
|
.PP
|
|
X/Open Curses added these entry points:
|
|
.sp
|
|
.RS
|
|
\fBattr_get\fP, \fBattr_on\fP,
|
|
\fBattr_off\fP, \fBattr_set\fP, \fBwattr_on\fP, \fBwattr_off\fP,
|
|
\fBwattr_get\fP, \fBwattr_set\fP
|
|
.RE
|
|
.PP
|
|
The new functions are intended to work with
|
|
a new series of highlight macros prefixed with \fBWA_\fP.
|
|
The older macros have direct counterparts in the newer set of names:
|
|
.PP
|
|
.RS
|
|
.ne 9
|
|
.TS
|
|
Lb Lb
|
|
Lb L .
|
|
Name Description
|
|
_
|
|
WA_NORMAL Normal display (no highlight)
|
|
WA_STANDOUT Best highlighting mode available
|
|
WA_UNDERLINE Underlining
|
|
WA_REVERSE Reverse video
|
|
WA_BLINK Blinking
|
|
WA_DIM Half bright
|
|
WA_BOLD Extra bright or bold
|
|
WA_ALTCHARSET Alternate character set
|
|
.TE
|
|
.RE
|
|
.PP
|
|
X/Open 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
|
|
X/Open Curses specifies that each pair of corresponding \fBA_\fP
|
|
and \fBWA_\fP-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)
|
|
.I curses
|
|
declares
|
|
.I \%attr_t
|
|
to be an unsigned short integer (16-bits),
|
|
while
|
|
.I \%chtype
|
|
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
|
|
.I \%chtype
|
|
and
|
|
.I \%cchar_t
|
|
variables.
|
|
.bP
|
|
Because
|
|
.IR \%ncurses 's
|
|
.I \%attr_t
|
|
can hold a color pair
|
|
(in the \fBA_COLOR\fP field),
|
|
a call to
|
|
\fBwattr_on\fP,
|
|
\fBwattr_off\fP, or
|
|
\fBwattr_set\fP
|
|
may alter the window's color.
|
|
If the color pair information in the attribute parameter is zero,
|
|
no change is made to the window's color.
|
|
.IP
|
|
This is consistent with SVr4
|
|
.IR curses ";"
|
|
X/Open Curses does not specify this.
|
|
.PP
|
|
The X/Open Curses extended conformance level adds new highlights
|
|
\fBA_HORIZONTAL\fP, \fBA_LEFT\fP, \fBA_LOW\fP, \fBA_RIGHT\fP, \fBA_TOP\fP,
|
|
\fBA_VERTICAL\fP (and corresponding \fBWA_\fP macros for each).
|
|
As of August 2013,
|
|
no known terminal provides these highlights
|
|
(i.e., via the \fBsgr1\fP capability).
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH HISTORY
|
|
4BSD (1980)
|
|
used a
|
|
.I char
|
|
to represent each cell of the terminal screen.
|
|
It assumed 7-bit character codes,
|
|
employing the eighth bit of a byte to represent a
|
|
.I \%standout
|
|
attribute
|
|
(often implemented as bold and/or reverse video).
|
|
It introduced
|
|
.IR \%standout ","
|
|
.IR \%standend ","
|
|
.IR \%wstandout ","
|
|
and
|
|
.I \%wstandend
|
|
functions to manipulate this bit.
|
|
Despite their inflexibility,
|
|
they carried over into System\ V
|
|
.I curses
|
|
and ultimately X/Open Curses
|
|
due to their pervasive use in legacy applications.
|
|
While some 1980s terminals supported a variety of video attributes,
|
|
BSD
|
|
.I curses
|
|
could do nothing with them.
|
|
.PP
|
|
SVr2 (1984)
|
|
provided an improved
|
|
.I curses
|
|
library,
|
|
introducing
|
|
.I \%chtype
|
|
to create the abstract notion of a
|
|
.I curses
|
|
character;
|
|
this was by default an
|
|
.IR "unsigned short" ","
|
|
with a provision for compile-time redefinition to other integral types
|
|
(a freedom not necessarily available to users of shared libraries,
|
|
and in any event a source license was necessary to exercise it).
|
|
It added the functions
|
|
.IR \%attron ","
|
|
.IR \%attroff ","
|
|
.IR \%attrset ","
|
|
.IR \%wattron ","
|
|
.IR \%wattroff ","
|
|
and
|
|
.IR \%wattrset ","
|
|
and defined the
|
|
.I A_
|
|
macros listed above
|
|
(except for
|
|
.I \%A_ITALIC
|
|
and
|
|
.IR \%A_COLOR ")"
|
|
for use by applications to manipulate other attributes.
|
|
The values of these macros
|
|
were not necessarily the same in different systems,
|
|
even among those certified as System\ V.
|
|
.PP
|
|
SVr3.2 (1988)
|
|
added the
|
|
.I \%A_COLOR
|
|
macro along with a color system;
|
|
see \fBcurs_color\fP(3X).
|
|
.PP
|
|
X/Open Curses Issue\ 4 (1995) is largely based on SVr4
|
|
.IR curses ","
|
|
but recognized that the
|
|
.I \%wchar_t
|
|
type of ISO C95 was intended to house only a single character code,
|
|
not a sequence of codes combining with a base character,
|
|
let alone could it reliably offer room for a color pair identifier
|
|
and a set of attribute bits with a potential for further growth \(em
|
|
thus the standard invented the
|
|
.I curses
|
|
complex character type
|
|
.I \%cchar_t
|
|
and a separate type
|
|
.I \%attr_t
|
|
for storage of attribute bits.
|
|
The new types brought along several new functions to manipulate them,
|
|
some corresponding to existing
|
|
.IR chtype -based
|
|
functions
|
|
.RI \%( attr_on ,
|
|
.IR \%attr_off ","
|
|
.IR \%attr_set ","
|
|
.IR \%wattr_on ","
|
|
.IR \%wattr_off ","
|
|
and
|
|
.IR \%wattr_set "),"
|
|
and some new
|
|
.RI \%( chgat
|
|
and its variants,
|
|
.IR \%color_set ","
|
|
and
|
|
.IR \%wcolor_set ")."
|
|
.PP
|
|
Different Unix systems used differently sized bit fields in
|
|
.I \%chtype
|
|
for the character code and the color pair identifier,
|
|
and took into account platforms' different integer sizes
|
|
(32- versus 64-bit).
|
|
.PP
|
|
The following table showing the number of bits for
|
|
.I \%A_COLOR
|
|
and
|
|
.I \%A_CHARTEXT
|
|
was gleaned from the
|
|
.I 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 converse.
|
|
.PP
|
|
.TS
|
|
Lb Lb Lb Cb S Lb
|
|
Lb2 Lb Lb2 Lb2 Lb2 Lb
|
|
L L L L L Lx.
|
|
\& \& \& Bits \&
|
|
Year System Arch Color Char Notes
|
|
_
|
|
1992 Solaris 5.2 32 6 17 SVr4 \fIcurses\fP
|
|
1992 HP-UX 9 32 no 8 SVr2 \fIcurses\fP
|
|
1992 AIX 3.2 32 no 23 SVr2 \fIcurses\fP
|
|
1994 OSF/1 r3 32 no 23 SVr2 \fIcurses\fP
|
|
1995 HP-UX 10.00 32 6 16 SVr3 \fIcurses_colr\fP
|
|
1995 HP-UX 10.00 32 6 8 SVr4, X/Open \fIcurses\fP
|
|
1995 Solaris 5.4 32/64 7 16 X/Open \fIcurses\fP
|
|
1996 AIX 4.2 32 7 16 X/Open \fIcurses\fP
|
|
1996 OSF/1 r4 32 6 16 X/Open \fIcurses\fP
|
|
1997 HP-UX 11.00 32 6 8 X/Open \fIcurses\fP
|
|
2000 UWIN 32/64 7/31 16 uses \fIchtype\fP
|
|
.TE
|
|
.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
|
|
.I curses
|
|
was dropped with HP-UX 11.30 in 2006.
|
|
.PP
|
|
Regarding OSF/1 (and Tru64),
|
|
.bP
|
|
These used 64-bit hardware.
|
|
Like
|
|
.IR \%ncurses ","
|
|
the OSF/1
|
|
.I 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
|
|
Its XPG4
|
|
(X/Open Curses-conforming)
|
|
.I xcurses
|
|
library was developed by Mortice Kern Systems 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
|
|
.I curses
|
|
interface.
|
|
.PP
|
|
Regarding UWIN,
|
|
.bP
|
|
Development of the
|
|
.I curses
|
|
library began in 1991, stopped in 2000.
|
|
.bP
|
|
Color support was added in 1998.
|
|
.bP
|
|
The library uses only
|
|
.I \%chtype
|
|
(not
|
|
.IR \%cchar_t ")."
|
|
.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
|
|
.I \%chtype
|
|
became a moot point.
|
|
The
|
|
.I \%cchar_t
|
|
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
|
|
.I curses
|
|
was improved slightly in 1993/1994 using Keith Bostic's
|
|
modification to make the library 8-bit clean for \fInvi\fP(1).
|
|
He moved the
|
|
.I \%standout
|
|
attribute to a structure member.
|
|
The resulting 4.4BSD
|
|
.I curses
|
|
was replaced by
|
|
.I \%ncurses
|
|
over the next ten years.
|
|
.bP
|
|
UWIN has been defunct since 2012.
|
|
.PP
|
|
.I \%ncurses
|
|
6.0 (2015)
|
|
added the
|
|
.I A_ITALIC
|
|
macro.
|
|
.\" ---------------------------------------------------------------------------
|
|
.SH SEE ALSO
|
|
\fB\%curses\fP(3X),
|
|
\fB\%curs_addch\fP(3X),
|
|
\fB\%curs_addstr\fP(3X),
|
|
\fB\%curs_bkgd\fP(3X),
|
|
\fB\%curs_printw\fP(3X),
|
|
\fB\%curs_variables\fP(3X)
|