diff --git a/NEWS b/NEWS
index 92c2864b..46df07d3 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.4398 2026/01/04 00:59:35 tom Exp $
+-- $Id: NEWS,v 1.4412 2026/01/18 00:54:25 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
@@ -46,6 +46,32 @@ 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.
+20260117
+ + add "alt_" to special key-prefix check for "djgpp" terminfo
+ + provide a generated list of user-defined special keys (adapted from
+ patch by Jakub Horky) -TD
+ + rename vt100+keypad, etc., to vt100+keypad+sco, etc., to keep
+ historical blocks while providing for renaming of vt220+keypad as
+ vt100+keypad (prompted by patch by Jakub Horky) -TD
+ + use vt100+keypad instead of vt220+keypad (patch by Jakub Horky)
+ + use vt100+keypad in putty+keypad, replacing kpXX extension -TD
+ + remove vt100+fnkeys-sco from putty -TD
+ + fix link_test.c for configuration without extended colors by
+ adjusting ifdefs and improving MKlib_gen.sh by checking for #if
+ statements with only a 0 or 1 parameter.
+ + fixes for "make check" (report by Brian Inglis):
+ + adjust definition of USE_TRACEF
+ + modify ncurses/wcwidth.h
+ + modify makefile to add dependencies needed in shared library
+ + modify makefile to work with libtool
+ + separate ncurses/tty/lib_mvcur.c test-driver from routine checks
+ + add a paragraph to user_caps.5 to mention extended capabilities which
+ are not documented as part of ncurses.
+ + use symbol DEFAULT_TERM_VAR for several cases where getenv("TERM")
+ returns null pointer.
+ + modify test/demo_new_pair.c to fix build with SmartOS (report by
+ Thomas Klausner).
+
20260103
+ cancel ncv in putty (patch by Jakub Horky)
+ add NQ to list of user-definable capabilities in user_caps(5) (patch
diff --git a/VERSION b/VERSION
index 84b0abfc..001a795f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5:0:10 6.6 20260103
+5:0:10 6.6 20260117
diff --git a/configure b/configure
index 48ad381f..bf6acb9d 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.in Revision: 1.824 .
+# From configure.in Revision: 1.826 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by Autoconf 2.52.20250126.
#
@@ -29955,9 +29955,17 @@ else
CHECK_BUILD=
fi
+# provide for commenting-out makefile rules building/using shared libraries
+if test "$DFT_LWR_MODEL" = normal
+then
+ NO_SHARED=
+else
+ NO_SHARED="#"
+fi
+
# This is used for the *-config script and *.pc data files.
-echo "$as_me:29960: checking for linker search path" >&5
+echo "$as_me:29968: checking for linker search path" >&5
echo $ECHO_N "checking for linker search path... $ECHO_C" >&6
if test "${cf_cv_ld_searchpath+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -30005,7 +30013,7 @@ then
cf_pathlist="$cf_pathlist /lib /usr/lib"
;;
(*)
- { echo "$as_me:30008: WARNING: problem with Solaris architecture" >&5
+ { echo "$as_me:30016: WARNING: problem with Solaris architecture" >&5
echo "$as_me: WARNING: problem with Solaris architecture" >&2;}
;;
esac
@@ -30046,7 +30054,7 @@ done
test -z "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath=/usr/lib
fi
-echo "$as_me:30049: result: $cf_cv_ld_searchpath" >&5
+echo "$as_me:30057: result: $cf_cv_ld_searchpath" >&5
echo "${ECHO_T}$cf_cv_ld_searchpath" >&6
LD_SEARCHPATH=`echo "$cf_cv_ld_searchpath"|sed -e 's/ /|/g'`
@@ -30136,7 +30144,7 @@ DEFS=-DHAVE_CONFIG_H
: "${CONFIG_STATUS=./config.status}"
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:30139: creating $CONFIG_STATUS" >&5
+{ echo "$as_me:30147: creating $CONFIG_STATUS" >&5
echo "$as_me: creating $CONFIG_STATUS" >&6;}
cat >"$CONFIG_STATUS" <<_ACEOF
#! $SHELL
@@ -30317,7 +30325,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
echo "$ac_cs_version"; exit 0 ;;
--he | --h)
# Conflict between --help and --header
- { { echo "$as_me:30320: error: ambiguous option: $1
+ { { echo "$as_me:30328: error: ambiguous option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: ambiguous option: $1
Try \`$0 --help' for more information." >&2;}
@@ -30336,7 +30344,7 @@ Try \`$0 --help' for more information." >&2;}
ac_need_defaults=false;;
# This is an error.
- -*) { { echo "$as_me:30339: error: unrecognized option: $1
+ -*) { { echo "$as_me:30347: error: unrecognized option: $1
Try \`$0 --help' for more information." >&5
echo "$as_me: error: unrecognized option: $1
Try \`$0 --help' for more information." >&2;}
@@ -30470,7 +30478,7 @@ do
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
"include/ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/ncurses_cfg.h:include/ncurses_cfg.hin" ;;
- *) { { echo "$as_me:30473: error: invalid argument: $ac_config_target" >&5
+ *) { { echo "$as_me:30481: error: invalid argument: $ac_config_target" >&5
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
esac
@@ -30870,6 +30878,7 @@ s,@UNALTERED_SYMS@,$UNALTERED_SYMS,;t t
s,@ADAGEN_LDFLAGS@,$ADAGEN_LDFLAGS,;t t
s,@CHECK_BUILD@,$CHECK_BUILD,;t t
s,@PRIVATE_LIBS@,$PRIVATE_LIBS,;t t
+s,@NO_SHARED@,$NO_SHARED,;t t
s,@LD_SEARCHPATH@,$LD_SEARCHPATH,;t t
CEOF
@@ -31003,7 +31012,7 @@ done; }
esac
if test x"$ac_file" != x-; then
- { echo "$as_me:31006: creating $ac_file" >&5
+ { echo "$as_me:31015: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
@@ -31021,7 +31030,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo "$tmp"/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:31024: error: cannot find input file: $f" >&5
+ test -f "$f" || { { echo "$as_me:31033: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo "$f";;
@@ -31034,7 +31043,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo "$srcdir/$f"
else
# /dev/null tree
- { { echo "$as_me:31037: error: cannot find input file: $f" >&5
+ { { echo "$as_me:31046: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@@ -31050,7 +31059,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
if test -n "$ac_seen"; then
ac_used=`grep '@datarootdir@' "$ac_item"`
if test -z "$ac_used"; then
- { echo "$as_me:31053: WARNING: datarootdir was used implicitly but not set:
+ { echo "$as_me:31062: WARNING: datarootdir was used implicitly but not set:
$ac_seen" >&5
echo "$as_me: WARNING: datarootdir was used implicitly but not set:
$ac_seen" >&2;}
@@ -31059,7 +31068,7 @@ $ac_seen" >&2;}
fi
ac_seen=`grep '${datarootdir}' "$ac_item"`
if test -n "$ac_seen"; then
- { echo "$as_me:31062: WARNING: datarootdir was used explicitly but not set:
+ { echo "$as_me:31071: WARNING: datarootdir was used explicitly but not set:
$ac_seen" >&5
echo "$as_me: WARNING: datarootdir was used explicitly but not set:
$ac_seen" >&2;}
@@ -31104,7 +31113,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
ac_init=`$EGREP '[ ]*'$ac_name'[ ]*=' "$ac_file"`
if test -z "$ac_init"; then
ac_seen=`echo "$ac_seen" |sed -e 's,^,'"$ac_file"':,'`
- { echo "$as_me:31107: WARNING: Variable $ac_name is used but was not set:
+ { echo "$as_me:31116: WARNING: Variable $ac_name is used but was not set:
$ac_seen" >&5
echo "$as_me: WARNING: Variable $ac_name is used but was not set:
$ac_seen" >&2;}
@@ -31115,7 +31124,7 @@ $ac_seen" >&2;}
$EGREP -n '@[A-Z_][A-Z_0-9]+@' "$ac_file" >>"$tmp"/out
if test -s "$tmp"/out; then
ac_seen=`sed -e 's,^,'"$ac_file"':,' < "$tmp"/out`
- { echo "$as_me:31118: WARNING: Some variables may not be substituted:
+ { echo "$as_me:31127: WARNING: Some variables may not be substituted:
$ac_seen" >&5
echo "$as_me: WARNING: Some variables may not be substituted:
$ac_seen" >&2;}
@@ -31164,7 +31173,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
* ) ac_file_in=$ac_file.in ;;
esac
- test x"$ac_file" != x- && { echo "$as_me:31167: creating $ac_file" >&5
+ test x"$ac_file" != x- && { echo "$as_me:31176: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
# First look for the input files in the build tree, otherwise in the
@@ -31175,7 +31184,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo "$tmp"/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:31178: error: cannot find input file: $f" >&5
+ test -f "$f" || { { echo "$as_me:31187: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@@ -31188,7 +31197,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo "$srcdir/$f"
else
# /dev/null tree
- { { echo "$as_me:31191: error: cannot find input file: $f" >&5
+ { { echo "$as_me:31200: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@@ -31246,7 +31255,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
rm -f "$tmp"/in
if test x"$ac_file" != x-; then
if cmp -s "$ac_file" "$tmp/config.h" 2>/dev/null; then
- { echo "$as_me:31249: $ac_file is unchanged" >&5
+ { echo "$as_me:31258: $ac_file is unchanged" >&5
echo "$as_me: $ac_file is unchanged" >&6;}
else
ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
@@ -31633,7 +31642,7 @@ cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
(cygdll|msysdll|mingw|msvcdll)
test "x$with_shared_cxx" = xno && test -n "$verbose" && echo " overriding CXX_MODEL to SHARED" 1>&6
-echo "${as_me:-configure}:31636: testing overriding CXX_MODEL to SHARED ..." 1>&5
+echo "${as_me:-configure}:31645: testing overriding CXX_MODEL to SHARED ..." 1>&5
with_shared_cxx=yes
;;
diff --git a/configure.in b/configure.in
index ad79dc9a..3188a651 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright 2018-2024,2025 Thomas E. Dickey *
+dnl Copyright 2018-2025,2026 Thomas E. Dickey *
dnl Copyright 1998-2017,2018 Free Software Foundation, Inc. *
dnl *
dnl Permission is hereby granted, free of charge, to any person obtaining a *
@@ -29,7 +29,7 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: configure.in,v 1.824 2025/12/27 00:12:13 tom Exp $
+dnl $Id: configure.in,v 1.826 2026/01/14 08:51:49 tom Exp $
dnl Process this file with autoconf to produce a configure script.
dnl
dnl For additional information, see
@@ -38,7 +38,7 @@ dnl https://invisible-island.net/autoconf/my-autoconf.html
dnl
dnl ---------------------------------------------------------------------------
AC_PREREQ(2.52.20210101)
-AC_REVISION($Revision: 1.824 $)
+AC_REVISION($Revision: 1.826 $)
AC_INIT
AC_CONFIG_SRCDIR([ncurses/base/lib_initscr.c])
AC_CONFIG_HEADERS([include/ncurses_cfg.h:include/ncurses_cfg.hin])
@@ -2560,6 +2560,15 @@ AC_SUBST(ADAGEN_LDFLAGS)
AC_SUBST(CHECK_BUILD)
AC_SUBST(PRIVATE_LIBS)
+# provide for commenting-out makefile rules building/using shared libraries
+if test "$DFT_LWR_MODEL" = normal
+then
+ NO_SHARED=
+else
+ NO_SHARED="#"
+fi
+AC_SUBST(NO_SHARED)
+
# This is used for the *-config script and *.pc data files.
CF_LD_SEARCHPATH
diff --git a/dist.mk b/dist.mk
index 4fef5048..5aa4b79d 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.1712 2026/01/04 00:59:54 tom Exp $
+# $Id: dist.mk,v 1.1714 2026/01/17 11:18:11 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 = 6
-NCURSES_PATCH = 20260103
+NCURSES_PATCH = 20260117
# 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/ncurses.3x.html b/doc/html/man/ncurses.3x.html
index b27c8380..70e051bb 100644
--- a/doc/html/man/ncurses.3x.html
+++ b/doc/html/man/ncurses.3x.html
@@ -59,7 +59,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.6 (patch 20251230).
+ document describes ncurses version 6.6 (patch 20260117).
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 0fe01942..1a26af00 100644
--- a/doc/html/man/terminfo.5.html
+++ b/doc/html/man/terminfo.5.html
@@ -72,7 +72,7 @@
have, by specifying how to perform screen operations, and by specifying
padding requirements and initialization sequences.
- This document describes ncurses version 6.6 (patch 20251230).
+ This document describes ncurses version 6.6 (patch 20260117).
user_caps(5) File formats user_caps(5)
@@ -317,6 +317,14 @@
%p2%d;
%?%p4%tM%em%;,
+ Some of these extended capabilities have parameters which ncurses
+ may use in the tparm, tiparm, or tiparm_s functions. The ncurses
+ library checks to ensure that both standard and extended
+ capabilities have the expected number and type of parameters. The
+ terminfo compiler tic has similar checks for these extensions as
+ well as for those which are used by other programs, which include
+ mintty, screen, tack, tmux, vim, and xterm.
+
Several terminals provide the ability to send distinct strings for
@@ -406,7 +414,7 @@
XTermControlSequences provides further information on the xterm(1)
features that are used in these extended capabilities.
-ncurses 6.6 2025-11-11 user_caps(5)
+ncurses 6.6 2026-01-11 user_caps(5)
diff --git a/include/curses.h.in b/include/curses.h.in
index 0541e35a..7587b725 100644
--- a/include/curses.h.in
+++ b/include/curses.h.in
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 2018-2025,2026 Thomas E. Dickey *
* Copyright 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -33,7 +33,7 @@
* and: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: curses.h.in,v 1.299 2025/08/08 23:19:21 tom Exp $ */
+/* $Id: curses.h.in,v 1.300 2026/01/15 00:38:24 tom Exp $ */
#ifndef __NCURSES_H
#define __NCURSES_H
@@ -944,18 +944,10 @@ extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */
#define NCURSES_EXT_FUNCS @NCURSES_PATCH@ /* NCURSES_PATCH */
typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
-extern NCURSES_EXPORT(int) alloc_pair (int, int);
extern NCURSES_EXPORT(int) assume_default_colors (int, int);
extern NCURSES_EXPORT(const char *) curses_version (void);
extern NCURSES_EXPORT(int) define_key (const char *, int);
-extern NCURSES_EXPORT(int) extended_color_content(int, int *, int *, int *);
-extern NCURSES_EXPORT(int) extended_pair_content(int, int *, int *);
-extern NCURSES_EXPORT(int) extended_slk_color(int);
-extern NCURSES_EXPORT(int) find_pair (int, int);
-extern NCURSES_EXPORT(int) free_pair (int);
extern NCURSES_EXPORT(int) get_escdelay (void);
-extern NCURSES_EXPORT(int) init_extended_color(int, int, int, int);
-extern NCURSES_EXPORT(int) init_extended_pair(int, int, int);
extern NCURSES_EXPORT(int) is_cbreak(void);
extern NCURSES_EXPORT(int) is_echo(void);
extern NCURSES_EXPORT(int) is_nl(void);
@@ -965,7 +957,6 @@ extern NCURSES_EXPORT(int) key_defined (const char *);
extern NCURSES_EXPORT(char *) keybound (int, int);
extern NCURSES_EXPORT(int) keyok (int, bool);
extern NCURSES_EXPORT(void) nofilter(void);
-extern NCURSES_EXPORT(void) reset_color_pairs (void);
extern NCURSES_EXPORT(int) resize_term (int, int);
extern NCURSES_EXPORT(int) resizeterm (int, int);
extern NCURSES_EXPORT(int) set_escdelay (int);
@@ -976,6 +967,18 @@ extern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *);
extern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *);
extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int);
+#if @NCURSES_EXT_COLORS@ /* NCURSES_EXT_COLORS */
+extern NCURSES_EXPORT(int) alloc_pair (int, int);
+extern NCURSES_EXPORT(int) extended_color_content(int, int *, int *, int *);
+extern NCURSES_EXPORT(int) extended_pair_content(int, int *, int *);
+extern NCURSES_EXPORT(int) extended_slk_color(int);
+extern NCURSES_EXPORT(int) find_pair (int, int);
+extern NCURSES_EXPORT(int) free_pair (int);
+extern NCURSES_EXPORT(int) init_extended_color(int, int, int, int);
+extern NCURSES_EXPORT(int) init_extended_pair(int, int, int);
+extern NCURSES_EXPORT(void) reset_color_pairs (void);
+#endif
+
#if @NCURSES_XNAMES@ /* NCURSES_XNAMES */
#undef NCURSES_XNAMES
#define NCURSES_XNAMES @NCURSES_XNAMES@ /* NCURSES_XNAMES */
@@ -1095,17 +1098,9 @@ extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_tioctl) (SCREEN*, bool); /* impl
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidattr) (SCREEN*, chtype); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidputs) (SCREEN*, chtype, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
#if @NCURSES_EXT_FUNCS@ /* NCURSES_EXT_FUNCS */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(alloc_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(assume_default_colors) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(define_key) (SCREEN*, const char *, int); /* implemented:EXT_SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_color_content) (SCREEN*, int, int *, int *, int *); /* implemented:EXT_SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_pair_content) (SCREEN*, int, int *, int *); /* implemented:EXT_SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_slk_color) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(find_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(free_pair) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*); /* implemented:EXT_SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_color) (SCREEN*, int, int, int, int); /* implemented:EXT_SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_pair) (SCREEN*, int, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_cbreak) (SCREEN*); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_echo) (SCREEN*); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_nl) (SCREEN*); /* implemented:EXT_SP_FUNC */
@@ -1115,13 +1110,25 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *);
extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */ /* implemented:EXT_SP_FUNC */
-extern NCURSES_EXPORT(void) NCURSES_SP_NAME(reset_color_pairs) (SCREEN*); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resize_term) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resizeterm) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_tabsize) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_default_colors) (SCREEN*); /* implemented:EXT_SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
+
+#if @NCURSES_EXT_COLORS@ /* NCURSES_EXT_COLORS */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(alloc_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_color_content) (SCREEN*, int, int *, int *, int *); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_pair_content) (SCREEN*, int, int *, int *); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_slk_color) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(find_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(free_pair) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_color) (SCREEN*, int, int, int, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_pair) (SCREEN*, int, int, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(void) NCURSES_SP_NAME(reset_color_pairs) (SCREEN*); /* implemented:EXT_SP_FUNC */
+#endif /* NCURSES_EXT_COLORS */
+
#endif /* NCURSES_EXT_FUNCS */
#else /* !NCURSES_SP_FUNCS */
#undef NCURSES_SP_FUNCS
diff --git a/man/user_caps.5 b/man/user_caps.5
index e4057737..c50928c7 100644
--- a/man/user_caps.5
+++ b/man/user_caps.5
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright 2018-2024,2025 Thomas E. Dickey *
+.\" Copyright 2018-2025,2026 Thomas E. Dickey *
.\" Copyright 2017 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
@@ -28,8 +28,8 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: user_caps.5,v 1.60 2025/11/12 01:01:01 tom Exp $
-.TH user_caps 5 2025-11-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats"
+.\" $Id: user_caps.5,v 1.64 2026/01/11 23:54:16 tom Exp $
+.TH user_caps 5 2026-01-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats"
.ie \n(.g \{\
.ds `` \(lq
.ds '' \(rq
@@ -545,6 +545,26 @@ mouse protocols.
%?%p4%tM%em%;,
.fi
.EE
+.PP
+Some of these extended capabilities have parameters which
+\fI\%ncurses\fP may use in the
+.BR \%tparm ","
+.BR \%tiparm ","
+or
+.B \%tiparm_s
+functions.
+The \fI\%ncurses\fP library checks to ensure that
+both standard and extended capabilities have
+the expected number and type of parameters.
+The terminfo compiler \fI\%@TIC@\fP has similar checks for these extensions
+as well as for those which are used by other programs,
+which include
+.IR \%mintty ","
+.IR \%screen ","
+.IR \%tack ","
+.IR \%tmux ","
+.IR \%vim ", and"
+.IR \%xterm "."
.
.SS "Extended Key Definitions"
Several terminals provide the ability to send distinct strings for
diff --git a/misc/terminfo.src b/misc/terminfo.src
index af829f92..fc98f427 100644
--- a/misc/terminfo.src
+++ b/misc/terminfo.src
@@ -6,8 +6,8 @@
# Report bugs and new terminal descriptions to
# bug-ncurses@gnu.org
#
-# $Revision: 1.1202 $
-# $Date: 2026/01/04 00:17:34 $
+# $Revision: 1.1210 $
+# $Date: 2026/01/17 23:45:14 $
#
# The original header is preserved below for reference. It is noted that there
# is a "newer" version which differs in some cosmetic details (but actually
@@ -2435,15 +2435,15 @@ vt52+arrows|cursor keys for VT52,
# terminfo guidelines. That is a compromise used to assign the remaining
# keys on the keypad to kf5-kf0, used on older systems with legacy termcap
# support:
-vt100+keypad|DEC VT100 numeric keypad no fkeys,
+vt100+keypad-sco|DEC VT100 numeric keypad no fkeys,
ka1=\EOq, ka3=\EOs, kb2=\EOr, kc1=\EOp, kc3=\EOn,
vt100+pf1-pf4|DEC VT100 PF1-PF4,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
-vt100+pfkeys|DEC VT100 numeric keypad (kf1-kf4),
- kent=\EOM, use=vt100+pf1-pf4, use=vt100+keypad,
-vt100+fnkeys|DEC VT100 numeric keypad (kf0-kf10),
+vt100+pfkeys-sco|DEC VT100 numeric keypad (kf1-kf4),
+ kent=\EOM, use=vt100+pf1-pf4, use=vt100+keypad-sco,
+vt100+fnkeys-sco|DEC VT100 numeric keypad (kf0-kf10),
kf0=\EOy, kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl,
- kf9=\EOw, use=vt100+pfkeys,
+ kf9=\EOw, use=vt100+pfkeys-sco,
#
# A better adaptation to modern keyboards such as the PC's, which have a dozen
# function keys and the keypad 2,4,6,8 keys are labeled with arrows keys, is to
@@ -2455,20 +2455,22 @@ vt100+fnkeys|DEC VT100 numeric keypad (kf0-kf10),
# |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_|
# | 7 8 9 - |
# | $Ow | $Ox | $Oy | $Om |
-# |_ka1__K1_|_________|_ka3__K3_|_________|
+# |_ka1__K1_|_ka2_____|_ka3__K3_|_________|
# | 4 | 5 | 6 | , |
# | $Ot | $Ou | $Ov | $Ol |
-# |_________|_kb2__K2_|_________|_________|
+# |_kb1_____|_kb2__K2_|_kb3_____|_________|
# | 1 | 2 | 3 | |
# | $Oq | $Or | $Os | enter |
-# |_kc1__K4_|_________|_kc3__K5_| $OM |
+# |_kc1__K4_|_kc2_____|_kc3__K5_| $OM |
# | 0 | . | |
# | $Op | $On | |
# |___________________|_________|_kent_@8_|
#
-vt220+keypad|DEC VT220 numeric keypad,
- ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, ka2=\EOx,
- kb1=\EOt, kb3=\EOv, kc2=\EOr, use=vt100+pfkeys,
+# ka2, kb1, kb3 and kc2 are extended key capabilities which have no termcap
+# equivalent.
+vt100+keypad|vt220+keypad|DEC numeric keypad,
+ ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, kent=\EOM,
+ ka2=\EOx, kb1=\EOt, kb3=\EOv, kc2=\EOr, use=vt100+pf1-pf4,
#
vt100+enq|ncurses extension for VT100-style ENQ,
u8=\E[?1;2c, use=ansi+enq,
@@ -2519,7 +2521,7 @@ vt100|vt100-am|DEC VT100 (w/advanced video),
%;m%?%p9%t\016%e\017%;$<2>,
smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m$<2>,
use=ansi+csr, use=ansi+pp, use=decid+cpr, use=vt100+4bsd,
- use=vt100+fnkeys,
+ use=vt100+fnkeys-sco,
vt100+4bsd|DEC VT100 from 4.0BSD,
am, msgr,
@@ -2858,7 +2860,7 @@ vt320|vt300|DEC VT320 7 bit terminal,
use=ansi+csr, use=ansi+cup, use=ansi+enq, use=ansi+erase,
use=ansi+idl, use=ansi+local, use=ansi+sgrso,
use=ansi+sgrul, use=dec+pp, use=dec+sl, use=vt220+cvis,
- use=vt220+keypad, use=vt220+sfkeys, use=vt220+ufkeys,
+ use=vt100+keypad, use=vt220+sfkeys, use=vt220+ufkeys,
vt320-nam|vt300-nam|DEC VT320 7 bit terminal with no am to make SAS happy,
am@,
@@ -3090,10 +3092,10 @@ vt525-w|DEC VT525 in wide mode,
#
# In trying to get the function keys to work, I had to cobble my own
# terminfo.src entry, since the existing vt520 entry doesn't include most of
-# the function keys. If I blend the entries for "vt420f" and "vt220+keypad"
+# the function keys. If I blend the entries for "vt420f" and "vt100+keypad"
# I seem to get them all -Mike Gran
vt520ansi|Boundless VT520 ANSI,
- use=ansi+rca, use=vt420f, use=vt220+keypad,
+ use=ansi+rca, use=vt420f, use=vt100+keypad,
use=ansi+tabs,
#### VT100 emulations
@@ -3357,7 +3359,7 @@ nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset,
sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, tbc=\E[3g,
use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl,
use=ansi+local, use=ansi+sgrbold, use=vt100+enq,
- use=vt100+pfkeys,
+ use=vt100+pfkeys-sco,
nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset,
sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
@@ -3651,9 +3653,9 @@ iTerm.app|iterm|iTerm.app terminal emulator for Mac OS X,
use=ansi+csr, use=ansi+enq, use=ansi+erase, use=ansi+idc,
use=ansi+idl, use=ansi+local, use=ansi+rca2,
use=ansi+sgrso, use=ansi+sgrul, use=vt100+4bsd,
- use=vt100+keypad, use=vt100+pfkeys, use=xterm+r5+fkeys,
- use=xterm+alt47, use=xterm+sl-twm, use=xterm+x11mouse,
- use=xterm+256setaf, use=vt220+cvis,
+ use=vt100+keypad-sco, use=vt100+pfkeys-sco,
+ use=xterm+r5+fkeys, use=xterm+alt47, use=xterm+sl-twm,
+ use=xterm+x11mouse, use=xterm+256setaf, use=vt220+cvis,
# iTerm2
#
@@ -3871,7 +3873,7 @@ xnuppc+basic|Darwin PowerPC console basic capabilities,
sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, tbc=\E[3g,
use=ansi+csr, use=ansi+cup, use=ansi+erase,
use=ansi+local, use=ansi+sgrso, use=ansi+sgrul,
- use=vt100+keypad,
+ use=vt100+keypad-sco,
xnuppc+c|Darwin PowerPC console ANSI color support,
ncv#32, use=klone+color,
@@ -4241,8 +4243,7 @@ putty|PuTTY terminal emulator,
use=klone+color, use=klone+sgr, use=putty+cursor,
use=putty+fnkeys, use=report+da2, use=vt220+pcedit,
use=xterm+alt1049, use=vt102+enq, use=xterm+sm+1006,
- use=xterm+sl, use=vt100+fnkeys, use=putty+keypad,
- use=vt220+cvis,
+ use=xterm+sl, use=putty+keypad, use=vt220+cvis,
# older versions (e.g., before 0.71) of PuTTY used a shift-modifier to toggle
# between normal- and application-mode for the cursor-keys. That was dropped,
@@ -4250,9 +4251,8 @@ putty|PuTTY terminal emulator,
putty+cursor|PuTTY modified cursor-keys,
kDN5=\E[B, kLFT5=\E[D, kRIT5=\E[C, kUP5=\E[A,
putty+keypad|PuTTY numeric keypad,
- kp1=\EOq, kp2=\EOr, kp3=\EOs, kp4=\EOt, kp5=\EOu, kp6=\EOv,
- kp7=\EOw, kp8=\EOx, kp9=\EOy, kpADD=\EOl, kpDIV=\EOQ,
- kpDOT=\EOn, kpMUL=\EOR, kpNUM=\EOP, kpSUB=\EOS, kpZRO=\EOp,
+ kpADD=\EOl, kpDIV=\EOQ, kpDOT=\EOn, kpMUL=\EOR, kpNUM=\EOP,
+ kpSUB=\EOS, kpZRO=\EOp, use=vt100+keypad,
vt100-putty|Reset PuTTY to pure VT100,
rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p,
@@ -5002,7 +5002,7 @@ xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System),
use=ansi+idc, use=ansi+idl, use=ansi+inittabs,
use=ansi+local, use=ansi+rca2, use=xterm+alt47,
use=xterm+kbs, use=vt100+enq, use=xterm+r5+fkeys,
- use=ecma+color, use=vt220+cvis, use=vt220+keypad,
+ use=ecma+color, use=vt220+cvis, use=vt100+keypad,
use=vt220+pcedit, use=vt220+sfkeys,
# This is the stock xterm entry supplied with XFree86 3.3, which uses VT100
@@ -5255,14 +5255,10 @@ xterm+pcf2|fragment with modifyFunctionKeys:2,
kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~,
kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R, kf40=\E[1;6S,
- kf41=\E[15;6~, kf42=\E[17;6~, kf43=\E[18;6~,
- kf44=\E[19;6~, kf45=\E[20;6~, kf46=\E[21;6~,
- kf47=\E[23;6~, kf48=\E[24;6~, kf49=\E[1;3P, kf50=\E[1;3Q,
- kf51=\E[1;3R, kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
- kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
- kf58=\E[21;3~, kf59=\E[23;3~, kf60=\E[24;3~,
- kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R,
- use=vt100+pf1-pf4, use=xterm+nopcfkeys,
+ kf41=\E[15;6~, kf42=\E[17;6~, kf49=\E[1;3P, kf50=\E[1;3Q,
+ kf51=\E[1;3R, kf52=\E[1;3S, kf61=\E[1;4P, kf62=\E[1;4Q,
+ kf63=\E[1;4R, use=vt100+pf1-pf4, use=xterm+nopcfkeys,
+ use=xterm+pcf0,
#
# Chunks from xterm #230:
xterm+pce2|fragment with modifyCursorKeys:2 editing-keys,
@@ -5349,7 +5345,7 @@ xterm+alt+title|xterm 90 and 251 features combined,
xterm+keypad|xterm emulating VT100/VT220 numeric keypad,
kbeg=\EOE, kp5=\EOE, kpADD=\EOk, kpCMA=\EOl, kpDIV=\EOo,
kpDOT=\EOn, kpMUL=\EOj, kpSUB=\EOm, kpZRO=\EOp,
- use=vt220+keypad,
+ use=vt100+keypad,
#
# Those chunks use the new-style (the xterm oldFunctionKeys resource is false).
# Alternatively, the same scheme with old-style function keys as in xterm-r6
@@ -5735,7 +5731,7 @@ xterm-sco|xterm with SCO function keys,
xterm-vt220|xterm emulating VT220,
npc,
kcbt=\E[Z, kend=\E[4~, khome=\E[1~, kmous=\E[M, nel=\EE,
- use=xterm+app, use=xterm+edit, use=vt220+keypad,
+ use=xterm+app, use=xterm+edit, use=vt100+keypad,
use=ecma+italics, use=ecma+index, use=ansi+rep,
use=ecma+strikeout, use=vt220+sfkeys,
use=xterm+r5+fkeys, use=xterm+focus, use=xterm+sm+1006,
@@ -6072,7 +6068,7 @@ xtermm|xterm terminal emulator (monochrome),
tbc=\E[3g, use=ansi+apparrows, use=ansi+csr,
use=ansi+cup, use=ansi+erase, use=ansi+idl,
use=ansi+local, use=ansi+sgrso, use=decid+cpr,
- use=vt100+fnkeys,
+ use=vt100+fnkeys-sco,
xtermc|xterm terminal emulator (color),
ncv#7,
@@ -6137,7 +6133,7 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X,
use=ecma+underline, use=ecma+standout,
use=xterm+r5+fkeys, use=ansi+apparrows, use=ansi+csr,
use=ansi+cup, use=ansi+idl, use=ansi+local,
- use=decid+cpr, use=ecma+color, use=vt220+keypad,
+ use=decid+cpr, use=ecma+color, use=vt100+keypad,
# The IRAF source has a terminfo using "xterm-r5", but line-drawing does not
# work in that case. This entry uses xterm+acs, to work around that problem.
@@ -6733,7 +6729,7 @@ mlterm3|multi lingual terminal emulator 3.x,
use=ecma+strikeout, use=xterm+app, use=xterm+pcf2,
use=xterm+pcc2, use=xterm+pce2, use=xterm+meta,
use=xterm+alt+title, use=xterm+sm+1006,
- use=vt100+pfkeys, use=bracketed+paste, use=mlterm2,
+ use=vt100+pfkeys-sco, use=bracketed+paste, use=mlterm2,
use=report+version,
# This is mlterm 2.9.3's mlterm.ti, with some additions/corrections -TD
@@ -6837,7 +6833,7 @@ rxvt-basic|rxvt terminal base (X Window System),
use=ecma+underline, use=ecma+standout, use=ansi+csr,
use=ansi+idl, use=ansi+local, use=xterm+alt47,
use=vt100+enq, use=vt100+4bsd, use=rxvt+pcfkeys,
- use=vt220+cvis, use=vt220+keypad,
+ use=vt220+cvis, use=vt100+keypad,
# Key Codes from rxvt reference:
#
@@ -7267,7 +7263,7 @@ mvterm|vv100|SwitchTerm aka mvTERM,
%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smkx=\E[?1h\E=, smso=\E[7m, use=ansi+csr,
use=ansi+idl, use=ansi+local, use=ansi+sgrul,
- use=xterm+alt47, use=vt100+fnkeys, use=vt100+4bsd,
+ use=xterm+alt47, use=vt100+fnkeys-sco, use=vt100+4bsd,
use=x10term+sl,
#### MTERM
@@ -7496,7 +7492,7 @@ st-0.6|simpleterm 0.6,
use=ecma+standout, use=ansi+apparrows, use=ansi+csr,
use=ansi+enq, use=ansi+idl, use=ansi+inittabs,
use=ansi+local, use=ansi+rca2, use=ansi+sgrbold,
- use=vt100+4bsd, use=vt100+pfkeys, use=vt220+pcedit,
+ use=vt100+4bsd, use=vt100+pfkeys-sco, use=vt220+pcedit,
use=ecma+index, use=xterm+alt1049, use=vt220+cvis,
use=xterm+sl, use=ecma+italics, use=ecma+strikeout,
use=bracketed+paste, use=xterm+pcf2,
@@ -8869,7 +8865,7 @@ screen.rxvt|screen in rxvt,
bw, XT,
cvvis@, flash@, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
kcuu1=\EOA, use=screen+fkeys, use=vt100+enq,
- use=rxvt+pcfkeys, use=xterm+x11mouse, use=vt220+keypad,
+ use=rxvt+pcfkeys, use=xterm+x11mouse, use=vt100+keypad,
use=screen,
screen.Eterm|screen in Eterm,
use=xterm+x11mouse, use=screen+fkeys, use=Eterm,
@@ -12496,7 +12492,7 @@ tvi9065|TeleVideo 9065,
dl=\E[%p1%dM, dl1=\ER, dsl=\E_30\r, ech=\E[%p1%d@, ed=\EY,
el=\ET, flash=\Eb$<15>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1,
ich=\E[%p1%d@, if=/usr/share/tabset/stdcrt,
- il=\E[%p1%dL, il1=\EE, ind=\n, invis=\EG1, ip=$<3>,
+ il=\E[%p1%dL, il1=\EE, ind=\n, ip=$<3>,
is1=\E"\E%\E'\E(\EG@\EO\EX\E[=5l\E[=6l\E[=7h\Ed\Er,
is2=\EF2\EG0\E\\L, is3=\E<\E[=4l\E[=8h, kHOM=\E\s\s\s,
kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K,
@@ -12508,10 +12504,10 @@ tvi9065|TeleVideo 9065,
pfloc=\E|%p1%{48}%+%c2%p2%s\031,
pfx=\E|%p1%{48}%+%c1%p2%s\031,
pln=\E_%p1%{63}%+%c%p2%s\r, prot=\E&,
- rep=\E[%p2%db%p1%c, rev=\EG4,
- rf=/usr/share/tabset/stdcrt, ri=\Ej, rmacs=\E%%,
- rmam=\E[=7l, rmcup=\E.3\Er\E[1;25r\E[25;0H, rmdc=\0,
- rmir=\Er, rmln=\E[4;1v, rmso=\EG0, rmul=\EG0, rmxon=^N,
+ rep=\E[%p2%db%p1%c, rf=/usr/share/tabset/stdcrt,
+ ri=\Ej, rmacs=\E%%, rmam=\E[=7l,
+ rmcup=\E.3\Er\E[1;25r\E[25;0H, rmdc=\0, rmir=\Er,
+ rmln=\E[4;1v, rmso=\EG0, rmxon=^N,
rs1=\EC\EDF\E[0;0v\E[8;1v\E[=65l,
rs2=\E.b\E[10;20v\E[14;1v\E[3;0v\E[7;0v\E[=11.h\E[=12.h\E[=1
3.h\E[=14.h\E[=15l\E[=20h\E[=60l\E[=61h\E[=9l\E[=10l\E[=
@@ -12523,9 +12519,9 @@ tvi9065|TeleVideo 9065,
%?%p5%t\EGp%;%?%p6%t\EG\,%;%?%p7%t\EG1%;%?%p8%t\E&%;%?
%p9%t\E$%e\E%%%;,
sgr0=\EG0\E%, smacs=\E$, smam=\E=7h, smcup=\E.2, smdc=\Er,
- smir=\Eq, smln=\E[4;2v, smso=\EGt, smul=\EG8, smxon=^O,
- tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0, use=ansi+local,
- use=ecma+index,
+ smir=\Eq, smln=\E[4;2v, smso=\EGt, smxon=^O, tbc=\E3,
+ tsl=\E[4;1v\E_30, uc=\EG8\EG0, use=adm+sgr,
+ use=ansi+local, use=ecma+index,
#### Visual (vi)
#
@@ -13327,7 +13323,7 @@ wy75|wyse75|Wyse 75,
smkx=\E[?1l\E[?7h\E=, smso=\E[1t\E[7m, smul=\E[2t\E[4m,
tsl=\E[>\,\001, use=ansi+arrows, use=ansi+cup,
use=ansi+local, use=ansi+pp, use=ansi+tabs,
- use=decid+cpr, use=vt220+cvis, use=vt220+keypad,
+ use=decid+cpr, use=vt220+cvis, use=vt100+keypad,
use=vt220+sfkeys, use=vt220+ufkeys,
#
# This terminal description uses the non-hidden attribute mode
@@ -13388,7 +13384,7 @@ wy85|wyse85|Wyse 85,
use=ansi+csr, use=ansi+inittabs, use=ansi+local,
use=ansi+pp, use=ansi+sgrbold, use=decid+cpr,
use=vt100+4bsd, use=vt220+vtedit, use=vt220+cvis,
- use=vt220+keypad, use=vt220+sfkeys, use=vt220+ufkeys,
+ use=vt100+keypad, use=vt220+sfkeys, use=vt220+ufkeys,
#
# Wyse 85 with visual bell.
wy85-vb|wyse85-vb|Wyse 85 with visible bell,
@@ -13442,7 +13438,7 @@ wy85-8bit|wyse85-8bit|Wyse 85 in 8-bit mode,
tsl=\E[40h\E7\E[25;%i%p1%dH, use=ansi+csr,
use=ansi+inittabs, use=ansi+local, use=ansi+pp,
use=ansi+sgrbold, use=decid+cpr, use=vt100+4bsd,
- use=vt100+pfkeys, use=vt220+cvis,
+ use=vt100+pfkeys-sco, use=vt220+cvis,
#
# Wyse 185 emulating a VT320 7 bit mode.
#
@@ -13479,7 +13475,7 @@ wy185|wyse185|Wyse 185,
use=ecma+underline, use=ecma+standout, use=ansi+arrows,
use=ansi+inittabs, use=ansi+local, use=ansi+pp,
use=ansi+sgrbold, use=decid+cpr, use=vt100+4bsd,
- use=vt220+vtedit, use=vt220+keypad, use=vt220+sfkeys,
+ use=vt220+vtedit, use=vt100+keypad, use=vt220+sfkeys,
use=vt220+ufkeys, use=wyse+cvis,
#
# Wyse 185 with 24 data lines and top status (terminal status)
@@ -13678,7 +13674,7 @@ wy370|wyse370|wy370-101k|Wyse 370 with 101 key keyboard,
wy370-105k|Wyse 370 with 105 key keyboard,
kfnd=\E[1~, khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2,
lf3=PF3, lf4=PF4, use=ansi+arrows, use=vt220+vtedit,
- use=wy370-nk, use=vt220+keypad, use=vt220+sfkeys,
+ use=wy370-nk, use=vt100+keypad, use=vt220+sfkeys,
use=vt220+ufkeys,
#
# Function key set for the PC compatible keyboard
@@ -13804,7 +13800,7 @@ wy520|wyse520|Wyse 520,
use=ecma+underline, use=ansi+arrows, use=ansi+csr,
use=ansi+cup, use=ansi+local, use=ansi+pp,
use=ansi+sgrbold, use=ansi+tabs, use=decid+cpr,
- use=vt220+vtedit, use=vt220+keypad, use=vt220+sfkeys,
+ use=vt220+vtedit, use=vt100+keypad, use=vt220+sfkeys,
use=vt220+ufkeys, use=wyse+cvis,
#
# Wyse 520 with 24 data lines and status (terminal status)
@@ -14345,7 +14341,7 @@ v5410|att5410 in terms of a VT100,
sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
use=ansi+csr, use=ansi+idl1, use=decid+cpr,
- use=vt100+fnkeys,
+ use=vt100+fnkeys-sco,
#
# Teletype Model 5420 -- A souped up 5410, with multiple windows,
@@ -17794,7 +17790,7 @@ ts100|ts100-sp|Falco ts100-sp,
rmkx=\E[?1l\E>,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, smam=\E[?7h,
smkx=\E[?1h\E=, use=ansi+csr, use=ansi+local,
- use=decid+cpr, use=vt100+4bsd, use=vt100+fnkeys,
+ use=decid+cpr, use=vt100+4bsd, use=vt100+fnkeys-sco,
ts100-ctxt|Falco ts-100 saving context,
rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100,
@@ -19576,7 +19572,7 @@ ncr260vppp|NCR 2900/260 viewpoint,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>,
dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, ed=\Ek$<2>,
el=\EK$<2>, home=\036$<2>, ht=^I, hts=\E1, il1=\EM$<2>,
- ind=\n$<2>, invis=\EG1,
+ ind=\n$<2>,
is2=\Ee6\E~%$<100>\E+\E`:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0
\EcC1\Ee7$<100>,
kDC=\El, kEND=\Ek, kHOM=^A, kPRT=\E7, kRIT=^F, ka1=^A, ka3=\EJ,
@@ -19591,12 +19587,12 @@ ncr260vppp|NCR 2900/260 viewpoint,
kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ, kprt=\EP,
ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R,
mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>,
- nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003,
- rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+ nel=\037$<2>, ri=\Ej$<2>, rmacs=\EcB0\EH\003, rmir=\Er,
+ rmxon=\Ec20,
rs2=\Ee6\E~%$<100>\E+\E`:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0
\EcC1\Ee7$<100>,
sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq,
- smso=\EG4, smul=\EG8, smxon=\Ec21, use=ncr260vp+sl,
+ smxon=\Ec21, use=adm+sgr, use=ncr260vp+sl,
ncr260vp+sl|NCR 2900/260 viewpoint with status-line,
hs,
@@ -19639,7 +19635,7 @@ ncr260vt100an|NCR 2900/260 VT100 with ANSI keyboard,
smkx=\E[?1h\E=, smso=\E[1;7m, tbc=\E[3g,
vpa=\E[%p1%dd$<40>, use=ansi+csr, use=ansi+sgrbold,
use=decid+cpr, use=vt220+vtedit, use=vt220+cvis,
- use=vt220+keypad, use=ncr260vt+sl,
+ use=vt100+keypad, use=ncr260vt+sl,
ncr260vt+sl|NCR 2900/260 VT100 status line,
hs,
@@ -19700,7 +19696,7 @@ ncr260vt200an|NCR 2900/260 VT200 with ANSI keyboard,
smir=\E[4h, smkx=\E[?1h\E=, tbc=\E[3g,
vpa=\E[%p1%dd$<40>, use=ecma+underline,
use=ecma+standout, use=ansi+sgrbold, use=decid+cpr,
- use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad,
+ use=vt220+vtedit, use=vt220+cvis, use=vt100+keypad,
use=ncr260vt+sl, use=vt220+sfkeys, use=vt220+ufkeys,
ncr260vt200wan|NCR 2900/260 VT200 wide mode ANSI keyboard,
@@ -19755,7 +19751,7 @@ ncr260vt300an|NCR 2900/260 VT300 with ANSI keyboard,
smir=\E[4h, smkx=\E[?1h\E=, tbc=\E[3g,
vpa=\E[%p1%dd$<40>, use=ecma+underline,
use=ecma+standout, use=ansi+sgrbold, use=decid+cpr,
- use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad,
+ use=vt220+vtedit, use=vt220+cvis, use=vt100+keypad,
use=ncr260vt+sl, use=vt220+sfkeys, use=vt220+ufkeys,
ncr260vt300wan|NCR 2900/260 VT300 wide mode ANSI keyboard,
@@ -19802,7 +19798,7 @@ ncr260wy325pp|NCR 2900/260 Wyse 325,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, ed=\Ey$<5>,
el=\Et$<5>, home=\036$<5>, ht=^I, hts=\E1, il1=\EE$<5>,
- ind=\n$<5>, invis=\EG1,
+ ind=\n$<5>,
is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9
\Ee7$<100>,
kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
@@ -19815,8 +19811,8 @@ ncr260wy325pp|NCR 2900/260 Wyse 325,
kf32=^Ao\r, khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
mc0=\EP, mc4=^T, mc5=^R,
mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
- nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
- rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+ nel=\037$<5>, ri=\Ej$<5>, rmacs=\EH\003\EcB0, rmam=\Ed.,
+ rmir=\Er, rmxon=\Ec20,
rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9
\Ee7$<100>,
setb=\s,
@@ -19827,7 +19823,7 @@ ncr260wy325pp|NCR 2900/260 Wyse 325,
%{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=
%t%{63}%e%p1%{15}%=%t%{56}%;\Edy%c11$<100>,
sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH\002\EcB1, smam=\Ed/,
- smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
+ smir=\Eq, smso=\EGt, smxon=\Ec21, tbc=\E0, use=adm+sgr,
use=ncr260vp+sl, use=tvi920b+fn, use=ansi+arrows,
use=ansi+apparrows,
ncr260wy325wpp|NCR 2900/260 Wyse 325 wide mode,
@@ -19901,7 +19897,7 @@ ncr260wy50+pp|NCR 2900/260 Wyse 50+,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>,
cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>,
ed=\EY$<5>, el=\ET$<5>, home=\036$<10>, ht=\011$<5>,
- hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
+ hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>,
is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"
\Ee4\Ex@\E`9\Ee7$<100>,
kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
@@ -19916,12 +19912,12 @@ ncr260wy50+pp|NCR 2900/260 Wyse 50+,
khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
mc0=\EP$<10>, mc4=^T, mc5=^R,
mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
- nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
- rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+ nel=\037$<5>, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed., rmir=\Er,
+ rmxon=\Ec20,
rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"
\Ee4\Ex@\E`9\Ee7$<100>,
sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq,
- smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>,
+ smso=\EGt, smxon=\Ec21, tbc=\E0$<5>, use=adm+sgr,
use=ncr260vp+sl,
ncr260wy50+wpp|NCR 2900/260 Wyse 50+ wide mode,
cols#132,
@@ -19940,7 +19936,7 @@ ncr260wy60pp|NCR 2900/260 Wyse 60,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, ed=\Ey$<5>,
el=\Et$<5>, home=\036$<25>, ht=\011$<15>, hts=\E1$<15>,
- il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
+ il1=\EE$<5>, ind=\n$<5>,
is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"
\Ee4\Ex@\E`9\Ee7$<100>,
kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
@@ -19955,13 +19951,13 @@ ncr260wy60pp|NCR 2900/260 Wyse 60,
kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>,
- nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
- rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+ nel=\037$<5>, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed., rmir=\Er,
+ rmxon=\Ec20,
rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"
\Ee4\Ex@\E`9\Ee7$<100>,
sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/,
- smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>,
- use=ncr260vp+sl,
+ smir=\Eq, smso=\EGt, smxon=\Ec21, tbc=\E0$<15>,
+ use=adm+sgr, use=ncr260vp+sl,
ncr260wy60wpp|NCR 2900/260 Wyse 60 wide mode,
cols#132,
cup=\Ea%i%p1%dR%p2%dC$<30>,
@@ -20197,10 +20193,10 @@ ndr9500-25-nl|NDR 9500 with 25 lines and no status line,
ndr9500-mc|NDR 9500 with magic cookies (enables underline inverse video invisible and blink),
msgr@,
xmc#1,
- blink=\EG2, invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0,
+ blink=\EG2, rmso=\EG0,
sgr=\E%%\E(%?%p5%p8%|%t\E)%;%?%p9%t\E$%;\EG%{48}%?%p7%t%{1}
%+%;%?%p4%t%{2}%+%;%?%p3%p1%|%t%{4}%+%;%?%p2%t%{8}%+%;%c,
- smso=\EG4, smul=\EG8, use=ndr9500,
+ smso=\EG4, use=ndr9500, use=adm+sgr,
ndr9500-25-mc|NDR 500 with 25 lines and magic cookies,
lines#25, use=ndr9500-mc,
@@ -20534,7 +20530,7 @@ tek4105-30|Tektronix 4015 emulating 30 line VT100,
kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmam=\E[?7l,
rmkx=\E[?1l\E>, rmso=\E[m$<2>, smam=\E[?7h,
smkx=\E[?1h\E=, use=ansi+csr, use=ansi+local,
- use=vt100+4bsd, use=vt100+fnkeys,
+ use=vt100+4bsd, use=vt100+fnkeys-sco,
# Tektronix 4105 from BRL
# The following setup modes are assumed for normal operation:
@@ -24449,7 +24445,7 @@ xtalk|IBM PC with xtalk communication program (versions up to 3.4),
rmkx=\E[?1l\E>, rmso=\E[m\s,
rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m,
smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s,
- tbc=\E[3g, use=ansi+local, use=vt100+fnkeys,
+ tbc=\E[3g, use=ansi+local, use=vt100+fnkeys-sco,
# The official PC terminal emulator program of the AT&T Product Centers.
# Note - insert mode commented out - doesn't seem to work on AT&T PC.
@@ -25502,7 +25498,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# https://invisible-island.net/ncurses/ncurses-netbsd.html
#
# ncurses makes explicit checks for a few user-definable capabilities: AX, E3,
-# NQ, RGB, U8, XM, which are documented in the user_caps(5) manual page.
+# NQ, RGB, U8, XM, xm, which are documented in the user_caps(5) manual page.
#
#### SCREEN Extensions:
#
@@ -25578,11 +25574,36 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# These are the extended keys defined in this file:
#
-# kDC3 kDC4 kDC5 kDC6 kDC7 kDN kDN3 kDN4 kDN5 kDN6 kDN7 kEND3 kEND4 kEND5 kEND6
-# kEND7 kHOM3 kHOM4 kHOM5 kHOM6 kHOM7 kIC3 kIC4 kIC5 kIC6 kIC7 kLFT3 kLFT4
-# kLFT5 kLFT6 kLFT7 kNXT3 kNXT4 kNXT5 kNXT6 kNXT7 kPRV3 kPRV4 kPRV5 kPRV6 kPRV7
-# kRIT3 kRIT4 kRIT5 kRIT6 kRIT7 kUP kUP3 kUP4 kUP5 kUP6 kUP7 kxIN kxOUT ka2 kb1
-# kb3 kc2
+# alt_{A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z} Alt + key
+# kDC{3|4|5|6|7} modifier + delete-character
+# kDN shifted cursor-down
+# kDN{3|4|5|6|7} modifier + cursor-down
+# kEND{3|4|5|6|7|8} modifier + end
+# kF{1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16} shifted function-key
+# kHOM{3|4|5|6|7|8} modifier + home
+# kIC{3|4|5|6|7} modifier + insert-character
+# kLFT{3|4|5|6|7} modifier + cursor-left
+# kNXT{3|4|5|6|7} modifier + next
+# kPRV{3|4|5|6|7} modifier + previous
+# kRIT{3|4|5|6|7} modifier + cursor-right
+# kUP shifted cursor-up
+# kUP{3|4|5|6|7} modifier + cursor-up
+# ka2 keypad key between ka1 and ka3
+# kb1 keypad key left of kb2
+# kb3 keypad key right of kb2
+# kc2 keypad key between kc1 and kc3
+# kcbt{2} modifier + tab-key
+# kp{1|2|3|4|5|6|7|8|9} numbered keypad keys
+# kpADD keypad "+"
+# kpCMA keypad ","
+# kpDIV keypad "/"
+# kpDOT keypad "."
+# kpMUL keypad "*"
+# kpNUM keypad NumLock
+# kpSUB keypad "-"
+# kpZRO keypad "0"
+# kxIN xterm focus-in
+# kxOUT xterm focus-out
#
# Bracketed paste is described with these capabilities in vim:
#
@@ -28006,4 +28027,14 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# + add NQ to list of user-definable capabilities in user_caps(5) (patch
# by Jakub Horky)
#
+# 2026-01-17
+# + provide a generated list of user-defined special keys (adapted from
+# patch by Jakub Horky) -TD
+# + rename vt100+keypad, etc., to vt100+keypad+sco, etc., to keep
+# historical blocks while providing for renaming of vt220+keypad as
+# vt100+keypad (prompted by patch by Jakub Horky) -TD
+# + use vt100+keypad instead of vt220+keypad (patch by Jakub Horky)
+# + use vt100+keypad in putty+keypad, replacing kpXX extension -TD
+# + remove vt100+fnkeys-sco from putty -TD
+#
######## SHANTIH! SHANTIH! SHANTIH!
diff --git a/ncurses/Makefile.in b/ncurses/Makefile.in
index fbe2153b..f3834cfd 100644
--- a/ncurses/Makefile.in
+++ b/ncurses/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.194 2025/10/25 17:29:43 tom Exp $
+# $Id: Makefile.in,v 1.198 2026/01/14 08:52:45 tom Exp $
##############################################################################
-# Copyright 2018-2024,2025 Thomas E. Dickey #
+# Copyright 2018-2025,2026 Thomas E. Dickey #
# Copyright 1998-2017,2018 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
@@ -201,14 +201,18 @@ TEST_DEPS = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
TEST_ARGS = @LDFLAGS_STATIC@ @TEST_ARGS@ @LDFLAGS_SHARED@
TEST_LDFLAGS = @LD_MODEL@ $(TEST_ARGS) @LIBS@ @LOCAL_LDFLAGS@ @LDFLAGS@
+# Unlike the other test-programs, lib_mvcur uses internal functions which
+# are not exported when using versioned symbols, as well as objects from
+# the progs directory.
+TEST_INTERNALS = lib_mvcur$x
+
TEST_PROGS = \
captoinfo$x \
hardscroll$x \
hashmap$x \
- lib_mvcur$x \
link_test$x \
report_ctype$x \
- report_hashing$x
+ report_hashing$x @NO_SHARED@ $(TEST_INTERNALS)
LOCAL_LIBDIR = @top_builddir@/lib
@@ -342,12 +346,24 @@ realclean :: distclean
# These rules build test-programs for the modules that have test-drivers
@MAKE_PHONY@.PHONY : test_progs
test_progs : $(TEST_PROGS)
+test_clean :
+ -rm -f $(TEST_PROGS)
+
+CAPTOINFO_DEPS = \
+ ../@DFT_OBJ_SUBDIR@/comp_scan$o
+
+MVCUR_DEPS = \
+ ../@DFT_OBJ_SUBDIR@/captoinfo$o \
+ ../@DFT_OBJ_SUBDIR@/comp_expand$o \
+ ../@DFT_OBJ_SUBDIR@/comp_scan$o \
+ ../@DFT_OBJ_SUBDIR@/dump_entry$o \
+ ../@DFT_OBJ_SUBDIR@/write_entry$o
./link_test.c : $(base)/MKlib_gen.sh ../include/curses.h
FGREP="@FGREP@" $(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@
-captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS)
- @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS)
+captoinfo$x : $(tinfo)/captoinfo.c $(CAPTOINFO_DEPS) $(TEST_DEPS)
+ @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(CAPTOINFO_DEPS) $(TEST_LDFLAGS)
hardscroll$x : $(serial)/hardscroll.c $(TEST_DEPS)
@ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DSCROLLDEBUG $(serial)/hardscroll.c $(TEST_LDFLAGS)
@@ -355,13 +371,14 @@ hardscroll$x : $(serial)/hardscroll.c $(TEST_DEPS)
hashmap$x : $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_DEPS)
@ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DHASHDEBUG $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_LDFLAGS)
-lib_mvcur$x : $(serial)/lib_mvcur.c $(TEST_DEPS) \
- ../@DFT_OBJ_SUBDIR@/dump_entry$o
- @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c ../@DFT_OBJ_SUBDIR@/dump_entry$o $(TEST_LDFLAGS)
+lib_mvcur$x : $(serial)/lib_mvcur.c $(MVCUR_DEPS) $(TEST_DEPS) \
+ $(INCDIR)/tic.h \
+ $(srcdir)/../progs/dump_entry.h
+ @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c $(MVCUR_DEPS) $(TEST_LDFLAGS)
link_test$x : ./link_test.c $(TEST_DEPS) \
../@DFT_OBJ_SUBDIR@/link_test$o
- @ECHO_LD@ $(CC) -o $@ $(CFLAGS_DEFAULT) ../@DFT_OBJ_SUBDIR@/link_test$o $(TEST_LDFLAGS)
+ @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) ../@DFT_OBJ_SUBDIR@/link_test$o $(TEST_LDFLAGS)
../@DFT_OBJ_SUBDIR@/dump_entry$o:
( cd ../progs && $(MAKE) ../@DFT_OBJ_SUBDIR@/dump_entry$o )
@@ -369,14 +386,14 @@ link_test$x : ./link_test.c $(TEST_DEPS) \
report_ctype$x : \
$(srcdir)/curses.priv.h \
$(srcdir)/report_ctype.c $(TEST_DEPS)
- @ECHO_LD@ $(CC) -o $@ $(CFLAGS_DEFAULT) $(srcdir)/report_ctype.c $(TEST_LDFLAGS)
+ @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) $(srcdir)/report_ctype.c $(TEST_LDFLAGS)
@echo "... made $@"
./report_ctype$x
report_hashing$x : \
$(srcdir)/curses.priv.h \
$(srcdir)/report_hashing.c $(TEST_DEPS)
- @ECHO_LD@ $(CC) -o $@ $(CFLAGS_DEFAULT) $(srcdir)/report_hashing.c $(TEST_LDFLAGS)
+ @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) $(srcdir)/report_hashing.c $(TEST_LDFLAGS)
# Verify that each header-file can be compiled without including another.
@MAKE_PHONY@.PHONY : check_headers
diff --git a/ncurses/base/MKlib_gen.sh b/ncurses/base/MKlib_gen.sh
index fbaf3f2d..95816962 100755
--- a/ncurses/base/MKlib_gen.sh
+++ b/ncurses/base/MKlib_gen.sh
@@ -2,10 +2,10 @@
#
# MKlib_gen.sh -- generate sources from curses.h macro definitions
#
-# ($Id: MKlib_gen.sh,v 1.79 2025/02/23 01:55:06 tom Exp $)
+# ($Id: MKlib_gen.sh,v 1.80 2026/01/15 00:40:09 tom Exp $)
#
##############################################################################
-# Copyright 2018-2024,2025 Thomas E. Dickey #
+# Copyright 2018-2025,2026 Thomas E. Dickey #
# Copyright 1998-2016,2017 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
@@ -532,6 +532,53 @@ DECLARATIONS
EOF
+# stack values:
+# 1 = constant-enabled
+# 0 = default enabled (either top-level or non-constant #if/#ifdef)
+# -1 = constant-disabled
+$AWK 'BEGIN{
+ level = 0;
+ stack[level] = 0;
+}
+/^#ifdef/{
+ stack[++level] = 0;
+ print;
+ next;
+}
+/^#elif/{
+ print;
+ next;
+}
+/^#if/{
+ level++;
+ sub("[ \t]/[*].*","");
+ if (match($0,"#if[ \t]*1$") > 0)
+ stack[level] = 1;
+ else if (match($0,"#if[ \t]*0$") > 0)
+ stack[level] = -1;
+ else
+ stack[level] = 0;
+ print;
+ next;
+}
+/^#else/{
+ if (stack[level] == 1) {
+ stack[level] = -1;
+ } else if (stack[level] == -1) {
+ stack[level] = 1;
+ }
+ print;
+ next;
+}
+/^#endif/{
+ --level;
+ print;
+ next;
+}
+{
+ if (stack[level] >= 0)
+ print;
+}' | \
sed -n -f $ED1 \
| sed -e 's/NCURSES_EXPORT(\(.*\)) \(.*\) (\(.*\))/\1 \2(\3)/' \
| sed -f $ED2 \
diff --git a/ncurses/curses.priv.h b/ncurses/curses.priv.h
index ad56abe2..bcd66667 100644
--- a/ncurses/curses.priv.h
+++ b/ncurses/curses.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 2018-2025,2026 Thomas E. Dickey *
* Copyright 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -35,7 +35,7 @@
****************************************************************************/
/*
- * $Id: curses.priv.h,v 1.742 2025/12/31 14:30:54 tom Exp $
+ * $Id: curses.priv.h,v 1.744 2026/01/13 08:51:14 tom Exp $
*
* curses.priv.h
*
@@ -1836,6 +1836,8 @@ extern NCURSES_EXPORT(const char *) _nc_viscbuf (const NCURSES_CH_T *, int);
#define START_TRACE() /* nothing */
+#define USE_TRACEF(mask) 0
+
#define T(a)
#define TR(n, a)
#define TPUTS_TRACE(s)
diff --git a/ncurses/modules b/ncurses/modules
index 1b1bb3c0..c1479284 100644
--- a/ncurses/modules
+++ b/ncurses/modules
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.133 2025/12/30 15:13:55 tom Exp $
+# $Id: modules,v 1.134 2026/01/14 01:21:25 tom Exp $
##############################################################################
-# Copyright 2019-2020,2025 Thomas E. Dickey #
+# Copyright 2019-2025,2026 Thomas E. Dickey #
# Copyright 1998-2013,2017 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
@@ -68,7 +68,7 @@ lib_isendwin lib $(base) $(HEADER_DEPS)
lib_leaveok lib $(base) $(HEADER_DEPS)
lib_mouse lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h
lib_move lib $(base) $(HEADER_DEPS)
-lib_mvcur lib $(serial) $(HEADER_DEPS) $(INCDIR)/tic.h $(srcdir)/../progs/dump_entry.h
+lib_mvcur lib $(serial) $(HEADER_DEPS)
lib_mvwin lib $(base) $(HEADER_DEPS)
lib_newterm lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h
lib_newwin lib $(base) $(HEADER_DEPS)
diff --git a/ncurses/tinfo/init_keytry.c b/ncurses/tinfo/init_keytry.c
index 78f8b3e4..d3197bdb 100644
--- a/ncurses/tinfo/init_keytry.c
+++ b/ncurses/tinfo/init_keytry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2020-2023,2024 Thomas E. Dickey *
+ * Copyright 2020-2024,2026 Thomas E. Dickey *
* Copyright 1999-2010,2016 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -30,7 +30,7 @@
#include
#include /* struct tinfo_fkeys */
-MODULE_ID("$Id: init_keytry.c,v 1.22 2024/12/07 18:14:49 tom Exp $")
+MODULE_ID("$Id: init_keytry.c,v 1.24 2026/01/18 00:53:15 tom Exp $")
/*
** _nc_init_keytry()
@@ -89,6 +89,8 @@ _nc_init_keytry(SCREEN *sp)
* Add any of the extended strings to the tries if their name begins
* with 'k', i.e., they follow the convention of other terminfo key
* names.
+ *
+ * The "alt_" is a special case, for djgpp.
*/
{
TERMTYPE *tp = &(sp->_term->type);
@@ -96,7 +98,7 @@ _nc_init_keytry(SCREEN *sp)
const char *name = ExtStrname(tp, (int) n, strnames);
const char *value = tp->Strings[n];
if (name != NULL
- && *name == 'k'
+ && ((*name == 'k') || !strncmp(name, "alt_", 4))
&& VALID_STRING(value)
&& NCURSES_SP_NAME(key_defined) (NCURSES_SP_ARGx
value) == 0) {
diff --git a/ncurses/tty/lib_mvcur.c b/ncurses/tty/lib_mvcur.c
index bddccc56..b25b6853 100644
--- a/ncurses/tty/lib_mvcur.c
+++ b/ncurses/tty/lib_mvcur.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 2018-2025,2026 Thomas E. Dickey *
* Copyright 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -160,7 +160,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_mvcur.c,v 1.167 2025/12/27 12:34:03 tom Exp $")
+MODULE_ID("$Id: lib_mvcur.c,v 1.168 2026/01/13 08:43:39 tom Exp $")
#define WANT_CHAR(sp, y, x) NewScreen(sp)->_line[y].text[x] /* desired state */
@@ -175,6 +175,29 @@ MODULE_ID("$Id: lib_mvcur.c,v 1.167 2025/12/27 12:34:03 tom Exp $")
static bool profiling = FALSE;
static float diff;
+
+#define tputs TestTPUTS
+#define tputs_sp TestTPUTS_sp
+#define putp TestPUTP
+
+static unsigned long xmits;
+
+/* these override lib_tputs.c */
+static int
+NCURSES_SP_NAME(TestTPUTS)(NCURSES_SP_DCLx
+ const char *string,
+ int affcnt GCC_UNUSED,
+ NCURSES_SP_OUTC outc)
+/* stub tputs() that dumps sequences in a visible form */
+{
+ (void) SP_PARM;
+ (void) outc;
+ if (profiling)
+ xmits += strlen(string);
+ else
+ (void) fputs(_nc_visbuf(string), stdout);
+ return (OK);
+}
#endif /* MAIN */
#undef NCURSES_OUTC_FUNC
@@ -1154,39 +1177,6 @@ NCURSES_EXPORT_VAR(int) _nc_optimize_enable = OPTIMIZE_ALL;
NCURSES_EXPORT_VAR(const char *) _nc_progname = "mvcur";
-static unsigned long xmits;
-
-/* these override lib_tputs.c */
-NCURSES_EXPORT(int)
-tputs(const char *string, int affcnt GCC_UNUSED, int (*outc) (int) GCC_UNUSED)
-/* stub tputs() that dumps sequences in a visible form */
-{
- if (profiling)
- xmits += strlen(string);
- else
- (void) fputs(_nc_visbuf(string), stdout);
- return (OK);
-}
-
-NCURSES_EXPORT(int)
-putp(const char *string)
-{
- return (tputs(string, 1, _nc_outch));
-}
-
-NCURSES_EXPORT(int)
-_nc_outch(int ch)
-{
- putc(ch, stdout);
- return OK;
-}
-
-NCURSES_EXPORT(int)
-delay_output(int ms GCC_UNUSED)
-{
- return OK;
-}
-
static char tname[PATH_MAX];
static void
diff --git a/ncurses/wcwidth.h b/ncurses/wcwidth.h
index e8762e3b..744b8c1d 100644
--- a/ncurses/wcwidth.h
+++ b/ncurses/wcwidth.h
@@ -1,4 +1,4 @@
-/* $Id: wcwidth.h,v 1.11 2026/01/03 11:44:47 tom Exp $ */
+/* $Id: wcwidth.h,v 1.12 2026/01/12 00:27:54 tom Exp $ */
/*
* Copyright 2002-2025,2026 by Thomas E. Dickey
@@ -113,8 +113,7 @@
*-----------------------------------------------------------------------------
*/
-#ifndef _WCWIDTH_H_incl
-#define _WCWIDTH_H_incl 1
+#ifdef mk_wcwidth
#ifdef TEST_DRIVER
#include
@@ -1196,4 +1195,4 @@ main(int argc, char **argv)
}
#endif /* TEST_DRIVER */
-#endif /* _WCWIDTH_H_incl 1 */
+#endif /* defined(mk_wcwidth) */
diff --git a/package/debian-mingw/changelog b/package/debian-mingw/changelog
index 92f779a2..a4dfa250 100644
--- a/package/debian-mingw/changelog
+++ b/package/debian-mingw/changelog
@@ -1,8 +1,8 @@
-ncurses6td (6.6+20260103) unstable; urgency=low
+ncurses6td (6.6+20260117) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey Sat, 03 Jan 2026 05:44:45 -0500
+ -- Thomas E. Dickey Sat, 17 Jan 2026 06:18:11 -0500
ncurses6 (5.9+20131005) unstable; urgency=low
diff --git a/package/debian-mingw64/changelog b/package/debian-mingw64/changelog
index 92f779a2..a4dfa250 100644
--- a/package/debian-mingw64/changelog
+++ b/package/debian-mingw64/changelog
@@ -1,8 +1,8 @@
-ncurses6td (6.6+20260103) unstable; urgency=low
+ncurses6td (6.6+20260117) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey Sat, 03 Jan 2026 05:44:45 -0500
+ -- Thomas E. Dickey Sat, 17 Jan 2026 06:18:11 -0500
ncurses6 (5.9+20131005) unstable; urgency=low
diff --git a/package/debian/changelog b/package/debian/changelog
index 4bcea3a7..a6f09992 100644
--- a/package/debian/changelog
+++ b/package/debian/changelog
@@ -1,8 +1,8 @@
-ncurses6td (6.6+20260103) unstable; urgency=low
+ncurses6td (6.6+20260117) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey Sat, 03 Jan 2026 05:44:45 -0500
+ -- Thomas E. Dickey Sat, 17 Jan 2026 06:18:11 -0500
ncurses6 (5.9+20120608) unstable; urgency=low
diff --git a/package/debian/ncurses6td.lintian-overrides b/package/debian/ncurses6td.lintian-overrides
index 5e5b8c34..caf37751 100644
--- a/package/debian/ncurses6td.lintian-overrides
+++ b/package/debian/ncurses6td.lintian-overrides
@@ -1,4 +1,4 @@
-# $Id: ncurses6td.lintian-overrides,v 1.3 2025/06/14 19:43:41 tom Exp $
+# $Id: ncurses6td.lintian-overrides,v 1.4 2026/01/14 09:51:05 tom Exp $
# This is intentional.
ncurses6td: package-name-doesnt-match-sonames libformw6-6 libmenuw6-6 libncurses++w6-6 libncursesw6-6 libpanelw6-6 libticw6-6 libtinfow6-6
@@ -6,6 +6,6 @@ ncurses6td: package-name-doesnt-match-sonames libformw6-6 libmenuw6-6 libncurses
# This is intentional.
ncurses6td: no-manual-page
ncurses6td: non-dev-pkg-with-shlib-symlink
-ncurses6td: embedded-library ncurses [usr/lib/x86_64-linux-gnu/libtinfow6.so.6.5]
+ncurses6td: embedded-library ncurses [usr/lib/x86_64-linux-gnu/libtinfow6.so.6.6]
# vile: confmode
diff --git a/package/debian/ncursest6td.lintian-overrides b/package/debian/ncursest6td.lintian-overrides
index f3fcc32e..45304d51 100644
--- a/package/debian/ncursest6td.lintian-overrides
+++ b/package/debian/ncursest6td.lintian-overrides
@@ -1,4 +1,4 @@
-# $Id: ncursest6td.lintian-overrides,v 1.3 2025/06/14 19:43:41 tom Exp $
+# $Id: ncursest6td.lintian-overrides,v 1.4 2026/01/14 09:51:13 tom Exp $
# This is intentional.
ncursest6td: package-name-doesnt-match-sonames libformtw6-6 libmenutw6-6 libncurses++tw6-6 libncursestw6-6 libpaneltw6-6 libtictw6-6 libtinfotw6-6
@@ -6,6 +6,6 @@ ncursest6td: package-name-doesnt-match-sonames libformtw6-6 libmenutw6-6 libncur
# This is intentional.
ncursest6td: no-manual-page
ncursest6td: non-dev-pkg-with-shlib-symlink
-ncursest6td: embedded-library ncurses [usr/lib/x86_64-linux-gnu/libtinfotw6.so.6.5]
+ncursest6td: embedded-library ncurses [usr/lib/x86_64-linux-gnu/libtinfotw6.so.6.6]
# vile: confmode
diff --git a/package/mingw-ncurses.nsi b/package/mingw-ncurses.nsi
index b3728dd9..95f226e5 100644
--- a/package/mingw-ncurses.nsi
+++ b/package/mingw-ncurses.nsi
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.742 2026/01/03 10:44:45 tom Exp $
+; $Id: mingw-ncurses.nsi,v 1.744 2026/01/17 11:18:11 tom Exp $
; TODO add examples
; TODO bump ABI to 6
@@ -10,7 +10,7 @@
!define VERSION_MAJOR "6"
!define VERSION_MINOR "6"
!define VERSION_YYYY "2026"
-!define VERSION_MMDD "0103"
+!define VERSION_MMDD "0117"
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
!define MY_ABI "5"
diff --git a/package/mingw-ncurses.spec b/package/mingw-ncurses.spec
index 19850573..2b229383 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.6
-Release: 20260103
+Release: 20260117
License: X11 License Distribution Modification Variant
Group: Development/Libraries
URL: https://invisible-island.net/ncurses/
@@ -144,8 +144,8 @@ popd
%changelog
-* Sat Jan 03 2026 Thomas E. Dickey
-- testing ncurses 6.6-20260103
+* Sat Jan 17 2026 Thomas E. Dickey
+- testing ncurses 6.6-20260117
* Sat Feb 25 2023 Thomas Dickey
- amend URLs per rpmlint
diff --git a/package/ncurses.spec b/package/ncurses.spec
index 1527d645..b1bb4679 100644
--- a/package/ncurses.spec
+++ b/package/ncurses.spec
@@ -1,7 +1,7 @@
Summary: shared libraries for terminal handling
Name: ncurses6
Version: 6.6
-Release: 20260103
+Release: 20260117
License: X11 License Distribution Modification Variant
Group: Development/Libraries
URL: https://invisible-island.net/ncurses/
@@ -134,8 +134,8 @@ rm -f test/ncurses
%changelog
-* Sat Jan 03 2026 Thomas E. Dickey
-- testing ncurses 6.6-20260103
+* Sat Jan 17 2026 Thomas E. Dickey
+- testing ncurses 6.6-20260117
* Sat Feb 25 2023 Thomas Dickey
- amend URLs per rpmlint
diff --git a/package/ncursest.spec b/package/ncursest.spec
index 02a02fc8..27cb1bc9 100644
--- a/package/ncursest.spec
+++ b/package/ncursest.spec
@@ -1,7 +1,7 @@
Summary: Curses library with POSIX thread support.
Name: ncursest6
Version: 6.6
-Release: 20260103
+Release: 20260117
License: X11 License Distribution Modification Variant
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
@@ -142,8 +142,8 @@ exit 0
%changelog
-* Sat Jan 03 2026 Thomas E. Dickey
-- testing ncurses 6.6-20260103
+* Sat Jan 17 2026 Thomas E. Dickey
+- testing ncurses 6.6-20260117
* Tue Dec 24 2019 Thomas Dickey
- drop custom CC_NORMAL warning flags because setting CFLAGS interferes with
diff --git a/test/demo_new_pair.c b/test/demo_new_pair.c
index 6dd188a6..f0ed2e27 100644
--- a/test/demo_new_pair.c
+++ b/test/demo_new_pair.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 2018-2025,2026 Thomas E. Dickey *
* Copyright 2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -27,7 +27,7 @@
* authorization. *
****************************************************************************/
/*
- * $Id: demo_new_pair.c,v 1.34 2025/08/08 15:47:32 tom Exp $
+ * $Id: demo_new_pair.c,v 1.35 2026/01/10 20:36:29 tom Exp $
*
* Demonstrate the alloc_pair() function.
*/
@@ -167,7 +167,7 @@ VERSION_COMMON()
int
main(int argc, char *argv[])
{
- static const char *help[] =
+ static NCURSES_CONST char *help[] =
{
"This program iterates over the possible color combinations,",
"allocating or initializing color pairs. For best results,",
diff --git a/test/demo_termcap.c b/test/demo_termcap.c
index c4689ae7..74952840 100644
--- a/test/demo_termcap.c
+++ b/test/demo_termcap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2019-2024,2025 Thomas E. Dickey *
+ * Copyright 2019-2025,2026 Thomas E. Dickey *
* Copyright 2005-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -30,7 +30,7 @@
/*
* Author: Thomas E. Dickey
*
- * $Id: demo_termcap.c,v 1.75 2025/07/05 15:11:35 tom Exp $
+ * $Id: demo_termcap.c,v 1.76 2026/01/11 12:03:22 tom Exp $
*
* A simple demo of the termcap interface.
*/
@@ -867,7 +867,7 @@ main(int argc, char *argv[])
} else if ((name = getenv("TERM")) != NULL) {
brute_force(name);
} else {
- static NCURSES_CONST char dumb[] = "dumb";
+ static NCURSES_CONST char dumb[] = DEFAULT_TERM_ENV;
brute_force(dumb);
}
}
@@ -894,7 +894,7 @@ main(int argc, char *argv[])
} else if ((name = getenv("TERM")) != NULL) {
demo_termcap(name);
} else {
- static NCURSES_CONST char dumb[] = "dumb";
+ static NCURSES_CONST char dumb[] = DEFAULT_TERM_ENV;
demo_termcap(dumb);
}
}
diff --git a/test/demo_terminfo.c b/test/demo_terminfo.c
index f5b29677..46bb4771 100644
--- a/test/demo_terminfo.c
+++ b/test/demo_terminfo.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2019-2024,2025 Thomas E. Dickey *
+ * Copyright 2019-2025,2026 Thomas E. Dickey *
* Copyright 2009-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -30,7 +30,7 @@
/*
* Author: Thomas E. Dickey
*
- * $Id: demo_terminfo.c,v 1.64 2025/07/05 15:11:35 tom Exp $
+ * $Id: demo_terminfo.c,v 1.65 2026/01/11 12:03:22 tom Exp $
*
* A simple demo of the terminfo interface.
*/
@@ -891,7 +891,7 @@ main(int argc, char *argv[])
} else if ((name = getenv("TERM")) != NULL) {
brute_force(name);
} else {
- static NCURSES_CONST char dumb[] = "dumb";
+ static NCURSES_CONST char dumb[] = DEFAULT_TERM_ENV;
brute_force(dumb);
}
}
@@ -918,7 +918,7 @@ main(int argc, char *argv[])
} else if ((name = getenv("TERM")) != NULL) {
demo_terminfo(name);
} else {
- static NCURSES_CONST char dumb[] = "dumb";
+ static NCURSES_CONST char dumb[] = DEFAULT_TERM_ENV;
demo_terminfo(dumb);
}
}
diff --git a/test/railroad.c b/test/railroad.c
index 1a874f57..a330adb7 100644
--- a/test/railroad.c
+++ b/test/railroad.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2019-2024,2025 Thomas E. Dickey *
+ * Copyright 2019-2025,2026 Thomas E. Dickey *
* Copyright 2000-2013,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -30,7 +30,7 @@
/*
* Author: Thomas E. Dickey - 2000
*
- * $Id: railroad.c,v 1.31 2025/12/14 10:58:45 tom Exp $
+ * $Id: railroad.c,v 1.32 2026/01/11 12:03:22 tom Exp $
*
* A simple demo of the termcap interface.
*/
@@ -185,17 +185,13 @@ onsig(int n GCC_UNUSED)
static void
railroad(char **args)
{
- NCURSES_CONST char *name = getenv("TERM");
+ NCURSES_CONST char *name;
char buffer[1024];
char area[1024], *ap = area;
int z;
- if (name == NULL)
-#ifdef DEFAULT_TERM_ENV
+ if ((name = getenv("TERM")) == NULL)
name = DEFAULT_TERM_ENV;
-#else
- name = "dumb";
-#endif
InitAndCatch(z = tgetent(buffer, name), onsig);
if (z >= 0) {
diff --git a/test/test.priv.h b/test/test.priv.h
index 3c0c2d36..6b0b1104 100644
--- a/test/test.priv.h
+++ b/test/test.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 2018-2025,2026 Thomas E. Dickey *
* Copyright 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -30,7 +30,7 @@
/****************************************************************************
* Author: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: test.priv.h,v 1.229 2025/12/06 21:21:06 tom Exp $ */
+/* $Id: test.priv.h,v 1.230 2026/01/11 12:03:22 tom Exp $ */
#ifndef __TEST_PRIV_H
#define __TEST_PRIV_H 1
@@ -782,6 +782,10 @@ extern int optind;
#define HELP_KEY_1 '?'
#define HELP_KEY_2 KEY_F(1)
+#ifndef DEFAULT_TERM_ENV
+#define DEFAULT_TERM_ENV "dumb"
+#endif
+
/* our "standard" options for getopt, needed for help2man */
#define OPTS_COMMAND 'c'
#define OPTS_LOGGING 'l'
diff --git a/test/test_setupterm.c b/test/test_setupterm.c
index 3f53bf89..567620f0 100644
--- a/test/test_setupterm.c
+++ b/test/test_setupterm.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2020-2024,2025 Thomas E. Dickey *
+ * Copyright 2020-2025,2026 Thomas E. Dickey *
* Copyright 2015,2016 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -30,7 +30,7 @@
/*
* Author: Thomas E. Dickey
*
- * $Id: test_setupterm.c,v 1.19 2025/07/05 15:21:56 tom Exp $
+ * $Id: test_setupterm.c,v 1.20 2026/01/11 12:03:22 tom Exp $
*
* A simple demo of setupterm/restartterm.
*/
@@ -242,7 +242,7 @@ main(int argc, char *argv[])
if (a_opt) {
static char predef[][12] =
- {"vt100", "dumb", "lpr", "unknown", "none-such"};
+ {"vt100", DEFAULT_TERM_ENV, "lpr", "unknown", "none-such"};
if (optind < argc) {
usage(FALSE);
}
diff --git a/test/test_sgr.c b/test/test_sgr.c
index 6120344e..d13e6b5b 100644
--- a/test/test_sgr.c
+++ b/test/test_sgr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright 2019-2024,2025 Thomas E. Dickey *
+ * Copyright 2019-2025,2026 Thomas E. Dickey *
* Copyright 2015-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@@ -30,7 +30,7 @@
/*
* Author: Thomas E. Dickey
*
- * $Id: test_sgr.c,v 1.28 2025/07/05 15:11:35 tom Exp $
+ * $Id: test_sgr.c,v 1.29 2026/01/11 12:03:22 tom Exp $
*
* A simple demo of the sgr/sgr0 terminal capabilities.
*/
@@ -369,7 +369,7 @@ main(int argc, char *argv[])
} else if ((name = getenv("TERM")) != NULL) {
brute_force(name);
} else {
- static const char dumb[] = "dumb";
+ static const char dumb[] = DEFAULT_TERM_ENV;
brute_force(dumb);
}