-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>addch</STRONG>, <STRONG>waddch</STRONG>, <STRONG>mvaddch</STRONG> and <STRONG>mvwaddch</STRONG> routines put the
- character <EM>ch</EM> into the given window at its current window
- position, which is then advanced. They are analogous to
- <STRONG>putchar</STRONG> in <STRONG>stdio(3)</STRONG>. If the advance is at the right mar-
- gin:
-
- <STRONG>o</STRONG> The cursor automatically wraps to the beginning of the
- next line.
-
- <STRONG>o</STRONG> At the bottom of the current scrolling region, and if
- <STRONG>scrollok</STRONG> is enabled, the scrolling region is scrolled
- up one line.
-
- <STRONG>o</STRONG> If <STRONG>scrollok</STRONG> 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
-
- If <EM>ch</EM> is a tab, newline, or backspace, the cursor is moved
- appropriately within the window:
-
- <STRONG>o</STRONG> Backspace moves the cursor one character left; at the
- left edge of a window it does nothing.
-
- <STRONG>o</STRONG> Newline does a <STRONG>clrtoeol</STRONG>, then moves the cursor to the
- window left margin on the next line, scrolling the
- window if on the last line.
-
- <STRONG>o</STRONG> Tabs are considered to be at every eighth column. The
- tab interval may be altered by setting the <STRONG>TABSIZE</STRONG>
- variable.
-
- If <EM>ch</EM> is any control character other than tab, newline, or
- backspace, it is drawn in <STRONG>^</STRONG><EM>X</EM> notation. Calling <STRONG>winch</STRONG>
- after adding a control character does not return the char-
- acter itself, but instead returns the ^-representation of
- the control character.
-
- Video attributes can be combined with a character argument
- passed to <STRONG>addch</STRONG> or related functions by logical-ORing them
- into the character. (Thus, text, including attributes,
- can be copied from one place to another using <STRONG>inch</STRONG> and
- <STRONG>addch</STRONG>.) See the <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> page for values of prede-
- fined video attribute constants that can be usefully OR'ed
- into characters.
-
- The <STRONG>echochar</STRONG> and <STRONG>wechochar</STRONG> routines are equivalent to a
- call to <STRONG>addch</STRONG> followed by a call to <STRONG>refresh</STRONG>, or a call to
- <STRONG>waddch</STRONG> followed by a call to <STRONG>wrefresh</STRONG>. 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.
-
- <STRONG>Line</STRONG> <STRONG>Graphics</STRONG>
- The following variables may be used to add line drawing
- characters to the screen with routines of the <STRONG>addch</STRONG> fam-
- ily. The default character listed below is used if the
- <STRONG>acsc</STRONG> capability does not define a terminal-specific
- replacement for it. The names are taken from VT100 nomen-
- clature.
-
- <EM>Name</EM> <EM>Default</EM> <EM>Description</EM>
- --------------------------------------------------
- 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
+ <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>, <STRONG>waddch</STRONG> returns <STRONG>ERR</STRONG> if
+
+ <STRONG>o</STRONG> <EM>win</EM> is <STRONG>NULL</STRONG>,
+
+ <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> 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>
+
+</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
+ SVr4 and other versions of <EM>curses</EM> implement the <STRONG>TABSIZE</STRONG> variable, but
+ X/Open Curses does not specify it; see <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+ X/Open Curses, Issue 4 describes these functions. It specifies no
+ error conditions for them.
+
+ SVr4 <EM>curses</EM> describes a successful return value only as "an integer
+ value other than <STRONG>ERR</STRONG>".
+
+ 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 <STRONG>ACS_</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.
+
+ This implementation uses an array, <STRONG>acs_map</STRONG>, as did SVr4 <EM>curses</EM>.
+ NetBSD also uses an array, actually named <STRONG>_acs_char</STRONG>, with a <STRONG>#define</STRONG>
+ for compatibility.