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.
458 lines
28 KiB
HTML
458 lines
28 KiB
HTML
<!--
|
|
* t
|
|
****************************************************************************
|
|
* Copyright 2018-2024,2025 Thomas E. Dickey *
|
|
* Copyright 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 *
|
|
* "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_addch.3x,v 1.144 2025/11/12 01:04:12 tom Exp @
|
|
-->
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<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>curs_addch 3x 2025-11-11 ncurses 6.6 Library calls</TITLE>
|
|
<link rel="author" href="mailto:bug-ncurses@gnu.org">
|
|
|
|
</HEAD>
|
|
<BODY>
|
|
<H1 class="no-header">curs_addch 3x 2025-11-11 ncurses 6.6 Library calls</H1>
|
|
<PRE>
|
|
<STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> Library calls <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
|
|
|
|
|
|
</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
|
|
<STRONG>addch</STRONG>, <STRONG>waddch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, <STRONG>echochar</STRONG>, <STRONG>wechochar</STRONG> - add a <EM>curses</EM>
|
|
character to a window and advance the cursor
|
|
|
|
|
|
</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
|
|
<STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
|
|
|
|
<STRONG>int</STRONG> <STRONG>addch(const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
|
|
<STRONG>int</STRONG> <STRONG>waddch(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
|
|
<STRONG>int</STRONG> <STRONG>mvaddch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
|
|
<STRONG>int</STRONG> <STRONG>mvwaddch(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
|
|
|
|
<STRONG>int</STRONG> <STRONG>echochar(const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
|
|
<STRONG>int</STRONG> <STRONG>wechochar(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
|
|
|
|
<EM>/*</EM> <EM>(integer)</EM> <EM>constants</EM> <EM>*/</EM>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_BLOCK;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_BOARD;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_BTEE;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_BULLET;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_CKBOARD;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_DARROW;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_DEGREE;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_DIAMOND;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_HLINE;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_LANTERN;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_LARROW;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_LLCORNER;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_LRCORNER;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_LTEE;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_PLMINUS;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_PLUS;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_RARROW;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_RTEE;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_S1;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_S9;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_TTEE;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_UARROW;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_ULCORNER;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_URCORNER;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_VLINE;</STRONG>
|
|
<EM>/*</EM> <EM>extensions</EM> <EM>*/</EM>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_GEQUAL;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_LEQUAL;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_NEQUAL;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_PI;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_S3;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_S7;</STRONG>
|
|
/* <EM>...</EM> <EM>*/</EM> <STRONG>ACS_STERLING;</STRONG>
|
|
|
|
|
|
</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
|
|
|
|
</PRE><H3><a name="h3-waddch">waddch</a></H3><PRE>
|
|
<STRONG>waddch</STRONG> writes the <EM>curses</EM> character <EM>ch</EM> to the window <EM>win</EM>, then advances
|
|
the cursor position, analogously to the standard C library's
|
|
<STRONG>putchar(3)</STRONG>. <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> describes the variants of this function.
|
|
|
|
Construct a <EM>curses</EM> character from a <EM>char</EM> by assignment or typecast.
|
|
Subsection "Video Attributes" of <STRONG><A HREF="curs_attr.3x.html">attron(3x)</A></STRONG> describes how to manipulate
|
|
its attributes and color pair. (A color pair selection is not honored
|
|
unless initialized; see <STRONG><A HREF="curs_color.3x.html">start_color(3x)</A></STRONG>.)
|
|
|
|
The object or expression <EM>ch</EM> may contain attributes and/or a color pair
|
|
identifier. (A <EM>chtype</EM> can be copied from place to place using
|
|
<STRONG><A HREF="curs_inch.3x.html">winch(3x)</A></STRONG> and <STRONG>waddch</STRONG>.) <EM>curses</EM> defines constants to aid the
|
|
manipulation of character attributes; see <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>. A <EM>ch</EM> whose
|
|
character component is a space, and whose only attribute is <STRONG>A_NORMAL</STRONG>,
|
|
is a <EM>blank</EM> <EM>character</EM>, and therefore combines with the window's
|
|
background character; see <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>.
|
|
|
|
If <EM>ch</EM> is a backspace, carriage return, line feed, or tab, the cursor
|
|
moves appropriately within the window.
|
|
|
|
<STRONG>o</STRONG> Backspace moves the cursor one character left; at the left margin
|
|
of a window, it does nothing.
|
|
|
|
<STRONG>o</STRONG> Carriage return moves the cursor to the left margin on the same
|
|
line of the window.
|
|
|
|
<STRONG>o</STRONG> Line feed does a <STRONG><A HREF="curs_clear.3x.html">clrtoeol(3x)</A></STRONG>, then advances as if from the right
|
|
margin.
|
|
|
|
<STRONG>o</STRONG> Tab advances the cursor to the next tab stop (possibly on the next
|
|
line); these are placed at every eighth column by default.
|
|
|
|
Alter the tab interval with the <STRONG>TABSIZE</STRONG> extension; see
|
|
<STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
|
|
|
|
If <EM>ch</EM> is any other nonprintable character, <EM>curses</EM> draws it in printable
|
|
form using the same convention as <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>. Calling <STRONG><A HREF="curs_inch.3x.html">winch(3x)</A></STRONG> on the
|
|
location of a nonprintable character does not return the character
|
|
itself, but its <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG> representation.
|
|
|
|
Adding printable characters with <STRONG>waddch</STRONG> causes it to wrap at the right
|
|
margin of the window:
|
|
|
|
<STRONG>o</STRONG> If the cursor is not at the bottom of the scrolling region and
|
|
advancement occurs at the right margin, the cursor automatically
|
|
wraps to the beginning of the next line.
|
|
|
|
<STRONG>o</STRONG> If the cursor is at the bottom of the scrolling region when
|
|
advancement occurs at the right margin, and <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG> is enabled
|
|
for <EM>win</EM>, the scrolling region scrolls up one line and the cursor
|
|
wraps as above. Otherwise, advancement and scrolling do not occur,
|
|
and <STRONG>waddch</STRONG> returns <STRONG>ERR</STRONG>.
|
|
|
|
A window's margins may coincide with the screen boundaries. This may
|
|
be a problem when <EM>ncurses</EM> updates the screen to match the curses
|
|
window. When their right and bottom margins coincide, <EM>ncurses</EM> uses
|
|
different strategies to handle the variations of scrolling and wrapping
|
|
at the lower-right corner by depending on the terminal capabilities:
|
|
|
|
<STRONG>o</STRONG> If the terminal does not automatically wrap as characters are added
|
|
at the right margin (i.e., auto right margins), <EM>ncurses</EM> writes the
|
|
character directly.
|
|
|
|
<STRONG>o</STRONG> If the terminal has auto right margins, but also has capabilities
|
|
for turning auto margins off and on, <EM>ncurses</EM> turns the auto margin
|
|
feature off temporarily when writing to the lower-right corner.
|
|
|
|
<STRONG>o</STRONG> If the terminal has an insertion mode which can be turned off and
|
|
on, <EM>ncurses</EM> writes the character just before the lower-right
|
|
corner, and then inserts a character to push the update into the
|
|
corner.
|
|
|
|
|
|
</PRE><H3><a name="h3-wechochar">wechochar</a></H3><PRE>
|
|
<STRONG>echochar</STRONG> and <STRONG>wechochar</STRONG> are equivalent to calling (<STRONG>w</STRONG>)<STRONG>addch</STRONG> followed by
|
|
(<STRONG>w</STRONG>)<STRONG>refresh</STRONG> on <STRONG>stdscr</STRONG> or the specified window. <EM>curses</EM> interprets these
|
|
functions as a hint to its optimizer that only a single character cell
|
|
in the window is being altered between refreshes; for non-control
|
|
characters, a considerable performance gain may be enjoyed by employing
|
|
them.
|
|
|
|
|
|
</PRE><H3><a name="h3-Forms-Drawing-Characters">Forms-Drawing Characters</a></H3><PRE>
|
|
<EM>curses</EM> defines macros starting with <STRONG>ACS_</STRONG> that can be used with <STRONG>waddch</STRONG>
|
|
to write line-drawing and other symbols to the screen. <EM>ncurses</EM> terms
|
|
these <EM>forms-drawing</EM> <EM>characters.</EM> <EM>curses</EM> uses the ACS default listed
|
|
below if the terminal type lacks the <STRONG>acs_chars</STRONG> (<STRONG>acsc</STRONG>) capability; that
|
|
capability does not define a replacement for the character; or if the
|
|
terminal type and locale configuration require Unicode to access these
|
|
characters, but the library is unable to use Unicode. The "acsc char"
|
|
column corresponds to how the characters are specified in the <STRONG>acs_chars</STRONG>
|
|
(<STRONG>acsc</STRONG>) string capability, and the characters in it may appear on the
|
|
screen if the terminal type's database entry incorrectly advertises ACS
|
|
support. The name "ACS" originates in the Alternate Character Set
|
|
feature of the DEC VT100 terminal.
|
|
|
|
<STRONG>ACS</STRONG> <STRONG>acsc</STRONG>
|
|
<STRONG>Symbol</STRONG> <STRONG>Default</STRONG> <STRONG>char</STRONG> <STRONG>Glyph</STRONG> <STRONG>Name</STRONG>
|
|
------------------------------------------------------------------------
|
|
<STRONG>ACS_BLOCK</STRONG> # 0 solid square block
|
|
<STRONG>ACS_BOARD</STRONG> # h board of squares
|
|
<STRONG>ACS_BTEE</STRONG> + v bottom tee
|
|
<STRONG>ACS_BULLET</STRONG> o ~ bullet
|
|
<STRONG>ACS_CKBOARD</STRONG> : a checker board (stipple)
|
|
<STRONG>ACS_DARROW</STRONG> v . arrow pointing down
|
|
<STRONG>ACS_DEGREE</STRONG> ' f degree symbol
|
|
<STRONG>ACS_DIAMOND</STRONG> + ` diamond
|
|
<STRONG>ACS_GEQUAL</STRONG> > > greater-than-or-equal-to
|
|
<STRONG>ACS_HLINE</STRONG> - q horizontal line
|
|
<STRONG>ACS_LANTERN</STRONG> # i lantern symbol
|
|
<STRONG>ACS_LARROW</STRONG> < , arrow pointing left
|
|
<STRONG>ACS_LEQUAL</STRONG> < y less-than-or-equal-to
|
|
<STRONG>ACS_LLCORNER</STRONG> + m lower left-hand corner
|
|
<STRONG>ACS_LRCORNER</STRONG> + j lower right-hand corner
|
|
<STRONG>ACS_LTEE</STRONG> + t left tee
|
|
<STRONG>ACS_NEQUAL</STRONG> ! | not-equal
|
|
<STRONG>ACS_PI</STRONG> * { greek pi
|
|
<STRONG>ACS_PLMINUS</STRONG> # g plus/minus
|
|
<STRONG>ACS_PLUS</STRONG> + n plus
|
|
<STRONG>ACS_RARROW</STRONG> > + arrow pointing right
|
|
<STRONG>ACS_RTEE</STRONG> + u right tee
|
|
<STRONG>ACS_S1</STRONG> - o scan line 1
|
|
<STRONG>ACS_S3</STRONG> - p scan line 3
|
|
<STRONG>ACS_S7</STRONG> - r scan line 7
|
|
<STRONG>ACS_S9</STRONG> _ s scan line 9
|
|
<STRONG>ACS_STERLING</STRONG> f } pound-sterling symbol
|
|
<STRONG>ACS_TTEE</STRONG> + w top tee
|
|
<STRONG>ACS_UARROW</STRONG> ^ - arrow pointing up
|
|
<STRONG>ACS_ULCORNER</STRONG> + l upper left-hand corner
|
|
<STRONG>ACS_URCORNER</STRONG> + k upper right-hand corner
|
|
<STRONG>ACS_VLINE</STRONG> | x vertical line
|
|
|
|
|
|
</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
|
|
These functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure.
|
|
|
|
In <EM>ncurses</EM>, these functions fail if
|
|
|
|
<STRONG>o</STRONG> the <EM>curses</EM> screen has not been initialized,
|
|
|
|
<STRONG>o</STRONG> (for functions taking a <EM>WINDOW</EM> pointer argument) <EM>win</EM> is a null
|
|
pointer,
|
|
|
|
<STRONG>o</STRONG> wrapping to a new line is impossible because <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG> has not
|
|
been called on <EM>win</EM> (or <STRONG>stdscr</STRONG>, as applicable) when a write to its
|
|
bottom right location is attempted, or
|
|
|
|
<STRONG>o</STRONG> it is not possible to add a complete character at the cursor
|
|
position.
|
|
|
|
The last may be due to different causes:
|
|
|
|
<STRONG>o</STRONG> conversion of a wide character to a multibyte character sequence
|
|
can fail, or
|
|
|
|
<STRONG>o</STRONG> at least one of the bytes resulting from wide character conversion
|
|
to a multibyte character sequence cannot be added to the window.
|
|
See section "PORTABILITY" below regarding the use of <STRONG>waddch</STRONG> with
|
|
wide characters.
|
|
|
|
Functions prefixed with "mv" first perform cursor movement and fail if
|
|
the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
|
|
|
|
|
|
</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
|
|
<STRONG>addch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, and <STRONG>echochar</STRONG> may be implemented as macros.
|
|
|
|
|
|
</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
|
|
The symbols <EM>ACS</EM><STRONG>_</STRONG><EM>S3</EM>, <EM>ACS</EM><STRONG>_</STRONG><EM>S7</EM>, <EM>ACS</EM><STRONG>_</STRONG><EM>LEQUAL</EM>, <EM>ACS</EM><STRONG>_</STRONG><EM>GEQUAL</EM>, <EM>ACS</EM><STRONG>_</STRONG><EM>PI</EM>, <EM>ACS</EM><STRONG>_</STRONG><EM>NEQUAL</EM>,
|
|
and <EM>ACS</EM><STRONG>_</STRONG><EM>STERLING</EM> were not documented in any publicly released System V
|
|
and are not standard. However, many publicly available <EM>terminfo</EM>
|
|
entries include <STRONG>acs_chars</STRONG> (<STRONG>acsc</STRONG>) capabilities in which their key
|
|
characters (<STRONG>pryz{|}</STRONG>) are embedded, and a second-hand list of their
|
|
character descriptions has come to light, which identifies them as
|
|
VT100 special characters.
|
|
|
|
The DEC Special Character and Line Drawing Set (VT100) is indexed by an
|
|
ASCII character in the range 96 (`) to 126 (~). That index character
|
|
is part of the definition for the curses <STRONG>ACS_</STRONG> symbols. The VT100
|
|
special characters can be categorized in three groups:
|
|
|
|
<STRONG>o</STRONG> useful graphic symbols with a standard <STRONG>ACS_</STRONG> symbol, (e.g., the
|
|
line-drawing symbols),
|
|
|
|
<STRONG>o</STRONG> possibly useful characters (these non-standard symbols),
|
|
|
|
<STRONG>o</STRONG> representations of control characters (e.g., newline and vertical
|
|
tabulation).
|
|
|
|
A few <STRONG>ACS_</STRONG> symbols do not fit into DEC's VT100 scheme. The AT&T
|
|
Teletype 5410v1 arrow symbols and <STRONG>ACS_BLOCK</STRONG> use indices outside the
|
|
range 96 to 126. Two of the Teletype symbols use indices in that
|
|
range, with different meaning versus the VT100:
|
|
|
|
<STRONG>o</STRONG> <STRONG>ACS_BOARD</STRONG> corresponds to the VT100 symbol for newline
|
|
|
|
<STRONG>o</STRONG> <STRONG>ACS_LANTERN</STRONG> corresponds to the VT100 symbol for vertical tabulation
|
|
|
|
AT&T defined <STRONG>ACS_</STRONG> names for the most useful graphic symbols, as well as
|
|
for its own. Its header file commented:
|
|
|
|
/*
|
|
* Standard alternate character set. The current ACS world is
|
|
* evolving, so we support only a widely available subset: the
|
|
* line drawing characters from the VT100, plus a few from the
|
|
* Teletype 5410v1. Eventually there may be support of more
|
|
* sophisticated ACS line drawing, such as that in the Teletype
|
|
* 5410, the HP line drawing set, and the like. There may be
|
|
* support for some non line oriented characters as well.
|
|
*
|
|
* Line drawing ACS names are of the form ACS_trbl, where t is
|
|
* the top, r is the right, b is the bottom, and l is the left.
|
|
* t, r, b, and l might be B (blank), S (single), D (double), or
|
|
* T (thick). The subset defined here only uses B and S.
|
|
*/
|
|
|
|
Although these less-useful graphic symbols were not given names, they
|
|
were used in <EM>terminfo</EM> entries. The <EM>ncurses</EM> developers invented ACS-
|
|
prefixed names for them.
|
|
|
|
|
|
</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
|
|
Applications employing <EM>ncurses</EM> extensions should condition their use on
|
|
the visibility of the <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
|
|
|
|
X/Open Curses Issue 4 describes these functions. It specifies no error
|
|
conditions for them.
|
|
|
|
SVr4 describes a successful return value only as "an integer value
|
|
other than <EM>ERR</EM>".
|
|
|
|
The defaults specified for forms-drawing characters apply in the POSIX
|
|
locale.
|
|
|
|
|
|
</PRE><H3><a name="h3-ACS-Symbols">ACS Symbols</a></H3><PRE>
|
|
X/Open Curses states that the <EM>ACS</EM><STRONG>_</STRONG> definitions are <EM>char</EM> constants.
|
|
Some implementations are problematic.
|
|
|
|
<STRONG>o</STRONG> Solaris <EM>curses</EM>, for example, defines the ACS symbols as constants;
|
|
others define them as elements of an array.
|
|
|
|
SVr4 used an array, <EM>acs</EM><STRONG>_</STRONG><EM>map</EM>, as does <EM>ncurses</EM>. NetBSD <EM>curses</EM> also
|
|
uses an array, actually named <STRONG>_</STRONG><EM>acs</EM><STRONG>_</STRONG><EM>char</EM>, with a "#define" for
|
|
compatibility.
|
|
|
|
<STRONG>o</STRONG> HP-UX <EM>curses</EM> equates some of the <EM>ACS</EM><STRONG>_</STRONG> symbols to the analogous
|
|
<EM>WACS</EM><STRONG>_</STRONG> symbols as if the <EM>ACS</EM><STRONG>_</STRONG> symbols were wide characters (see
|
|
<STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>). The misdefined symbols are the arrows and
|
|
others that are not used for line drawing.
|
|
|
|
<STRONG>o</STRONG> X/Open Curses (Issues 2 through 7) has a typographical error for
|
|
the <EM>ACS</EM><STRONG>_</STRONG><EM>LANTERN</EM> symbol, equating its "VT100+ Character" to "I"
|
|
(capital I), while the header files for SVr4 <EM>curses</EM> and other
|
|
implementations use "i" (small i).
|
|
|
|
None of the terminal descriptions on Unix platforms use uppercase
|
|
I, except for Solaris (in its <EM>terminfo</EM> entry for <STRONG>screen(1)</STRONG>,
|
|
apparently based on the X/Open documentation around 1995). On the
|
|
other hand, its <STRONG>gs6300</STRONG> (AT&T PC6300 with EMOTS Terminal Emulator)
|
|
description uses lowercase i.
|
|
|
|
The <EM>displayed</EM> values of <EM>ACS</EM><STRONG>_</STRONG> constants depend on
|
|
|
|
<STRONG>o</STRONG> the <EM>ncurses</EM> ABI -- for example, wide-character versus non-wide-
|
|
character configurations (the former is capable of displaying
|
|
Unicode while the latter is not), and
|
|
|
|
<STRONG>o</STRONG> whether the locale uses UTF-8 encoding.
|
|
|
|
In certain cases, the terminal is unable to display forms-drawing
|
|
characters <EM>except</EM> by using UTF-8; see the discussion of the
|
|
<EM>NCURSES</EM><STRONG>_</STRONG><EM>NO</EM><STRONG>_</STRONG><EM>UTF8</EM><STRONG>_</STRONG><EM>ACS</EM> environment variable in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
|
|
|
|
|
|
</PRE><H3><a name="h3-Character-Set">Character Set</a></H3><PRE>
|
|
X/Open Curses assumes that the parameter passed to <EM>waddch</EM> contains a
|
|
single character. That character may have been more than eight bits
|
|
wide in an SVr3 or SVr4 implementation, but X/Open Curses leaves the
|
|
width of a non-wide character code unspecified. The standard further
|
|
does not specify the internal structure of a <EM>chtype</EM>, though the use of
|
|
bitwise operators to combine the character code with attributes and a
|
|
color pair identifier into a <EM>chtype</EM> for passage to <EM>waddch</EM> is common. A
|
|
portable application uses only the macros discussed in <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> to
|
|
manipulate a <EM>chtype</EM>.
|
|
|
|
In <EM>ncurses</EM>, <EM>chtype</EM> holds an eight-bit character, but the library allows
|
|
a multibyte character sequence to be passed via a succession of calls
|
|
to <EM>waddch</EM>. Other implementations do not; a <EM>waddch</EM> call transmits
|
|
exactly one character, which may be rendered in one or more screen
|
|
locations depending on whether it is printable (see <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>).
|
|
Depending on the locale, <EM>ncurses</EM> inspects the byte passed in each
|
|
<EM>waddch</EM> call and checks whether the latest call continues a multibyte
|
|
character. When a character is <EM>complete</EM>, <EM>ncurses</EM> displays the
|
|
character and advances the cursor. If the calling application
|
|
interrupts the succession of bytes in a multibyte character sequence by
|
|
changing the current location -- for example, with <STRONG><A HREF="curs_move.3x.html">wmove(3x)</A></STRONG> -- <EM>ncurses</EM>
|
|
discards the incomplete character.
|
|
|
|
For portability to other implementations, do not rely upon the
|
|
foregoing behavior. Check whether a character can be represented as a
|
|
single byte in the current locale.
|
|
|
|
<STRONG>o</STRONG> If it can, call either <EM>waddch</EM> or <EM>wadd</EM><STRONG>_</STRONG><EM>wch</EM>.
|
|
|
|
<STRONG>o</STRONG> If it cannot, use only <EM>wadd</EM><STRONG>_</STRONG><EM>wch</EM>.
|
|
|
|
|
|
</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
|
|
4BSD (1980) introduced <EM>waddch</EM> and its variants.
|
|
|
|
SVr3 (1987) added the <EM>echochar</EM> and <EM>wechochar</EM> functions and most of the
|
|
<EM>ACS</EM><STRONG>_</STRONG> constants, except for <EM>ACS</EM><STRONG>_</STRONG><EM>GEQUAL</EM>, <EM>ACS</EM><STRONG>_</STRONG><EM>LEQUAL</EM>, <EM>ACS</EM><STRONG>_</STRONG><EM>NEQUAL</EM>, <EM>ACS</EM><STRONG>_</STRONG><EM>PI</EM>,
|
|
<EM>ACS</EM><STRONG>_</STRONG><EM>S3</EM>, <EM>ACS</EM><STRONG>_</STRONG><EM>S7</EM>, and <EM>ACS</EM><STRONG>_</STRONG><EM>STERLING</EM>.
|
|
|
|
<EM>ncurses</EM> 1.9.6 (1995) furnished the remaining <EM>ACS</EM><STRONG>_</STRONG> constants.
|
|
|
|
|
|
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
|
|
<STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM> library
|
|
in its wide-character configuration (<EM>ncursesw</EM>).
|
|
|
|
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,
|
|
<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>,
|
|
<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>putchar(3)</STRONG>
|
|
|
|
ncurses 6.6 2025-11-11 <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
|
|
</PRE>
|
|
<div class="nav">
|
|
<ul>
|
|
<li><a href="#h2-NAME">NAME</a></li>
|
|
<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
|
|
<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
|
|
<ul>
|
|
<li><a href="#h3-waddch">waddch</a></li>
|
|
<li><a href="#h3-wechochar">wechochar</a></li>
|
|
<li><a href="#h3-Forms-Drawing-Characters">Forms-Drawing Characters</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
|
|
<li><a href="#h2-NOTES">NOTES</a></li>
|
|
<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
|
|
<li><a href="#h2-PORTABILITY">PORTABILITY</a>
|
|
<ul>
|
|
<li><a href="#h3-ACS-Symbols">ACS Symbols</a></li>
|
|
<li><a href="#h3-Character-Set">Character Set</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#h2-HISTORY">HISTORY</a></li>
|
|
<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
|
|
</ul>
|
|
</div>
|
|
</BODY>
|
|
</HTML>
|