# https://invisible-island.net/archives/xterm/patches/xterm-410.patch.gz
# patch by Thomas E. Dickey <dickey@invisible-island.net>
# created  Fri May  1 23:56:18 UTC 2026
# ------------------------------------------------------------------------------
# MANIFEST                 |    2 +-
# ctlseqs.ms               |   18 +++++++++---------
# ctlseqs.txt              |   16 ++++++++--------
# package/debian/changelog |    6 ++++++
# package/freebsd/Makefile |    4 ++--
# package/pkgsrc/Makefile  |    2 +-
# package/xterm.spec       |    8 ++++----
# util.c                   |    6 ++++--
# version.h                |    6 +++---
# xterm.appdata.xml        |    2 +-
# xterm.log.html           |   17 ++++++++++++++++-
# 11 files changed, 55 insertions(+), 32 deletions(-)
# ------------------------------------------------------------------------------
Index: MANIFEST
--- xterm-409+/MANIFEST	2026-04-12 23:39:10.000000000 +0000
+++ xterm-410/MANIFEST	2026-04-19 09:42:14.000000000 +0000
@@ -1,4 +1,4 @@
-MANIFEST for xterm, version xterm-409
+MANIFEST for xterm, version xterm-410
 --------------------------------------------------------------------------------
 MANIFEST                        this file
 256colres.h                     resource-definitions for 256-color mode
Index: ctlseqs.ms
--- xterm-409+/ctlseqs.ms	2026-02-16 18:45:22.000000000 +0000
+++ xterm-410/ctlseqs.ms	2026-04-19 12:55:13.000000000 +0000
@@ -1,5 +1,5 @@
 .\"#! troff -ms $1		-*- Nroff -*-
-.\" $XTermId: ctlseqs.ms,v 1.744 2026/02/16 18:45:22 tom Exp $
+.\" $XTermId: ctlseqs.ms,v 1.746 2026/04/19 12:55:13 tom Exp $
 .\" ---------------------------------------------------------------------------
 .\" Copyright 1996-2025,2026 by Thomas E. Dickey
 .\" Copyright 1991, 1994 X Consortium
@@ -40,8 +40,8 @@
 .\"
 .ds XT XTerm
 .ds xt xterm
-.ds LF Patch #407
-.ds RF 2026/02/16
+.ds LF Patch #410
+.ds RF 2026/04/19
 .\"
 .if n .pl 9999v		\" no page breaks in nroff
 .ND
@@ -1516,8 +1516,8 @@
 This is the X10 \fI\*(xt\fP mouse protocol.
   \*(Ps = \*1\*0 \(-> Show toolbar (rxvt).
   \*(Ps = \*1\*2 \(-> Start blinking cursor (AT&T 610).
-  \*(Ps = \*1\*3 \(-> Start blinking cursor (set only via resource or menu).
-  \*(Ps = \*1\*4 \(-> Enable XOR of blinking cursor control sequence and menu.
+  \*(Ps = \*1\*3 \(-> Start blinking cursor (read-only, set only via resource or menu).
+  \*(Ps = \*1\*4 \(-> Enable XOR of blinking cursor control sequence and menu (read-only, set via resource).
   \*(Ps = \*1\*8 \(-> Print Form Feed (DECPFF), VT220.
   \*(Ps = \*1\*9 \(-> Set print extent to full screen (DECPEX), VT220.
   \*(Ps = \*2\*5 \(-> Show cursor (DECTCEM), VT220.
@@ -1566,10 +1566,10 @@
   \*(Ps = \*1\*0\*1\*4 \(-> Enable \fB\%fastScroll\fP resource, \fI\*(xt\fP.
   \*(Ps = \*1\*0\*1\*5 \(-> Enable urxvt Mouse Mode.
   \*(Ps = \*1\*0\*1\*6 \(-> Enable SGR Mouse PixelMode, \fI\*(xt\fP.
-  \*(Ps = \*1\*0\*2\*0 \(-> \fB\%utf8\fP resource setting, \fI\*(xt\fP.
-  \*(Ps = \*1\*0\*2\*1 \(-> \fB\%cjkWidth\fP resource setting, \fI\*(xt\fP.
-  \*(Ps = \*1\*0\*2\*2 \(-> \fB\%emojiWidth\fP resource setting, \fI\*(xt\fP.
-  \*(Ps = \*1\*0\*2\*3 \(-> \fB\%privateWidth\fP resource setting, \fI\*(xt\fP.
+  \*(Ps = \*1\*0\*2\*0 \(-> \fB\%utf8\fP resource (read-only), \fI\*(xt\fP.
+  \*(Ps = \*1\*0\*2\*1 \(-> \fB\%cjkWidth\fP resource (read-only), \fI\*(xt\fP.
+  \*(Ps = \*1\*0\*2\*2 \(-> \fB\%emojiWidth\fP resource (read-only), \fI\*(xt\fP.
+  \*(Ps = \*1\*0\*2\*3 \(-> \fB\%privateWidth\fP resource (read-only), \fI\*(xt\fP.
   \*(Ps = \*1\*0\*3\*4 \(-> Interpret \*(``meta\*('' key, \fI\*(xt\fP.
 This sets the eighth bit of keyboard input
 (and enables the \fB\%eightBitInput\fP resource).
Index: ctlseqs.txt
--- xterm-409+/ctlseqs.txt	2026-02-16 18:45:31.000000000 +0000
+++ xterm-410/ctlseqs.txt	2026-04-19 13:04:27.000000000 +0000
@@ -21,7 +21,7 @@
                              Thomas Dickey
                       XFree86 Project (1996-2006)
                     invisible-island.net (2006-2026)
-               updated for XTerm Patch #407 (2026/02/16)
+               updated for XTerm Patch #410 (2026/04/19)
 
 
 
@@ -929,10 +929,10 @@
           section Mouse Tracking.  This is the X10 xterm mouse protocol.
             Ps = 1 0  -> Show toolbar (rxvt).
             Ps = 1 2  -> Start blinking cursor (AT&T 610).
-            Ps = 1 3  -> Start blinking cursor (set only via resource or
-          menu).
+            Ps = 1 3  -> Start blinking cursor (read-only, set only via
+          resource or menu).
             Ps = 1 4  -> Enable XOR of blinking cursor control sequence
-          and menu.
+          and menu (read-only, set via resource).
             Ps = 1 8  -> Print Form Feed (DECPFF), VT220.
             Ps = 1 9  -> Set print extent to full screen (DECPEX),
           VT220.
@@ -988,10 +988,10 @@
             Ps = 1 0 1 4  -> Enable fastScroll resource, xterm.
             Ps = 1 0 1 5  -> Enable urxvt Mouse Mode.
             Ps = 1 0 1 6  -> Enable SGR Mouse PixelMode, xterm.
-            Ps = 1 0 2 0  -> utf8 resource setting, xterm.
-            Ps = 1 0 2 1  -> cjkWidth resource setting, xterm.
-            Ps = 1 0 2 2  -> emojiWidth resource setting, xterm.
-            Ps = 1 0 2 3  -> privateWidth resource setting, xterm.
+            Ps = 1 0 2 0  -> utf8 resource (read-only), xterm.
+            Ps = 1 0 2 1  -> cjkWidth resource (read-only), xterm.
+            Ps = 1 0 2 2  -> emojiWidth resource (read-only), xterm.
+            Ps = 1 0 2 3  -> privateWidth resource (read-only), xterm.
             Ps = 1 0 3 4  -> Interpret "meta" key, xterm.  This sets the
           eighth bit of keyboard input (and enables the eightBitInput
           resource).
Index: package/debian/changelog
--- xterm-409+/package/debian/changelog	2026-04-12 23:39:10.000000000 +0000
+++ xterm-410/package/debian/changelog	2026-04-19 09:42:14.000000000 +0000
@@ -1,3 +1,9 @@
+xterm-dev (410) unstable; urgency=low
+
+  * maintenance updates
+
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 19 Apr 2026 05:42:14 -0400
+
 xterm-dev (409) unstable; urgency=low
 
   * maintenance updates
Index: package/freebsd/Makefile
--- xterm-409+/package/freebsd/Makefile	2026-04-12 23:39:10.000000000 +0000
+++ xterm-410/package/freebsd/Makefile	2026-04-19 09:42:14.000000000 +0000
@@ -1,4 +1,4 @@
-# $XTermId: Makefile,v 1.132 2026/04/12 23:39:10 tom Exp $
+# $XTermId: Makefile,v 1.133 2026/04/19 09:42:14 tom Exp $
 
 # This is adapted from the FreeBSD port, installing as "xterm-dev" with
 # separate resource- and manpage files.
@@ -6,7 +6,7 @@
 # and "make makesum".
 
 PORTNAME=	xterm
-DISTVERSION=	409
+DISTVERSION=	410
 CATEGORIES=	x11
 MASTER_SITES=	https://invisible-island.net/archives/xterm/:src1 \
 		https://invisible-mirror.net/archives/xterm/:src1
Index: package/pkgsrc/Makefile
--- xterm-409+/package/pkgsrc/Makefile	2026-04-12 23:39:10.000000000 +0000
+++ xterm-410/package/pkgsrc/Makefile	2026-04-19 09:42:14.000000000 +0000
@@ -1,6 +1,6 @@
 # $NetBSD: Makefile,v 1.156 2024/10/27 05:42:46 pin Exp $
 
-DISTNAME=	xterm-409
+DISTNAME=	xterm-410
 CATEGORIES=	x11
 MASTER_SITES=	https://invisible-island.net/archives/xterm/
 EXTRACT_SUFX=	.tgz
Index: package/xterm.spec
--- xterm-409+/package/xterm.spec	2026-04-12 23:39:10.000000000 +0000
+++ xterm-410/package/xterm.spec	2026-04-19 09:42:14.000000000 +0000
@@ -1,11 +1,11 @@
-# $XTermId: xterm.spec,v 1.218 2026/04/12 23:39:10 tom Exp $
+# $XTermId: xterm.spec,v 1.219 2026/04/19 09:42:14 tom Exp $
 Summary: X terminal emulator (development version)
 %global my_middle xterm
 %global my_suffix -dev
 %global fullname %{my_middle}%{my_suffix}
 %global my_class XTermDev
 Name: %{fullname}
-Version: 409
+Version: 410
 Release: 1
 License: X11
 Group: User Interface/X
@@ -269,8 +269,8 @@
 
 %changelog
 
-* Sun Apr 12 2026 Thomas E. Dickey
-- testing xterm-dev 409-1
+* Sun Apr 19 2026 Thomas E. Dickey
+- testing xterm-dev 410-1
 
 * Fri Nov 25 2022 Thomas E. Dickey
 - Fedora 37 has no xorg-x11-docs
Index: util.c
--- xterm-409+/util.c	2026-04-13 20:56:03.000000000 +0000
+++ xterm-410/util.c	2026-04-29 22:21:00.000000000 +0000
@@ -1,4 +1,4 @@
-/* $XTermId: util.c,v 1.976 2026/04/13 20:56:03 tom Exp $ */
+/* $XTermId: util.c,v 1.977 2026/04/29 22:21:00 tom Exp $ */
 
 /*
  * Copyright 1999-2025,2026 by Thomas E. Dickey
@@ -4284,7 +4284,9 @@
 		XftFont *tempFont = NULL;
 #define CURR_TEMP (tempFont ? tempFont : XftFp(currData))
 
-		if ((ch != HIDDEN_CHAR) && IsAllowedCtlChar(ch_width)) {
+		if ((ch != HIDDEN_CHAR)
+		    && IsAllowedCtlChar(ch_width)
+		    && !mk_is_combining(ch)) {
 		    TRACE(("%s@%d: AllowCtlChar\n", __FILE__, __LINE__));
 		    ch_width = 1;
 		    missing = True;
Index: version.h
--- xterm-409+/version.h	2026-04-13 21:35:10.000000000 +0000
+++ xterm-410/version.h	2026-05-01 23:27:16.000000000 +0000
@@ -1,4 +1,4 @@
-/* $XTermId: version.h,v 1.612 2026/04/13 21:35:10 tom Exp $ */
+/* $XTermId: version.h,v 1.614 2026/05/01 23:27:16 tom Exp $ */
 
 /*
  * Copyright 1998-2025,2026 by Thomas E. Dickey
@@ -38,8 +38,8 @@
  * version of X to which this version of xterm has been built.  The resulting
  * number in parentheses is my patch number (Thomas E. Dickey).
  */
-#define XTERM_PATCH   409
-#define XTERM_DATE    2026-04-13
+#define XTERM_PATCH   410
+#define XTERM_DATE    2026-05-01
 
 #ifndef __vendorversion__
 #define __vendorversion__ "XTerm"
Index: xterm.appdata.xml
--- xterm-409+/xterm.appdata.xml	2026-04-13 21:35:10.000000000 +0000
+++ xterm-410/xterm.appdata.xml	2026-05-01 23:27:16.000000000 +0000
@@ -35,7 +35,7 @@
     <keyword>terminal</keyword>
   </keywords>
   <releases>
-    <release version="409" date="2026-04-13"/>
+    <release version="410" date="2026-05-01"/>
   </releases>
   <url type="homepage">https://invisible-island.net/xterm/</url>
   <update_contact>dickey@invisible-island.net</update_contact>
Index: xterm.log.html
--- xterm-409+/xterm.log.html	2026-04-13 21:35:18.000000000 +0000
+++ xterm-410/xterm.log.html	2026-05-01 23:27:57.000000000 +0000
@@ -30,7 +30,7 @@
  * sale, use or other dealings in this Software without prior written        *
  * authorization.                                                            *
  *****************************************************************************
-  $XTermId: xterm.log.html,v 1.2774 2026/04/13 21:35:18 tom Exp $
+  $XTermId: xterm.log.html,v 1.2778 2026/05/01 23:27:57 tom Exp $
   -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <html>
@@ -70,6 +70,8 @@
   CHANGELOG</a>).</p>
 
   <ul>
+    <li><a href="#xterm_410">Patch #410 - 2026/05/01</a></li>
+
     <li><a href="#xterm_409">Patch #409 - 2026/04/13</a></li>
 
     <li><a href="#xterm_408">Patch #408 - 2026/04/12</a></li>
@@ -1096,6 +1098,19 @@
     <li><a href="#xterm_01">Patch #1 - 1996/1/6</a></li>
   </ul>
 
+  <h1><a name="xterm_410" id="xterm_410">Patch #410 -
+  2026/05/01</a></h1>
+
+  <ul>
+    <li>amend one of the fixes for Debian #738794 in <a href=
+    "#xterm_407">patch #407</a>, which caused combining characters
+    to be outlined (report by "Martin").</li>
+
+    <li>clarify in <tt>ctlseqs.ms</tt> which modes listed for
+    DECSET are readonly (prompted by discussion with Thomas
+    Wolff).</li>
+  </ul>
+
   <h1><a name="xterm_409" id="xterm_409">Patch #409 -
   2026/04/13</a></h1>
 
