# ncurses 6.5 - patch 20250419 - Thomas E. Dickey # # ------------------------------------------------------------------------------ # # Ncurses 6.5 is at # https://invisible-island.net/archives/ncurses/ # https://invisible-mirror.net/archives/ncurses/ # https://ftp.gnu.org/gnu/ncurses/ # # Patches for ncurses 6.5 can be found at # https://invisible-island.net/archives/ncurses/6.5 # https://invisible-mirror.net/archives/ncurses/6.5 # # ------------------------------------------------------------------------------ # https://invisible-island.net/archives/ncurses/6.5/ncurses-6.5-20250419.patch.gz # patch by Thomas E. Dickey # created Sun Apr 20 00:10:18 UTC 2025 # ------------------------------------------------------------------------------ # NEWS | 6 - # VERSION | 2 # dist.mk | 4 # doc/html/man/curs_add_wch.3x.html | 197 ++++++++++++++++++++---------------- # doc/html/man/curs_addch.3x.html | 192 +++++++++++++++++++---------------- # doc/html/man/curs_printw.3x.html | 8 - # doc/html/man/ncurses.3x.html | 2 # doc/html/man/terminfo.5.html | 2 # doc/html/man/user_caps.5.html | 4 # man/curs_add_wch.3x | 72 +++++++++---- # man/curs_addch.3x | 72 +++++++++---- # man/curs_printw.3x | 17 ++- # package/debian-mingw/changelog | 4 # package/debian-mingw64/changelog | 4 # package/debian/changelog | 4 # package/mingw-ncurses.nsi | 4 # package/mingw-ncurses.spec | 2 # package/ncurses.spec | 2 # package/ncursest.spec | 2 # 19 files changed, 359 insertions(+), 241 deletions(-) # ------------------------------------------------------------------------------ Index: NEWS Prereq: 1.4273 --- ncurses-6.5-20250412+/NEWS 2025-04-12 21:08:43.000000000 +0000 +++ ncurses-6.5-20250419/NEWS 2025-04-19 23:31:31.000000000 +0000 @@ -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 @@ 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) Index: VERSION --- ncurses-6.5-20250412+/VERSION 2025-04-12 10:27:36.000000000 +0000 +++ ncurses-6.5-20250419/VERSION 2025-04-19 10:37:06.000000000 +0000 @@ -1 +1 @@ -5:0:10 6.5 20250412 +5:0:10 6.5 20250419 Index: dist.mk Prereq: 1.1664 --- ncurses-6.5-20250412+/dist.mk 2025-04-12 10:27:36.000000000 +0000 +++ ncurses-6.5-20250419/dist.mk 2025-04-19 10:37:06.000000000 +0000 @@ -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 @@ # 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) Index: doc/html/man/curs_add_wch.3x.html --- ncurses-6.5-20250412+/doc/html/man/curs_add_wch.3x.html 2025-04-05 22:33:03.000000000 +0000 +++ ncurses-6.5-20250419/doc/html/man/curs_add_wch.3x.html 2025-04-19 23:33:02.000000000 +0000 @@ -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 2025-04-05 ncurses 6.5 Library calls +curs_add_wch 3x 2025-04-19 ncurses 6.5 Library calls -

curs_add_wch 3x 2025-04-05 ncurses 6.5 Library calls

+

curs_add_wch 3x 2025-04-19 ncurses 6.5 Library calls

 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.
+
 
 

wecho_wchar

-       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.
 
 
 

Forms-Drawing Characters

-       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-drawing  characters.   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-drawing  characters.   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.
 
                        Unicode   ACS       acsc
@@ -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"):
 
                          Unicode   ASCII     acsc
@@ -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.
 
 
 

NOTES

-       add_wch, mvadd_wch, mvwadd_wch, and echo_wchar may  be  implemented  as
+       add_wch,  mvadd_wch,  mvwadd_wch,  and echo_wchar may be implemented as
        macros.
 
 
 

EXTENSIONS

-       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 storm lantern 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 storm lanterns 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).
 
 
 

Complex Characters

-       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.
 
 
 

HISTORY

-       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)