xterm-124.patch.txt

# ------------------------------------------------------------------------------
#  input.c        |   29 ++++++++++++++++++++---------
#  main.c         |    6 ++----
#  termcap        |    2 +-
#  terminfo       |   17 ++++++++---------
#  trace.c        |    2 +-
#  version.h      |    4 ++--
#  xterm.h        |   10 ++++++++++
#  xterm.log.html |   34 +++++++++++++++++++++++++++++++++-
#  xterm.man      |   12 ++++++------
#  9 files changed, 83 insertions, 33 deletions
# ------------------------------------------------------------------------------
Index: input.c
--- xterm-123/input.c   Fri Jan 21 19:19:54 2000
+++ xterm-124/input.c   Thu Jan 27 18:58:10 2000
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright 1999 by Thomas E. Dickey <dickey@clark.net>
+ * Copyright 1999-2000 by Thomas E. Dickey <dickey@clark.net>
  *
  *                         All Rights Reserved
  *
@@ -149,6 +149,9 @@
        case XK_KP_Delete:
        case XK_KP_Insert:
 #endif
+#ifdef XK_ISO_Left_Tab
+       case XK_ISO_Left_Tab:
+#endif
                return True;
        default:
                return False;
@@ -531,12 +534,7 @@
         } else if (IsFunctionKey(keysym)
                || IsMiscFunctionKey(keysym)
                || IsEditFunctionKey(keysym)
-               || ((keysym == XK_Delete)
-                && ((modify_parm > 1)
-#if OPT_SUNPC_KBD
-                 || sunKeyboard
-#endif
-                 ))) {
+               || (keysym == XK_Delete)) {
 #if OPT_SUNPC_KBD
                if (sunKeyboard) {
                        if ((event->state & ControlMask)
@@ -572,15 +570,22 @@
                else {
                        reply.a_type = CSI;
                        reply.a_nparam = 1;
+                       reply.a_final = 0;
+                       MODIFIER_PARM
                        if (sunFunctionKeys) {
                                reply.a_param[0] = sunfuncvalue (keysym);
                                reply.a_final = 'z';
+#ifdef XK_ISO_Left_Tab
+                       } else if (keysym == XK_ISO_Left_Tab) {
+                               reply.a_nparam = 0;
+                               reply.a_final = 'Z';
+#endif
                        } else {
                                reply.a_param[0] = dec_code;
                                reply.a_final = '~';
                        }
-                       MODIFIER_PARM
-                       if (reply.a_param[0] > 0)
+                       if (reply.a_final != 0
+                        && (reply.a_nparam == 0 || reply.a_param[0] >= 0))
                                unparseseq(&reply, pty);
                }
                key = TRUE;
@@ -641,6 +646,9 @@
                                *string = cmp;
                        } else if (eightbit) {
                                unparseputc (ESC, pty);  /* escape */
+                       } else if (*string == '?'
+                           && (event->state & ControlMask) != 0) {
+                               *string = 127;
                        }
                }
                while (nbytes-- > 0)
@@ -715,6 +723,9 @@
                case XK_Select: return(4);
                case XK_Prior:  return(5);
                case XK_Next:   return(6);
+#ifdef XK_ISO_Left_Tab
+               case XK_ISO_Left_Tab: return('Z');
+#endif
                default:        return(-1);
        }
 }
Index: main.c
--- xterm-123/main.c    Tue Jan 25 01:45:01 2000
+++ xterm-124/main.c    Thu Jan 27 21:01:34 2000
@@ -4402,10 +4402,9 @@
            s++;
            c = ((*s == '?') ? 0177 : CONTROL(*s));
            if (*s == '-') {
-#if defined(HAVE_TERMIOS_H) && defined(HAVE_TCGETATTR)
-#  ifdef HAVE_POSIX_VDISABLE
+#if defined(HAVE_POSIX_VDISABLE)
                c = _POSIX_VDISABLE;
-#  else
+#elif defined(_PC_VDISABLE)
                errno = 0;
                c = fpathconf(0, _PC_VDISABLE);
                if (c == -1) {
@@ -4413,7 +4412,6 @@
                        continue;       /* skip this (error) */
                    c = 0377;
                }
-#  endif
 #elif defined(VDISABLE)
                c = VDISABLE;
 #else
Index: termcap
--- xterm-123/termcap   Tue Jan 25 01:45:01 2000
+++ xterm-124/termcap   Thu Jan 27 21:01:34 2000
@@ -32,7 +32,7 @@
        :k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:\
        :kn#12:km:\
        :kH=\EOF::@7=\EOF:kh=\EOH:\
-       :@0=\EOH:kI=\E[2~:kD=^?:\
+       :@0=\EOH:kI=\E[2~:kD=\E[3~:\
        :*6=\EOF:kP=\E[5~:kN=\E[6~:\
        :kb=^H:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\
        :li#24:md=\E[1m:me=\E[m^O:mr=\E[7m:ms:nd=\E[C:\
Index: terminfo
--- xterm-123/terminfo  Thu Dec 30 05:01:00 1999
+++ xterm-124/terminfo  Tue Jan 25 05:53:51 2000
@@ -101,12 +101,11 @@
        kPRV=\E[5;5~,
        kRIT=\EO5C,
        kb2=\EOE,
-       kbs=^H,
+       kcbt=\E[Z,
        kcub1=\EOD,
        kcud1=\EOB,
        kcuf1=\EOC,
        kcuu1=\EOA,
-       kdch1=\177,
        kend=\EOF,
        kent=\EOM,
        kf1=\EOP,
@@ -164,8 +163,8 @@
        kpp=\E[5~,
        use=xterm-basic,
 #
-# No function keys in this chunk, used for building the keyboard variants.
-xterm-basic|xterm terminal emulator - no function keys (XFree86),
+# This chunk is used for building the VT220/Sun/PC keyboard variants.
+xterm-basic|xterm terminal emulator - common (XFree86),
        am,
        bce,
        km,
@@ -218,6 +217,8 @@
        ind=^J,
        invis=\E[8m,
        is2=\E[!p\E[?3;4l\E[4l\E>,
+       kbs=^H,
+       kdch1=\E[3~,
        mc0=\E[i,
        mc4=\E[4i,
        mc5=\E[5i,
@@ -270,14 +271,13 @@
        ka1=\EOw,
        ka3=\EOy,
        kbeg=\EOu,
-       kbs=^H,
        kc1=\EOq,
        kc3=\EOs,
+       kcbt=\E[Z,
        kcub1=\EOD,
        kcud1=\EOB,
        kcuf1=\EOC,
        kcuu1=\EOA,
-       kdch1=\E[3~,
        kend=\E[4~,
        kent=\EOM,
        kf1=\EOP,
@@ -338,13 +338,11 @@
 # kf30-kf45 are keysyms XK_R1 through XK_R15 on the Sun keyboard.
 xterm-sun|XFree86 xterm with sun function keys,
        kb2=\E[218z,
-       kbs=^H,
        kcpy=\E[197z,
        kcub1=\EOD,
        kcud1=\EOB,
        kcuf1=\EOC,
        kcuu1=\EOA,
-       kdch1=\177,
        kend=\E[220z,
        kent=\EOM,
        kf1=\E[224z,
@@ -406,7 +404,7 @@
        kich1=\EQ,
        knp=\ES,
        kpp=\ET,
-       use=xterm,
+       use=xterm-basic,
 #
 # Other variants:
 xterm-24|xterms|vs100|xterm terminal emulator (X Window System),
@@ -631,6 +629,7 @@
        kbs=^H,
        kc1=\217q,
        kc3=\217s,
+       kcbt=\233Z,
        kcub1=\217D,
        kcud1=\217B,
        kcuf1=\217C,
Index: trace.c
--- xterm-123/trace.c   Fri Jan 21 19:19:54 2000
+++ xterm-124/trace.c   Mon Jan 24 20:28:18 2000
@@ -4,7 +4,7 @@
 
 /************************************************************
 
-Copyright 1997 by Thomas E. Dickey <dickey@clark.net>
+Copyright 1997-2000 by Thomas E. Dickey <dickey@clark.net>
 
                         All Rights Reserved
 
Index: version.h
--- xterm-123/version.h Tue Jan 25 01:45:01 2000
+++ xterm-124/version.h Thu Jan 27 21:01:34 2000
@@ -6,5 +6,5 @@
  * XFree86 to which this version of xterm has been built.  The number in
  * parentheses is my patch number (T.Dickey).
  */
-#define XTERM_PATCH   123
-#define XFREE86_VERSION "XFree86 3.9.17a"
+#define XTERM_PATCH   124
+#define XFREE86_VERSION "XFree86 3.9.17b"
Index: xterm.h
--- xterm-123/xterm.h   Fri Jan 21 19:19:54 2000
+++ xterm-124/xterm.h   Thu Jan 27 19:25:01 2000
@@ -201,6 +201,16 @@
 
 /***====================================================================***/
 
+#ifndef HAVE_CONFIG_H
+
+#if defined(_POSIX_VDISABLE) && (_POSIX_VDISABLE != -1) && defined(HAVE_UNISTD_H)
+#define HAVE_POSIX_VDISABLE 1
+#endif
+
+#endif /* HAVE_CONFIG_H */
+
+/***====================================================================***/
+
 #define XtNallowSendEvents     "allowSendEvents"
 #define XtNalwaysHighlight     "alwaysHighlight"
 #define XtNanswerbackString    "answerbackString"
Index: xterm.log.html
--- xterm-123/xterm.log.html    Tue Jan 25 01:45:01 2000
+++ xterm-124/xterm.log.html    Thu Jan 27 21:04:19 2000
@@ -41,6 +41,7 @@
 xc/programs/Xserver/hw/xfree86).
 
 <UL>
+<LI><A HREF="#xterm_124">Patch #124 - 2000/1/27 - XFree86 3.9.17b</A>
 <LI><A HREF="#xterm_123">Patch #123 - 2000/1/22 - XFree86 3.9.17a</A>
 <LI><A HREF="#xterm_122">Patch #122 - 1999/12/28 - XFree86 3.9.16f</A>
 <LI><A HREF="#xterm_121">Patch #121 - 1999/11/14 - XFree86 3.9.16c</A>
@@ -167,7 +168,38 @@
 <LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
 </UL>
 
-<H1><A NAME="xterm_123">Patch #123 - 1999/1/22 - XFree86 3.9.17a</A></H1>
+<H1><A NAME="xterm_124">Patch #124 - 2000/1/27 - XFree86 3.9.17b</A></H1>
+<ul>
+       <li>change coding of editing keypad's "Delete" key to
+         &lt;escape&gt;[3~, in the default (Sun/PC) keyboard mode.
+         This makes the terminfo kdch1 capability independent of the
+         coding of the backarrow key, which sends either backspace (8)
+         or DEL (127).  The reason for doing this (compatibility with
+         the <em>screen</em> program) outweighs the choice of DEL (127)
+         which was used in X11R5/X11R6 xterms.  The <em>screen</em>
+         program translates whatever matches kdch1 into &lt;escape&gt;[3~,
+         even if it happens to be the stty erase character.
+
+       <li>add encoding for control/?, to work around xmodmap or key
+         translations which may confuse backspace and delete.  A control/? 
+         will send DEL (127), and a control/H will of course send backspace
+         (8).
+
+       <li>add encoding for kcbt to &lt;escape&gt;[Z (fixes Debian #54840).
+
+       <li>minor correction to logic that encodes Sun and DEC function keys
+         to avoid sending an escape sequence if the key symbol is not found
+         in xterm's lookup table.
+
+       <li>simplify ifdef's in main.c for POSIX VDISABLE so the "^-" pattern
+         is more likely to be implemented when <em>imake</em> configures xterm
+         (fixes Debian #55105).
+
+       <li>change manpage to make it clearer what codes are sent by the
+         backarrow key.
+</ul>
+
+<H1><A NAME="xterm_123">Patch #123 - 2000/1/22 - XFree86 3.9.17a</A></H1>
 <ul>
        <li>add a note reserving OSC 51 for use in Emacs shell (request by
          Rob Myoff &lt;mayoff@dqd.com&gt;).
Index: xterm.man
--- xterm-123/xterm.man Thu Dec 30 05:01:00 1999
+++ xterm-124/xterm.man Mon Jan 24 20:36:48 2000
@@ -551,8 +551,8 @@
 characters that should be bound to those functions, similar to the \fIstty\fP
 program.  Allowable keywords include: intr, quit, erase, kill, eof,
 eol, swtch, start, stop, brk, susp, dsusp, rprnt, flush, weras, and lnext.
-Control characters may be specified as ^char (e.g. ^c or ^u) and ^? may be
-used to indicate delete.
+Control characters may be specified as ^char (e.g., ^c or ^u) and ^? may be
+used to indicate delete (127).
 .TP 8
 .BI \-tn " name"
 This option specifies the name of the terminal type to be set in the TERM
@@ -723,7 +723,7 @@
 .B "backarrowKeyIsErase (\fPclass\fB BackarrowKeyIsErase)"
 Tie the VTxxx \fBbackarrowKey\fP and \fBptyInitialErase\fP resources
 together by setting the DECBKM state according to whether the initial value of
-stty erase is a backspace or delete character.
+stty erase is a backspace (8) or delete (127) character.
 The default is ``false'', which disables this feature.
 .TP 8
 .B "hold (\fPclass\fB Hold)"
@@ -811,7 +811,7 @@
 lnext and
 status.
 Control characters may be specified as ^char (e.g., ^c or ^u)
-and \fB^?\fP may be used to indicate Delete.
+and \fB^?\fP may be used to indicate delete (127).
 Use \fB^-\fP to denote undef.
 Use \fB\\034\fP to represent \fB^\\\fP, since a literal backslash in
 an X resource escapes the next character.
@@ -894,8 +894,8 @@
 .TP 8
 .B "backarrowKey (\fPclass\fB BackarrowKey)"
 Specifies whether the backarrow key transmits
-a backspace
-or delete character.
+a backspace (8)
+or delete (127) character.
 This corresponds to the DECBKM control sequence.
 The default (backspace) is ``true.''
 Pressing the control key toggles this behavior.