diff --git a/NEWS b/NEWS
index f683db58..65847017 100644
--- a/NEWS
+++ b/NEWS
@@ -26,7 +26,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: NEWS,v 1.4273 2025/04/12 21:08:43 tom Exp $
+-- $Id: NEWS,v 1.4275 2025/04/19 23:31:31 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
@@ -46,6 +46,10 @@ See the AUTHORS file for the corresponding full names.
Changes through 1.9.9e did not credit all contributions;
it is not possible to add this information.
+20250419
+ + add note on scrolling and lower-right corner to waddch and wadd_wch
+ manual pages.
+
20250412
+ add pangoterm -TD
+ add kf1 to kf5 to sclp (report by Werner Fink)
diff --git a/VERSION b/VERSION
index cf6d3ede..3a918478 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5:0:10 6.5 20250412
+5:0:10 6.5 20250419
diff --git a/dist.mk b/dist.mk
index 7f07ef29..daeaa49d 100644
--- a/dist.mk
+++ b/dist.mk
@@ -26,7 +26,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: dist.mk,v 1.1664 2025/04/12 10:27:36 tom Exp $
+# $Id: dist.mk,v 1.1665 2025/04/19 10:37:06 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
@@ -38,7 +38,7 @@ SHELL = /bin/sh
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 6
NCURSES_MINOR = 5
-NCURSES_PATCH = 20250412
+NCURSES_PATCH = 20250419
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
diff --git a/doc/html/man/curs_add_wch.3x.html b/doc/html/man/curs_add_wch.3x.html
index 06823c21..fe8cdee0 100644
--- a/doc/html/man/curs_add_wch.3x.html
+++ b/doc/html/man/curs_add_wch.3x.html
@@ -28,19 +28,19 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_add_wch.3x,v 1.114 2025/04/05 21:58:37 tom Exp @
+ * @Id: curs_add_wch.3x,v 1.115 2025/04/19 22:53:52 tom Exp @
-->
curs_add_wch(3x) Library calls curs_add_wch(3x)
@@ -157,16 +157,6 @@
until another spacing character is written to the window or the cursor
is moved.
- 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.
-
- If the cursor is at the bottom of the scrolling region when advancement
- occurs at the right margin, and scrollok(3x) is enabled for win, the
- scrolling region scrolls up one line and the cursor wraps as above.
- Otherwise, advancement and scrolling do not occur, and waddch returns
- ERR.
-
If wch is a backspace, carriage return, line feed, or tab, the cursor
moves appropriately within the window.
@@ -180,36 +170,69 @@
margin.
o 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 TABSIZE extension; see
+ line); these are placed at every eighth column by default.
+
+ Alter the tab interval with the TABSIZE extension; see
curs_variables(3x).
- If wch is any other nonprintable character, it is drawn in printable
- form using the same convention as wunctrl(3x). Calling win_wch(3x) on
- the location of a nonprintable character does not return the character
+ If wch is any other nonprintable character, it is drawn in printable
+ form using the same convention as wunctrl(3x). Calling win_wch(3x) on
+ the location of a nonprintable character does not return the character
itself, but its wunctrl(3x) representation.
+ Adding spacing characters with wadd_wch causes it to wrap at the right
+ margin of the window:
+
+ o 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.
+
+ o If the cursor is at the bottom of the scrolling region when
+ advancement occurs at the right margin, and scrollok(3x) is enabled
+ for win, the scrolling region scrolls up one line and the cursor
+ wraps as above. Otherwise, advancement and scrolling do not occur,
+ and wadd_wch returns ERR.
+
+ A window's margins may coincide with the screen boundaries. This may
+ be a problem when ncurses updates the screen to match the curses
+ window. When their right and bottom margins coincide, ncurses uses
+ different strategies to handle the variations of scrolling and wrapping
+ at the lower-right corner by depending on the terminal capabilities:
+
+ o If the terminal does not automatically wrap as characters are added
+ at the right margin (i.e., auto right margins), ncurses writes the
+ character directly.
+
+ o If the terminal has auto right margins, but also has capabilities
+ for turning auto margins off and on, ncurses turns the auto margin
+ feature off temporarily when writing to the lower-right corner.
+
+ o If the terminal has an insertion mode which can be turned off and
+ on, ncurses writes the character just before the lower-right
+ corner, and then inserts a character to push the update into the
+ corner.
+
- echo_wchar and wecho_wchar are equivalent to calling (w)add_wch
- followed by (w)refresh on stdscr or the specified window. curses
- interprets these functions as a hint that only a single (complex)
- character is being output; for non-control characters, a considerable
+ echo_wchar and wecho_wchar are equivalent to calling (w)add_wch
+ followed by (w)refresh on stdscr or the specified window. curses
+ interprets these functions as a hint that only a single (complex)
+ character is being output; for non-control characters, a considerable
performance gain may be enjoyed by employing them.
- curses defines macros starting with WACS_ that can be used with
- wadd_wch to write line-drawing and other symbols to the screen.
- ncurses terms these forms-drawingcharacters.curses uses the ACS
- default listed below if the terminal type lacks the acs_chars (acsc)
- 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
+ curses defines macros starting with WACS_ that can be used with
+ wadd_wch to write line-drawing and other symbols to the screen.
+ ncurses terms these forms-drawingcharacters.curses uses the ACS
+ default listed below if the terminal type lacks the acs_chars (acsc)
+ 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 acs_chars (acsc) 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
+ 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.
UnicodeACSacsc
@@ -222,6 +245,7 @@
WACS_CKBOARD U+2592 : a checker board (stipple)
WACS_DARROW U+2193 v . arrow pointing down
WACS_DEGREE U+00b0 ' f degree symbol
+
WACS_DIAMOND U+25c6 + ` diamond
WACS_GEQUAL U+2265 > > greater-than-or-equal-to
WACS_HLINE U+2500 - q horizontal line
@@ -245,11 +269,10 @@
WACS_TTEE U+252c + w top tee
WACS_UARROW U+2191 ^ - arrow pointing up
WACS_ULCORNER U+250c + l upper left-hand corner
-
WACS_URCORNER U+2510 + k upper right-hand corner
WACS_VLINE U+2502 | x vertical line
- The ncurses wide API also defines symbols for thick lines (acsc "J"
+ The ncurses wide API also defines symbols for thick lines (acsc "J"
through "N", "T" through "X", and "Q"):
UnicodeASCIIacsc
@@ -284,9 +307,9 @@
WACS_D_URCORNER U+2557 + B double upper right corner
WACS_D_VLINE U+2551 | Y double vertical line
- 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
+ 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:
o U+2500 BOX DRAWINGS LIGHT HORIZONTAL
@@ -303,31 +326,31 @@
o the curses screen has not been initialized,
- o (for functions taking a WINDOW pointer argument) win is a null
+ o (for functions taking a WINDOW pointer argument) win is a null
pointer,
- o wrapping to a new line is impossible because scrollok(3x) has not
- been called on win (or stdscr, as applicable) when writing to its
+ o wrapping to a new line is impossible because scrollok(3x) has not
+ been called on win (or stdscr, as applicable) when writing to its
bottom right location is attempted, or
- o it is not possible to add a complete character at the cursor
+ o it is not possible to add a complete character at the cursor
position.
- Functions prefixed with "mv" first perform cursor movement and fail if
+ Functions prefixed with "mv" first perform cursor movement and fail if
the position (y, x) is outside the window boundaries.
- The symbols WACS_S3, WACS_S7, WACS_LEQUAL, WACS_GEQUAL, WACS_PI,
- WACS_NEQUAL, and WACS_STERLING are not standard. However, many
- publicly available terminfo entries include acs_chars (acsc)
- capabilities in which their key characters (pryz{|}) are embedded, and
- a second-hand list of their character descriptions has come to light.
+ The symbols WACS_S3, WACS_S7, WACS_LEQUAL, WACS_GEQUAL, WACS_PI,
+ WACS_NEQUAL, and WACS_STERLING are not standard. However, many
+ publicly available terminfo entries include acs_chars (acsc)
+ capabilities in which their key characters (pryz{|}) are embedded, and
+ a second-hand list of their character descriptions has come to light.
The ncurses developers invented WACS-prefixed names for them.
@@ -335,59 +358,59 @@
Applications employing ncurses extensions should condition their use on
the visibility of the NCURSES_VERSION preprocessor macro.
- These functions are described in X/Open Curses Issue 4. It specifies
+ These functions are described in X/Open Curses Issue 4. It specifies
no error conditions for them.
- The defaults specified for forms-drawing characters apply in the POSIX
- locale. X/Open Curses makes it clear that the WACS_ symbols should be
- defined as a pointer to cchar_t data, e.g., in the discussion of
+ The defaults specified for forms-drawing characters apply in the POSIX
+ locale. X/Open Curses makes it clear that the WACS_ symbols should be
+ defined as a pointer to cchar_t data, e.g., in the discussion of
border_set. A few implementations are problematic:
o NetBSD curses defines the symbols as a wchar_t within a cchar_t.
- o HP-UX curses equates some of the ACS_ symbols to the analogous
- WACS_ symbols as if the ACS_ symbols were wide characters. The
- misdefined symbols are the arrows and other symbols which are not
+ o HP-UX curses equates some of the ACS_ symbols to the analogous
+ WACS_ symbols as if the ACS_ symbols were wide characters. The
+ misdefined symbols are the arrows and other symbols which are not
used for line-drawing.
- X/Open Curses does not specify symbols for thick- or double-lines.
+ X/Open Curses does not specify symbols for thick- or double-lines.
SVr4 curses implementations defined their line-drawing symbols in terms
- of intermediate symbols. ncurses extends those symbols, providing new
+ of intermediate symbols. ncurses extends those symbols, providing new
definitions not found in SVr4 implementations.
- Not all Unicode-capable terminals provide support for VT100-style
+ Not all Unicode-capable terminals provide support for VT100-style
alternate character sets (i.e., the acsc_chars (acsc) capability), with
- their corresponding line-drawing characters. X/Open Curses did not
+ their corresponding line-drawing characters. X/Open Curses did not
address the aspect of integrating Unicode with line-drawing characters.
- Existing implementations of System V curses (AIX, HP-UX, Solaris) use
- only the acsc_chars (acsc) character-mapping to provide this feature.
- As a result, those implementations can use only single-byte line-
- drawing characters. ncurses 5.3 (2002) provided a table of Unicode
- values to solve these problems. NetBSD curses incorporated that table
+ Existing implementations of System V curses (AIX, HP-UX, Solaris) use
+ only the acsc_chars (acsc) character-mapping to provide this feature.
+ As a result, those implementations can use only 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.
- ncurses uses the Unicode values instead of the terminal type
+ ncurses uses the Unicode values instead of the terminal type
description's acsc_chars (acsc) mapping as discussed in ncurses(3x) for
- the environment variable NCURSES_NO_UTF8_ACS. In contrast, for the
+ the environment variable NCURSES_NO_UTF8_ACS. In contrast, for the
same cases, the line-drawing characters described in addch(3x) will use
only the ASCII default values.
- Having Unicode available does not solve all of the problems with line-
+ Having Unicode available does not solve all of the problems with line-
drawing for curses:
- o The closest Unicode equivalents to the VT100 graphics S1, S3, S7,
- and S9 frequently are not displayed at the regular intervals which
+ o The closest Unicode equivalents to the VT100 graphics S1, S3, S7,
+ and S9 frequently are not displayed at the regular intervals which
the terminal used.
- o The lantern is a special case. It originated with the AT&T 4410
- terminal in the early 1980s. There is no accessible documentation
+ o The lantern 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.
Lacking documentation, most readers assume that a stormlantern was
intended. But there are several possibilities, all with problems.
- Unicode 6.0 (2010) does provide two lantern symbols: U+1F383 and
- U+1F3EE. Those were not available in 2002, and are irrelevant
+ 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 Basic Multilingual Plane and as a result
are unavailable on many terminals. They are not storm lanterns, in
any case.
@@ -395,20 +418,20 @@
Most stormlanterns have a tapering glass chimney (to guard against
tipping); some have a wire grid protecting the chimney.
- For the tapering appearance, U+2603 was adequate. In use on a
+ For the tapering appearance, U+2603 was adequate. In use on a
terminal, no one can tell what the image represents. Unicode calls
it a snowman.
Others have suggested these alternatives: <section> U+00A7 (section
- mark), <Theta> U+0398 (theta), <Phi> U+03A6 (phi), <delta> U+03B4
+ mark), <Theta> U+0398 (theta), <Phi> U+03A6 (phi), <delta> U+03B4
(delta), U+2327 (x in a rectangle), U+256C (forms double vertical
and horizontal), and U+2612 (ballot box with x).
- The complex character type cchar_t can store more than one wide
- character (wchar_t). X/Open Curses does not mention this possibility,
- specifying behavior only where wch is a single character, either
+ The complex character type cchar_t can store more than one wide
+ character (wchar_t). X/Open Curses does not mention this possibility,
+ specifying behavior only where wch is a single character, either
spacing or non-spacing.
ncurses assumes that wch is constructed using setcchar(3x), and in turn
@@ -419,22 +442,22 @@
o holds one non-spacing character.
- In the latter case, ncurses adds the non-spacing character to the
+ In the latter case, ncurses adds the non-spacing character to the
active complex character.
- X/Open Curses Issue 4 (1995) initially specified these functions. The
+ X/Open Curses Issue 4 (1995) initially specified these functions. The
System V Interface Definition (SVID) Version 4 of the same year
- specified functions named waddwch (and the usual variants), echowchar,
+ specified functions named waddwch (and the usual variants), echowchar,
and wechowchar. These were later additions to SVr4.x, not appearing in
- the first SVr4 (1989). They differed from X/Open's later wadd_wch and
- wecho_wchar in that they each took an argument of type wchar_t instead
+ the first SVr4 (1989). They differed from X/Open's later wadd_wch and
+ wecho_wchar in that they each took an argument of type wchar_t instead
of cchar_t. SVID defined no WACS_ symbols.
- X/Open Curses Issue 4 also defined many of the WACS_ constants,
+ X/Open Curses Issue 4 also defined many of the WACS_ constants,
excepting WACS_GEQUAL, WACS_LEQUAL, WACS_NEQUAL, WACS_PI, WACS_S3,
- WACS_S7, and WACS_STERLING; and those for drawing thick and double
+ WACS_S7, and WACS_STERLING; and those for drawing thick and double
lines.
ncurses 5.3 (2002) furnished the remaining WACS_ constants.
@@ -445,12 +468,12 @@
its non-wide-character configuration.
curses(3x), curs_addwstr(3x), curs_add_wchstr(3x), curs_attr(3x),
- curs_bkgrnd(3x), curs_clear(3x), curs_getcchar(3x), curs_outopts(3x),
+ curs_bkgrnd(3x), curs_clear(3x), curs_getcchar(3x), curs_outopts(3x),
curs_refresh(3x), curs_variables(3x), putwc(3)
-ncurses 6.5 2025-04-05 curs_add_wch(3x)
+ncurses 6.5 2025-04-19 curs_add_wch(3x)
diff --git a/doc/html/man/curs_addch.3x.html b/doc/html/man/curs_addch.3x.html
index 837eed79..91e6aef3 100644
--- a/doc/html/man/curs_addch.3x.html
+++ b/doc/html/man/curs_addch.3x.html
@@ -28,19 +28,19 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: curs_addch.3x,v 1.135 2025/04/05 21:58:37 tom Exp @
+ * @Id: curs_addch.3x,v 1.136 2025/04/19 22:53:46 tom Exp @
-->
-curs_addch 3x 2025-04-05 ncurses 6.5 Library calls
+curs_addch 3x 2025-04-19 ncurses 6.5 Library calls
-
curs_addch(3x) Library calls curs_addch(3x)
@@ -119,16 +119,6 @@
is a blankcharacter, and therefore combines with the window's
background character; see curs_bkgd(3x).
- 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.
-
- If the cursor is at the bottom of the scrolling region when advancement
- occurs at the right margin, and scrollok(3x) is enabled for win, the
- scrolling region scrolls up one line and the cursor wraps as above.
- Otherwise, advancement and scrolling do not occur, and waddch returns
- ERR.
-
If ch is a backspace, carriage return, line feed, or tab, the cursor
moves appropriately within the window.
@@ -142,37 +132,70 @@
margin.
o 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 TABSIZE extension; see
+ line); these are placed at every eighth column by default.
+
+ Alter the tab interval with the TABSIZE extension; see
curs_variables(3x).
- If ch is any other nonprintable character, it is drawn in printable
+ If ch is any other nonprintable character, it is drawn in printable
form using the same convention as unctrl(3x). Calling winch(3x) on the
- location of a nonprintable character does not return the character
+ location of a nonprintable character does not return the character
itself, but its unctrl(3x) representation.
+ Adding printable characters with waddch causes it to wrap at the right
+ margin of the window:
+
+ o 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.
+
+ o If the cursor is at the bottom of the scrolling region when
+ advancement occurs at the right margin, and scrollok(3x) is enabled
+ for win, the scrolling region scrolls up one line and the cursor
+ wraps as above. Otherwise, advancement and scrolling do not occur,
+ and waddch returns ERR.
+
+ A window's margins may coincide with the screen boundaries. This may
+ be a problem when ncurses updates the screen to match the curses
+ window. When their right and bottom margins coincide, ncurses uses
+ different strategies to handle the variations of scrolling and wrapping
+ at the lower-right corner by depending on the terminal capabilities:
+
+ o If the terminal does not automatically wrap as characters are added
+ at the right margin (i.e., auto right margins), ncurses writes the
+ character directly.
+
+ o If the terminal has auto right margins, but also has capabilities
+ for turning auto margins off and on, ncurses turns the auto margin
+ feature off temporarily when writing to the lower-right corner.
+
+ o If the terminal has an insertion mode which can be turned off and
+ on, ncurses writes the character just before the lower-right
+ corner, and then inserts a character to push the update into the
+ corner.
+
- echochar and wechochar are equivalent to calling (w)addch followed by
- (w)refresh on stdscr or the specified window. curses 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
+ echochar and wechochar are equivalent to calling (w)addch followed by
+ (w)refresh on stdscr or the specified window. curses 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.
- curses defines macros starting with ACS_ that can be used with waddch
- to write line-drawing and other symbols to the screen. ncurses terms
- these forms-drawingcharacters.curses uses the ACS default listed
- below if the terminal type lacks the acs_chars (acsc) 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"
+ curses defines macros starting with ACS_ that can be used with waddch
+ to write line-drawing and other symbols to the screen. ncurses terms
+ these forms-drawingcharacters.curses uses the ACS default listed
+ below if the terminal type lacks the acs_chars (acsc) 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 acs_chars
- (acsc) string capability, and the characters in it may appear on the
+ (acsc) 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
+ support. The name "ACS" originates in the Alternate Character Set
feature of the DEC VT100 terminal.
ACSacsc
@@ -180,7 +203,6 @@
------------------------------------------------------------------------
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)
@@ -220,27 +242,27 @@
o the curses screen has not been initialized,
- o (for functions taking a WINDOW pointer argument) win is a null
+ o (for functions taking a WINDOW pointer argument) win is a null
pointer,
- o wrapping to a new line is impossible because scrollok(3x) has not
- been called on win (or stdscr, as applicable) when a write to its
+ o wrapping to a new line is impossible because scrollok(3x) has not
+ been called on win (or stdscr, as applicable) when a write to its
bottom right location is attempted, or
- o it is not possible to add a complete character at the cursor
+ o it is not possible to add a complete character at the cursor
position.
The last may be due to different causes:
- o conversion of a wide character to a multibyte character sequence
+ o conversion of a wide character to a multibyte character sequence
can fail, or
- o 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 waddch with
+ o 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 waddch with
wide characters.
- Functions prefixed with "mv" first perform cursor movement and fail if
+ Functions prefixed with "mv" first perform cursor movement and fail if
the position (y, x) is outside the window boundaries.
@@ -250,11 +272,11 @@
The symbols ACS_S3, ACS_S7, ACS_LEQUAL, ACS_GEQUAL, ACS_PI, ACS_NEQUAL,
- and ACS_STERLING were not documented in any publicly released System V
- and are not standard. However, many publicly available terminfo
- entries include acs_chars (acsc) capabilities in which their key
- characters (pryz{|}) are embedded, and a second-hand list of their
- character descriptions has come to light. The ncurses developers
+ and ACS_STERLING were not documented in any publicly released System V
+ and are not standard. However, many publicly available terminfo
+ entries include acs_chars (acsc) capabilities in which their key
+ characters (pryz{|}) are embedded, and a second-hand list of their
+ character descriptions has come to light. The ncurses developers
invented ACS-prefixed names for them.
@@ -265,79 +287,79 @@
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
+ SVr4 describes a successful return value only as "an integer value
other than ERR".
- The defaults specified for forms-drawing characters apply in the POSIX
+ The defaults specified for forms-drawing characters apply in the POSIX
locale.
- X/Open Curses states that the ACS_ definitions are char constants.
+ X/Open Curses states that the ACS_ definitions are char constants.
Some implementations are problematic.
- o Solaris curses, for example, defines the ACS symbols as constants;
+ o Solaris curses, for example, defines the ACS symbols as constants;
others define them as elements of an array.
- SVr4 used an array, acs_map, as does ncurses. NetBSD curses also
- uses an array, actually named _acs_char, with a "#define" for
+ SVr4 used an array, acs_map, as does ncurses. NetBSD curses also
+ uses an array, actually named _acs_char, with a "#define" for
compatibility.
- o HP-UX curses equates some of the ACS_ symbols to the analogous
- WACS_ symbols as if the ACS_ symbols were wide characters (see
- curs_add_wch(3x)). The misdefined symbols are the arrows and
+ o HP-UX curses equates some of the ACS_ symbols to the analogous
+ WACS_ symbols as if the ACS_ symbols were wide characters (see
+ curs_add_wch(3x)). The misdefined symbols are the arrows and
others that are not used for line drawing.
- o X/Open Curses (Issues 2 through 7) has a typographical error for
- the ACS_LANTERN symbol, equating its "VT100+ Character" to "I"
- (capital I), while the header files for SVr4 curses and other
+ o X/Open Curses (Issues 2 through 7) has a typographical error for
+ the ACS_LANTERN symbol, equating its "VT100+ Character" to "I"
+ (capital I), while the header files for SVr4 curses and other
implementations use "i" (small i).
- None of the terminal descriptions on Unix platforms use uppercase
- I, except for Solaris (in its terminfo entry for screen(1),
- apparently based on the X/Open documentation around 1995). On the
- other hand, its gs6300 (AT&T PC6300 with EMOTS Terminal Emulator)
+ None of the terminal descriptions on Unix platforms use uppercase
+ I, except for Solaris (in its terminfo entry for screen(1),
+ apparently based on the X/Open documentation around 1995). On the
+ other hand, its gs6300 (AT&T PC6300 with EMOTS Terminal Emulator)
description uses lowercase i.
The displayed values of ACS_ constants depend on
- o the ncurses ABI -- for example, wide-character versus non-wide-
- character configurations (the former is capable of displaying
+ o the ncurses ABI -- for example, wide-character versus non-wide-
+ character configurations (the former is capable of displaying
Unicode while the latter is not), and
o whether the locale uses UTF-8 encoding.
- In certain cases, the terminal is unable to display forms-drawing
- characters except by using UTF-8; see the discussion of the
+ In certain cases, the terminal is unable to display forms-drawing
+ characters except by using UTF-8; see the discussion of the
NCURSES_NO_UTF8_ACS environment variable in ncurses(3x).
- X/Open Curses assumes that the parameter passed to waddch 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 chtype, though the use of
- bit operations to combine the character code with attributes and a
+ X/Open Curses assumes that the parameter passed to waddch 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 chtype, though the use of
+ bit operations to combine the character code with attributes and a
color pair identifier into a chtype for passage to waddch is common. A
portable application uses only the macros discussed in curs_attr(3x) to
manipulate a chtype.
In ncurses, chtype holds an eight-bit character, but the library allows
- a multibyte character sequence to be passed via a succession of calls
- to waddch. Other implementations do not; a waddch call transmits
- exactly one character, which may be rendered in one or more screen
- locations depending on whether it is printable (see unctrl(3x)).
- Depending on the locale, ncurses inspects the byte passed in each
- waddch call and checks whether the latest call continues a multibyte
- character. When a character is complete, ncurses displays the
- character and advances the cursor. If the calling application
+ a multibyte character sequence to be passed via a succession of calls
+ to waddch. Other implementations do not; a waddch call transmits
+ exactly one character, which may be rendered in one or more screen
+ locations depending on whether it is printable (see unctrl(3x)).
+ Depending on the locale, ncurses inspects the byte passed in each
+ waddch call and checks whether the latest call continues a multibyte
+ character. When a character is complete, ncurses 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 wmove(3x) -- ncurses
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
+ foregoing behavior. Check whether a character can be represented as a
single byte in the current locale.
o If it can, call either waddch or wadd_wch.
@@ -348,24 +370,24 @@
4BSD (1980) introduced waddch and its variants.
- SVr3 (1987) added the echochar and wechochar functions and most of the
- ACS_ constants, except for ACS_GEQUAL, ACS_LEQUAL, ACS_NEQUAL, ACS_PI,
+ SVr3 (1987) added the echochar and wechochar functions and most of the
+ ACS_ constants, except for ACS_GEQUAL, ACS_LEQUAL, ACS_NEQUAL, ACS_PI,
ACS_S3, ACS_S7, and ACS_STERLING.
ncurses 1.9.6 (1995) furnished the remaining ACS_ constants.
diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html
index 40da05c6..295c03e9 100644
--- a/doc/html/man/ncurses.3x.html
+++ b/doc/html/man/ncurses.3x.html
@@ -61,7 +61,7 @@
displays with output optimized to minimize screen updates. ncurses
replaces the curses libraries from System V Release 4 Unix ("SVr4") and
4.4BSD Unix, the development of which ceased in the 1990s. This
- document describes ncurses version 6.5 (patch 20250405).
+ document describes ncurses version 6.5 (patch 20250419).
ncurses permits control of the terminal screen's contents; abstraction
and subdivision thereof with windows and pads; acquisition of keyboard
diff --git a/doc/html/man/terminfo.5.html b/doc/html/man/terminfo.5.html
index ed6a9322..6fb3dbf5 100644
--- a/doc/html/man/terminfo.5.html
+++ b/doc/html/man/terminfo.5.html
@@ -71,7 +71,7 @@
have, by specifying how to perform screen operations, and by specifying
padding requirements and initialization sequences.
- This document describes ncurses version 6.5 (patch 20250405).
+ This document describes ncurses version 6.5 (patch 20250419).
diff --git a/man/curs_add_wch.3x b/man/curs_add_wch.3x
index f56a99d4..db4b2795 100644
--- a/man/curs_add_wch.3x
+++ b/man/curs_add_wch.3x
@@ -28,8 +28,8 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_add_wch.3x,v 1.114 2025/04/05 21:58:37 tom Exp $
-.TH curs_add_wch 3X 2025-04-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.\" $Id: curs_add_wch.3x,v 1.115 2025/04/19 22:53:52 tom Exp $
+.TH curs_add_wch 3X 2025-04-19 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
.ie \n(.g \{\
.ds `` \(lq
.ds '' \(rq
@@ -191,26 +191,6 @@ are not written at the new cursor position but combine with the active
complex character until another spacing character is written to the
window or the cursor is moved.
.PP
-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.
-.PP
-If the cursor is at the bottom of the scrolling region
-when advancement occurs at the right margin,
-and \fB\%scrollok\fP(3X) is enabled for
-.IR win ,
-the scrolling region scrolls up one line
-and the cursor wraps as above.
-Otherwise,
-advancement and scrolling do not occur,
-and
-.B \%waddch
-returns
-.BR ERR "."
-.\" Does writing to the bottom-right character cell of the screen work
-.\" when `scrollok()` is disabled and the terminal lacks `ich` and
-.\" `ich1` capabilities?
-.PP
If
.I wch
is a
@@ -234,6 +214,7 @@ then advances as if from the right margin.
Tab advances the cursor to the next tab stop
(possibly on the next line);
these are placed at every eighth column by default.
+.IP
Alter the tab interval with the
.B \%TABSIZE
extension;
@@ -247,6 +228,53 @@ it is drawn in printable form using the same convention as
Calling \fB\%win_wch\fP(3X) on the location of a nonprintable character
does not return the character itself,
but its \fB\%wunctrl\fP(3X) representation.
+.PP
+Adding spacing characters with \fB\%wadd_wch\fP
+causes it to wrap at the right margin of the window:
+.bP
+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.
+.bP
+If the cursor is at the bottom of the scrolling region
+when advancement occurs at the right margin,
+and \fB\%scrollok\fP(3X) is enabled for
+.IR win ,
+the scrolling region scrolls up one line
+and the cursor wraps as above.
+Otherwise,
+advancement and scrolling do not occur,
+and
+.B \%wadd_wch
+returns
+.BR ERR "."
+.PP
+A window's margins may coincide with the screen boundaries.
+This may be a problem when
+.I \%ncurses
+updates the screen to match the curses window.
+When their right and bottom margins coincide,
+.I \%ncurses
+uses different strategies to handle the variations of scrolling and wrapping
+at the lower-right corner
+by depending on the terminal capabilities:
+.bP
+If the terminal does not automatically wrap as characters
+are added at the right margin
+(i.e., auto right margins),
+.I \%ncurses
+writes the character directly.
+.bP
+If the terminal has auto right margins,
+but also has capabilities for turning auto margins off and on,
+.I \%ncurses
+turns the auto margin feature off temporarily
+when writing to the lower-right corner.
+.bP
+If the terminal has an insertion mode which can be turned off and on,
+.I \%ncurses
+writes the character just before the lower-right corner,
+and then inserts a character to push the update into the corner.
.SS wecho_wchar
.B \%echo_wchar
and
diff --git a/man/curs_addch.3x b/man/curs_addch.3x
index 3cc610d5..83e2fcbb 100644
--- a/man/curs_addch.3x
+++ b/man/curs_addch.3x
@@ -28,8 +28,8 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addch.3x,v 1.135 2025/04/05 21:58:37 tom Exp $
-.TH curs_addch 3X 2025-04-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.\" $Id: curs_addch.3x,v 1.136 2025/04/19 22:53:46 tom Exp $
+.TH curs_addch 3X 2025-04-19 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
.ie \n(.g \{\
.ds `` \(lq
.ds '' \(rq
@@ -149,26 +149,6 @@ is a
and therefore combines with the window's background character;
see \fB\%curs_bkgd\fP(3X).
.PP
-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.
-.PP
-If the cursor is at the bottom of the scrolling region
-when advancement occurs at the right margin,
-and \fB\%scrollok\fP(3X) is enabled for
-.IR win ,
-the scrolling region scrolls up one line
-and the cursor wraps as above.
-Otherwise,
-advancement and scrolling do not occur,
-and
-.B \%waddch
-returns
-.BR ERR "."
-.\" Does writing to the bottom-right character cell of the screen work
-.\" when `scrollok()` is disabled and the terminal lacks `ich` and
-.\" `ich1` capabilities?
-.PP
If
.I ch
is a
@@ -192,6 +172,7 @@ then advances as if from the right margin.
Tab advances the cursor to the next tab stop
(possibly on the next line);
these are placed at every eighth column by default.
+.IP
Alter the tab interval with the
.B \%TABSIZE
extension;
@@ -205,6 +186,53 @@ it is drawn in printable form using the same convention as
Calling \fB\%winch\fP(3X) on the location of a nonprintable character
does not return the character itself,
but its \fB\%unctrl\fP(3X) representation.
+.PP
+Adding printable characters with \fB\%waddch\fP
+causes it to wrap at the right margin of the window:
+.bP
+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.
+.bP
+If the cursor is at the bottom of the scrolling region
+when advancement occurs at the right margin,
+and \fB\%scrollok\fP(3X) is enabled for
+.IR win ,
+the scrolling region scrolls up one line
+and the cursor wraps as above.
+Otherwise,
+advancement and scrolling do not occur,
+and
+.B \%waddch
+returns
+.BR ERR "."
+.PP
+A window's margins may coincide with the screen boundaries.
+This may be a problem when
+.I \%ncurses
+updates the screen to match the curses window.
+When their right and bottom margins coincide,
+.I \%ncurses
+uses different strategies to handle the variations of scrolling and wrapping
+at the lower-right corner
+by depending on the terminal capabilities:
+.bP
+If the terminal does not automatically wrap as characters
+are added at the right margin
+(i.e., auto right margins),
+.I \%ncurses
+writes the character directly.
+.bP
+If the terminal has auto right margins,
+but also has capabilities for turning auto margins off and on,
+.I \%ncurses
+turns the auto margin feature off temporarily
+when writing to the lower-right corner.
+.bP
+If the terminal has an insertion mode which can be turned off and on,
+.I \%ncurses
+writes the character just before the lower-right corner,
+and then inserts a character to push the update into the corner.
.SS wechochar
.B \%echochar
and
diff --git a/man/curs_printw.3x b/man/curs_printw.3x
index ca4e1bd4..a31f54ab 100644
--- a/man/curs_printw.3x
+++ b/man/curs_printw.3x
@@ -27,8 +27,8 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_printw.3x,v 1.60 2025/04/05 22:20:25 tom Exp $
-.TH curs_printw 3X 2025-04-05 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.\" $Id: curs_printw.3x,v 1.61 2025/04/19 23:28:38 tom Exp $
+.TH curs_printw 3X 2025-04-19 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
.ie \n(.g \{\
.ds `` \(lq
.ds '' \(rq
@@ -209,6 +209,19 @@ to the given window.
.\" GBR can't find a source to cite for this paraphrase,
.\" even after checking
.\" .
+.\"
+.\" The indicated paraphrase is from page 432:
+.\" Unix System V Programmer's Reference Manual
+.\" Prentice-Hall
+.\" ISBN 0-13-940479-1
+.\" (bitsavers has 3rd printing from 1987)
+.\"
+.\" This lists mvprintw without detail, and printw as "printf on stdscr":
+.\" Unix Programmer's Manual
+.\" System Calls and Library Routines
+.\" CBS College Publishing's UNIX System Library
+.\" Holt, Rinehard and Winston, 1986
+.\" ISBN 0-03-009314-7
.PP
SVr3 added
.IR \%vwprintw ","
diff --git a/package/debian-mingw/changelog b/package/debian-mingw/changelog
index ee5bdaf4..81ce3806 100644
--- a/package/debian-mingw/changelog
+++ b/package/debian-mingw/changelog
@@ -1,8 +1,8 @@
-ncurses6td (6.5+20250412) unstable; urgency=low
+ncurses6td (6.5+20250419) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey Sat, 12 Apr 2025 06:27:36 -0400
+ -- Thomas E. Dickey Sat, 19 Apr 2025 06:37:06 -0400
ncurses6 (5.9+20131005) unstable; urgency=low
diff --git a/package/debian-mingw64/changelog b/package/debian-mingw64/changelog
index ee5bdaf4..81ce3806 100644
--- a/package/debian-mingw64/changelog
+++ b/package/debian-mingw64/changelog
@@ -1,8 +1,8 @@
-ncurses6td (6.5+20250412) unstable; urgency=low
+ncurses6td (6.5+20250419) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey Sat, 12 Apr 2025 06:27:36 -0400
+ -- Thomas E. Dickey Sat, 19 Apr 2025 06:37:06 -0400
ncurses6 (5.9+20131005) unstable; urgency=low
diff --git a/package/debian/changelog b/package/debian/changelog
index c4dc1402..3138f461 100644
--- a/package/debian/changelog
+++ b/package/debian/changelog
@@ -1,8 +1,8 @@
-ncurses6td (6.5+20250412) unstable; urgency=low
+ncurses6td (6.5+20250419) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey Sat, 12 Apr 2025 06:27:36 -0400
+ -- Thomas E. Dickey Sat, 19 Apr 2025 06:37:06 -0400
ncurses6 (5.9+20120608) unstable; urgency=low
diff --git a/package/mingw-ncurses.nsi b/package/mingw-ncurses.nsi
index b365d179..542d448c 100644
--- a/package/mingw-ncurses.nsi
+++ b/package/mingw-ncurses.nsi
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.698 2025/04/12 10:27:36 tom Exp $
+; $Id: mingw-ncurses.nsi,v 1.699 2025/04/19 10:37:06 tom Exp $
; TODO add examples
; TODO bump ABI to 6
@@ -10,7 +10,7 @@
!define VERSION_MAJOR "6"
!define VERSION_MINOR "5"
!define VERSION_YYYY "2025"
-!define VERSION_MMDD "0412"
+!define VERSION_MMDD "0419"
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
!define MY_ABI "5"
diff --git a/package/mingw-ncurses.spec b/package/mingw-ncurses.spec
index f00e8e42..5febe3fb 100644
--- a/package/mingw-ncurses.spec
+++ b/package/mingw-ncurses.spec
@@ -3,7 +3,7 @@
Summary: shared libraries for terminal handling
Name: mingw32-ncurses6
Version: 6.5
-Release: 20250412
+Release: 20250419
License: X11
Group: Development/Libraries
URL: https://invisible-island.net/ncurses/
diff --git a/package/ncurses.spec b/package/ncurses.spec
index 5cdade80..6a06c330 100644
--- a/package/ncurses.spec
+++ b/package/ncurses.spec
@@ -1,7 +1,7 @@
Summary: shared libraries for terminal handling
Name: ncurses6
Version: 6.5
-Release: 20250412
+Release: 20250419
License: X11
Group: Development/Libraries
URL: https://invisible-island.net/ncurses/
diff --git a/package/ncursest.spec b/package/ncursest.spec
index bf970929..cb235c54 100644
--- a/package/ncursest.spec
+++ b/package/ncursest.spec
@@ -1,7 +1,7 @@
Summary: Curses library with POSIX thread support.
Name: ncursest6
Version: 6.5
-Release: 20250412
+Release: 20250419
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz