# ------------------------------------------------------------------------------
# Makefile.in | 7 +-
# charproc.c | 60 +++++++++++++++------
# input.c | 61 ++++++++++++++-------
# main.c | 18 +++---
# proto.h | 18 +-----
# ptyx.h | 5 +
# scrollbar.c | 2
# termcap | 19 +++++-
# terminfo | 154 +++++++++++++++++++++++++++++++++++++++++++------------
# util.c | 2
# version.h | 2
# xterm.h | 9 ---
# xterm.log.html | 55 +++++++++++++++++++
# xterm.man | 10 ++-
# 14 files changed, 309 insertions, 113 deletions
# ------------------------------------------------------------------------------
Index: Makefile.in
--- xterm-78/Makefile.in Fri Jun 5 16:23:53 1998
+++ xterm-79/Makefile.in Sun Jun 28 21:38:53 1998
@@ -1,4 +1,4 @@
-## $XFree86: xc/programs/xterm/Makefile.in,v 3.12 1998/06/04 16:43:48 hohndel Exp $ ##
+## $XFree86: xc/programs/xterm/Makefile.in,v 3.11 1998/04/05 00:46:08 robin Exp $ ##
#### Start of system configuration section. ####
@@ -14,6 +14,7 @@
X_CFLAGS = @X_CFLAGS@
X_LIBS = @X_LIBS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
IMAKE_CFLAGS = @IMAKE_CFLAGS@
EXTRA_CFLAGS = @EXTRA_CFLAGS@
@@ -77,10 +78,10 @@
main.o: version.h
xterm : $(OBJS1)
- $(LINK) $(LDFLAGS) -o $@ $(OBJS1) $(X_LIBS) $(LIBS) $(EXTRA_LOADFLAGS)
+ $(LINK) $(LDFLAGS) -o $@ $(OBJS1) $(X_LIBS) $(X_EXTRA_LIBS) $(LIBS) $(EXTRA_LOADFLAGS)
resize : $(OBJS2)
- $(LINK) $(LDFLAGS) -o $@ $(OBJS2) $(X_LIBS) $(LIBS)
+ $(LINK) $(LDFLAGS) -o $@ $(OBJS2) $(X_LIBS) $(X_EXTRA_LIBS) $(LIBS)
install: $(INSTALL_DIRS) xterm resize
$(INSTALL_PROGRAM) -s -m 4711 xterm $(bindir)/xterm
Index: charproc.c
--- xterm-78/charproc.c Fri Jun 5 16:23:53 1998
+++ xterm-79/charproc.c Sun Jun 28 22:32:45 1998
@@ -206,6 +206,7 @@
#define XtNmultiClickTime "multiClickTime"
#define XtNmultiScroll "multiScroll"
#define XtNnMarginBell "nMarginBell"
+#define XtNoldXtermFKeys "oldXtermFKeys"
#define XtNpointerColor "pointerColor"
#define XtNpointerColorBackground "pointerColorBackground"
#define XtNpointerShape "pointerShape"
@@ -280,6 +281,7 @@
#define XtCMarginBell "MarginBell"
#define XtCMultiClickTime "MultiClickTime"
#define XtCMultiScroll "MultiScroll"
+#define XtCOldXtermFKeys "OldXtermFKeys"
#define XtCPrintAttributes "PrintAttributes"
#define XtCPrinterAutoClose "PrinterAutoClose"
#define XtCPrinterCommand "PrinterCommand"
@@ -561,6 +563,9 @@
{XtNjumpScroll, XtCJumpScroll, XtRBoolean, sizeof(Boolean),
XtOffsetOf(XtermWidgetRec, screen.jumpscroll),
XtRBoolean, (XtPointer) &defaultTRUE},
+{XtNoldXtermFKeys, XtCOldXtermFKeys, XtRBoolean, sizeof(Boolean),
+ XtOffsetOf(XtermWidgetRec, screen.old_fkeys),
+ XtRBoolean, (XtPointer) &defaultFALSE},
#ifdef ALLOWLOGGING
{XtNlogFile, XtCLogfile, XtRString, sizeof(char *),
XtOffsetOf(XtermWidgetRec, screen.logfile),
@@ -3633,11 +3638,41 @@
Boolean color_ok;
#endif
- /* Zero out the entire "screen" component of "new" widget,
- then do field-by-field assigment of "screen" fields
- that are named in the resource list. */
-
+ /* Zero out the entire "screen" component of "new" widget, then do
+ * field-by-field assigment of "screen" fields that are named in the
+ * resource list.
+ */
bzero ((char *) &new->screen, sizeof(new->screen));
+
+ /* dummy values so that we don't try to Realize the parent shell with height
+ * or width of 0, which is illegal in X. The real size is computed in the
+ * xtermWidget's Realize proc, but the shell's Realize proc is called first,
+ * and must see a valid size.
+ */
+ new->core.height = new->core.width = 1;
+
+ /*
+ * The definition of -rv now is that it changes the definition of
+ * XtDefaultForeground and XtDefaultBackground. So, we no longer
+ * need to do anything special.
+ */
+ new->screen.display = new->core.screen->display;
+
+ /*
+ * We use the default foreground/background colors to compare/check if a
+ * color-resource has been set.
+ */
+#define MyBlackPixel(dpy) BlackPixel(dpy,DefaultScreen(dpy))
+#define MyWhitePixel(dpy) WhitePixel(dpy,DefaultScreen(dpy))
+
+ if (request->misc.re_verse) {
+ new->dft_foreground = MyWhitePixel(new->screen.display);
+ new->dft_background = MyBlackPixel(new->screen.display);
+ } else {
+ new->dft_foreground = MyBlackPixel(new->screen.display);
+ new->dft_background = MyWhitePixel(new->screen.display);
+ }
+
new->screen.c132 = request->screen.c132;
new->screen.curses = request->screen.curses;
new->screen.hp_ll_bc = request->screen.hp_ll_bc;
@@ -3654,6 +3689,7 @@
#endif
new->screen.border = request->screen.border;
new->screen.jumpscroll = request->screen.jumpscroll;
+ new->screen.old_fkeys = request->screen.old_fkeys;
#ifdef ALLOWLOGGING
new->screen.logfile = request->screen.logfile;
#endif
@@ -3724,7 +3760,8 @@
for (i = 0, color_ok = False; i < MAXCOLORS; i++) {
new->screen.Acolors[i] = request->screen.Acolors[i];
- if (new->screen.Acolors[i] != request->screen.foreground
+ if (new->screen.Acolors[i] != new->dft_foreground
+ && new->screen.Acolors[i] != request->screen.foreground
&& new->screen.Acolors[i] != request->core.background_pixel)
color_ok = True;
}
@@ -3757,19 +3794,6 @@
new->keyboard.flags = MODE_SRM;
if (new->screen.backarrow_key)
new->keyboard.flags |= MODE_DECBKM;
-
- /*
- * The definition of -rv now is that it changes the definition of
- * XtDefaultForeground and XtDefaultBackground. So, we no longer
- * need to do anything special.
- */
- new->screen.display = new->core.screen->display;
- new->core.height = new->core.width = 1;
- /* dummy values so that we don't try to Realize the parent shell
- with height or width of 0, which is illegal in X. The real
- size is computed in the xtermWidget's Realize proc,
- but the shell's Realize proc is called first, and must see
- a valid size. */
/* look for focus related events on the shell, because we need
* to care about the shell's border being part of our focus.
Index: input.c
--- xterm-78/input.c Fri Jun 5 16:23:53 1998
+++ xterm-79/input.c Sun Jun 28 21:09:17 1998
@@ -1,6 +1,6 @@
/*
* $XConsortium: input.c /main/21 1996/04/17 15:54:23 kaleb $
- * $XFree86: xc/programs/xterm/input.c,v 3.20 1998/06/04 16:43:57 hohndel Exp $
+ * $XFree86: xc/programs/xterm/input.c,v 3.19 1998/04/27 03:14:59 robin Exp $
*/
/*
@@ -73,6 +73,29 @@
}
}
+/* returns true if the key is on the editing keypad */
+static Boolean
+IsEditFunctionKey(KeySym keysym)
+{
+ switch (keysym) {
+ case XK_Prior:
+ case XK_Next:
+ case XK_Insert:
+ case XK_Find:
+ case XK_Select:
+#ifdef DXK_Remove
+ case DXK_Remove:
+#endif
+#ifdef XK_KP_Delete
+ case XK_KP_Delete:
+ case XK_KP_Insert:
+#endif
+ return True;
+ default:
+ return False;
+ }
+}
+
void
Input (
register TKeyboard *keyboard,
@@ -120,7 +143,6 @@
if ((nbytes == 1)
&& !(term->keyboard.flags & MODE_DECBKM)
&& (keysym == XK_BackSpace)) {
- keysym = XK_Delete;
strbuf[0] = '\177';
}
@@ -166,9 +188,16 @@
VT52_CURSOR_KEYS
unparseseq(&reply, pty);
key = TRUE;
- } else if (IsCursorKey(keysym) &&
- keysym != XK_Prior && keysym != XK_Next) {
- if (keyboard->flags & MODE_DECCKM) {
+#if OPT_SUNPC_KBD
+ } else if (sunKeyboard
+ && screen->old_fkeys == False
+ && screen->ansi_level <= 1
+ && IsEditFunctionKey(keysym)) {
+ key = FALSE; /* ignore editing-keypad in vt100 mode */
+#endif
+ } else if (IsCursorKey(keysym) &&
+ keysym != XK_Prior && keysym != XK_Next) {
+ if (keyboard->flags & MODE_DECCKM) {
reply.a_type = SS3;
reply.a_final = cur[keysym-XK_Home];
VT52_CURSOR_KEYS
@@ -180,17 +209,9 @@
unparseseq(&reply, pty);
}
key = TRUE;
- } else if (IsFunctionKey(keysym) || IsMiscFunctionKey(keysym)
- || keysym == XK_Prior
- || keysym == XK_Next
-#ifdef DXK_Remove
- || keysym == DXK_Remove
-#endif
-#ifdef XK_KP_Delete
- || keysym == XK_KP_Delete
- || keysym == XK_KP_Insert
-#endif
- ) {
+ } else if (IsFunctionKey(keysym)
+ || IsMiscFunctionKey(keysym)
+ || IsEditFunctionKey(keysym)) {
#if OPT_SUNPC_KBD
if ((event->state & ControlMask)
&& sunKeyboard
@@ -208,8 +229,8 @@
/*
* Interpret F1-F4 as PF1-PF4 for VT52, VT100
*/
- else if (screen->ansi_level <= 1
- && (dec_code >= 11 && dec_code <= 14))
+ else if (screen->old_fkeys == False
+ && (dec_code >= 11 && dec_code <= 14))
{
reply.a_type = SS3;
VT52_CURSOR_KEYS
@@ -243,7 +264,7 @@
&& keysym == XK_KP_Add)
keysym = XK_KP_Separator;
#endif
- if ((keyboard->flags & MODE_DECKPAM) != 0) {
+ if ((keyboard->flags & MODE_DECKPAM) != 0) {
reply.a_type = SS3;
reply.a_final = kypd_apl[keysym-XK_KP_Space];
VT52_KEYPAD
@@ -383,7 +404,7 @@
case XK_R13: return(220);
case XK_R14: return(221);
case XK_R15: return(222);
-
+
case XK_Find : return(1);
case XK_Insert: return(2);
case XK_Delete: return(3);
Index: main.c
--- xterm-78/main.c Fri Jun 5 16:23:53 1998
+++ xterm-79/main.c Sun Jun 28 21:47:45 1998
@@ -64,7 +64,7 @@
******************************************************************/
-/* $XFree86: xc/programs/xterm/main.c,v 3.72 1998/06/04 16:43:58 hohndel Exp $ */
+/* $XFree86: xc/programs/xterm/main.c,v 3.71 1998/04/28 02:51:00 robin Exp $ */
/* main.c */
@@ -3897,29 +3897,29 @@
/* write it out only if it exists, and the pid's match */
if (utptr && (utptr->ut_pid == screen->pid)) {
utptr->ut_type = DEAD_PROCESS;
+ *utptr->ut_user = 0;
#if defined(SVR4) || defined(SCO325) || (defined(linux) && __GLIBC__ >= 2)
- utmp.ut_session = getsid(0);
- utmp.ut_xtime = time ((time_t *) 0);
- utmp.ut_tv.tv_usec = 0;
+ utptr->ut_session = getsid(0);
+ utptr->ut_xtime = time ((time_t *) 0);
+ utptr->ut_tv.tv_usec = 0;
#else
- *utptr->ut_user=0;
utptr->ut_time = time((time_t *) 0);
#endif
(void) pututline(utptr);
#ifdef WTMP
#if defined(SVR4) || defined(SCO325)
if (term->misc.login_shell)
- updwtmpx(WTMPX_FILE, &utmp);
+ updwtmpx(WTMPX_FILE, utptr);
#else
#if defined(linux) && __GLIBC__ >= 2
- strncpy (utmp.ut_line, utptr->ut_line, sizeof (utmp.ut_line));
+ strncpy (utmp.ut_line, utptr->ut_line, sizeof (utmp.ut_line));
if (term->misc.login_shell)
- updwtmp(etc_wtmp, &utmp);
+ updwtmp(etc_wtmp, utptr);
#else
/* set wtmp entry if wtmp file exists */
if (term->misc.login_shell &&
(fd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
- i = write(fd, utptr, sizeof(utmp));
+ i = write(fd, utptr, sizeof(*utptr));
i = close(fd);
}
#endif
Index: proto.h
--- xterm-78/proto.h Tue Apr 28 15:01:01 1998
+++ xterm-79/proto.h Mon May 25 20:58:48 1998
@@ -5,28 +5,20 @@
#include <X11/Xfuncproto.h>
-#if NeedFunctionPrototypes
-#define PROTO(p) p
-#else
-#define PROTO(p) ()
-#endif
-
-#define NOPROTO(p) (/*nothing*/)
-
#define PROTO_XT_ACTIONS_ARGS \
- PROTO((Widget w, XEvent *event, String *params, Cardinal *num_params))
+ (Widget w, XEvent *event, String *params, Cardinal *num_params)
#define PROTO_XT_CALLBACK_ARGS \
- PROTO((Widget gw, XtPointer closure, XtPointer data))
+ (Widget gw, XtPointer closure, XtPointer data)
#define PROTO_XT_CVT_SELECT_ARGS \
- PROTO((Widget w, Atom *selection, Atom *target, Atom *type, XtPointer *value, unsigned long *length, int *format))
+ (Widget w, Atom *selection, Atom *target, Atom *type, XtPointer *value, unsigned long *length, int *format)
#define PROTO_XT_EV_HANDLER_ARGS \
- PROTO((Widget w, XtPointer closure, XEvent *event, Boolean *cont))
+ (Widget w, XtPointer closure, XEvent *event, Boolean *cont)
#define PROTO_XT_SEL_CB_ARGS \
- PROTO((Widget w, XtPointer client_data, Atom *selection, Atom *type, XtPointer value, unsigned long *length, int *format))
+ (Widget w, XtPointer client_data, Atom *selection, Atom *type, XtPointer value, unsigned long *length, int *format)
#ifdef SIGNALRETURNSINT
#define SIGNAL_T int
Index: ptyx.h
--- xterm-78/ptyx.h Fri Jun 5 16:23:53 1998
+++ xterm-79/ptyx.h Sun Jun 28 19:34:09 1998
@@ -1,6 +1,6 @@
/*
* $XConsortium: ptyx.h /main/67 1996/11/29 10:34:19 swick $
- * $XFree86: xc/programs/xterm/ptyx.h,v 3.40 1998/06/04 16:44:00 hohndel Exp $
+ * $XFree86: xc/programs/xterm/ptyx.h,v 3.39 1998/04/28 02:51:02 robin Exp $
*/
/*
@@ -727,6 +727,7 @@
int scroll_amt; /* amount to scroll */
int refresh_amt; /* amount to refresh */
int protected_mode; /* 0=off, 1=DEC, 2=ISO */
+ Boolean old_fkeys; /* true for compatible fkeys */
Boolean jumpscroll; /* whether we should jumpscroll */
Boolean always_highlight; /* whether to highlight cursor */
Boolean underline; /* whether to underline text */
@@ -901,6 +902,8 @@
unsigned flags; /* mode flags */
int cur_foreground; /* current foreground color */
int cur_background; /* current background color */
+ Pixel dft_foreground; /* default foreground color */
+ Pixel dft_background; /* default background color */
#if OPT_ISO_COLORS
int sgr_foreground; /* current SGR foreground color */
#endif
Index: scrollbar.c
--- xterm-78/scrollbar.c Fri Jun 5 16:23:53 1998
+++ xterm-79/scrollbar.c Sun Jun 28 22:47:38 1998
@@ -227,7 +227,7 @@
args[1].value = (XtArgVal) bg;
nargs--; /* don't set border_pixmap */
if (bdpix == XtUnspecifiedPixmap) { /* if not pixmap then pixel */
- args[2].value = args[1].value; /* set border to new fg */
+ args[2].value = (XtArgVal) bdr; /* keep old border color */
} else { /* ignore since pixmap */
nargs--; /* don't set border pixel */
}
Index: termcap
--- xterm-78/termcap Fri Jun 5 16:23:53 1998
+++ xterm-79/termcap Sun Jun 28 23:06:02 1998
@@ -8,7 +8,7 @@
# 'xtermm' drops color in favor of additional function keys. If you need
# both, use terminfo.
#
-vs|xterm|xterm-24|xterms|vs100|xterm (X Window System):\
+xf|xterm-xfree86|xterm-new|xterm terminal emulator (XFree86):\
:is=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>:\
:rs=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>:\
:AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:DO=\E[%dB:UP=\E[%dA:\
@@ -40,18 +40,21 @@
:up=\E[A:us=\E[4m:ue=\E[24m:xn:\
:ut:Co#8:op=\E[39m\E49m:AB=\E[4%dm:AF=\E[3%dm:\
:pa#64:Sf=\E[3%dm:Sb=\E[4%dm:
+v1|xterm-24|xterms|vs100|xterm terminal emulator (X Window System):\
+ :li#24:\
+ :tc=xterm:
v2|xterm-65|xterm with tall window 65x80 (X Window System):\
:li#65:tc=xterm:
vb|xterm-bold|xterm with bold instead of underline (X Window System):\
:us=\E[1m:tc=xterm:
vb|xterm-boldso|xterm with bold for standout (X Window System):\
:so=\E[1m:tc=xterm:
-xtermm|monochrome xterm (X Window System):\
+vm|xtermm|monochrome xterm (X Window System):\
:F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:\
:F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:\
:kn#20:\
:st@:ut@:Co@:NC@:op@:AB@:AF@:pa@:Sf@:Sb@:tc=xterm:
-xterm-vt220|xterm emulating vt220:\
+vt|xterm-vt220|xterm emulating vt220:\
:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
:tc=xterm:
#
@@ -61,7 +64,7 @@
:im=:ei=:mi@:ic=\E[@:IC=\E[%d@:tc=xterm:
#
# Compatible with the R6 xterm
-xterm-r6|xterm-old|xterm X11R6 version:\
+r6|xterm-r6|xterm-old|xterm X11R6 version:\
:is=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>:\
:rs=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>:\
:AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:DO=\E[%dB:UP=\E[%dA:\
@@ -92,7 +95,7 @@
:up=\E[A:us=\E[4m:ue=\E[m:xn:
#
# Compatible with the R5 xterm
-xterm-r5|xterm X11R5 version:\
+r5|xterm-r5|xterm X11R5 version:\
:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:UP=\E[%dA:\
:al=\E[L:am:\
:bs:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:co#80:\
@@ -108,3 +111,9 @@
:sc=\E7:rc=\E8:sf=\n:so=\E[7m:se=\E[m:sr=\EM:\
:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:\
:up=\E[A:us=\E[4m:ue=\E[m:xn:
+#
+# This is the only entry which you should have to customize, since "xterm"
+# is widely used for a variety of incompatible terminal emulations including
+# color_xterm and rxvt.
+v0|xterm|X Windows terminal emulator:\
+ :tc=xterm-xfree86:
Index: terminfo
--- xterm-78/terminfo Fri Jun 5 16:23:53 1998
+++ xterm-79/terminfo Sun Jun 28 22:25:31 1998
@@ -4,21 +4,57 @@
# XFree86 updates/notes/new entries (including xterm-8bit, xterm-16color)
# - Thomas E. Dickey <dickey@clark.net>
#
-# meml locks memory above the cursor; memu unlocks (ala HP terminals)
+# Special Capabilities:
+# --------------------
+# ich has a corresponding capability that inserts a single blank. We could
+# have used ich1=\E[@, which works with ncurses, but that is not standard
+# behavior. If it is set, then SVr4 vi (e.g., Solaris 2.6) emits both
+# smir/rmir and ich1.
+# meml locks memory above the cursor; memu unlocks (ala HP terminals). This
+# is not recognized by some older (e.g., SVr3) tic programs, but none
+# do more than warn about it. Ignore the warning.
# rmcup clears memory before switching to the alternate screen. The older
# (deprecated) \E[?47h did not do this, requiring applications to
# embed a \E[2J in the rmcup string. However, that behavior cannot
# be disabled via titeInhibit, making that resource not function as
# intended on systems with terminfo.
#
-# We could have used ich1=\E[@, which works with ncurses, but that is not
-# standard behavior. If it is set, then SVr4 vi (e.g., Solaris 2.6) emits
-# both smir/rmir and ich1.
+# Editing Keypad:
+# --------------
+# XFree86 xterm emulates vt220 if the decTerminalID resource is set to 200 or
+# higher. Otherwise it emulates a vt100 or vt52 depending on the value of the
+# resource. When emulating a vt220, we support the editing keypad. Sun and PC
+# keyboards have an editing keypad which is similar to the vt220:
+#
+# VT220 editing keypad
+# ----------------------------
+# Find Insert Remove
+# Select Prev Next
+# ----------------------------
+#
+# Sun/PC editing keypad
+# ----------------------------
+# Insert Home PageUp
+# Delete End PageDn
+# ----------------------------
+#
+# If the sunKeyboard resource is true, we map it this way (adjusting the values
+# of Home, End and Delete):
+# VT220 Sun/PC
+# ----------------------------
+# Find Home
+# Select End
+# Insert Insert
+# Remove Delete
+# Prev PageUp
+# Next PageDn
+# ----------------------------
+#
+# Note that all of the keys on the editing keypad transmit escape sequences. A
+# vt220 does this only when in vt220 mode; when emulating a vt100 the editing
+# keypad is inactive.
#
-# The xterm-r6 entry does not define acsc, which is probably an error (but
-# it matches the X11R5 to X11R6.3 distributions).
-#
-xterm|xterm-24|xterms|vs100|xterm terminal emulator (X Window System),
+xterm-xfree86|xterm-new|xterm terminal emulator (XFree86),
am,
bce,
km,
@@ -31,7 +67,7 @@
it#8,
lines#24,
pairs#64,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G,
blink=\E[5m,
bold=\E[1m,
@@ -82,7 +118,7 @@
kcud1=\EOB,
kcuf1=\EOC,
kcuu1=\EOA,
- kdch1=\177,
+ kdch1=\E[3~,
kend=\EOF,
kent=\EOM,
kf1=\EOP,
@@ -145,13 +181,37 @@
smso=\E[7m,
smul=\E[4m,
tbc=\E[3g,
+ u6=\E[%i%d;%dR,
+ u7=\E[6n,
+ u8=\E[?1;2c,
+ u9=\E[c,
vpa=\E[%i%p1%dd,
+#
+# The xterm-xfree86 description has all of the features, but is not completely
+# compatible with vt220. If you are using a Sun or PC keyboard, set the
+# sunKeyboard resource to true:
+# + maps the editing keypad
+# + interprets control-function-key as a second array of keys, so a
+# 12-fkey keyboard can support vt220's 20-fkeys.
+# + maps numeric keypad "+" to ",".
+#
+xterm-vt220|XFree86 xterm emulating vt220,
+ kdch1=\E[3~,
+ kend=\E[4~,
+ kfnd=\E[1~,
+ khome=\E[1~,
+ kslt=\E[4~,
+ use=xterm-xfree86,
+
+# Other variants:
+xterm-24|xterms|vs100|xterm terminal emulator (X Window System),
+ lines#24,
+ use=xterm,
xterm-65|xterm with tall window 65x80 (X Window System),
lines#65,
use=xterm,
xterm-bold|xterm with bold instead of underline (X Window System),
- rmul=\E[22m,
- smul=\E[1m,
+ smso=\E[1m,
use=xterm,
xtermm|monochrome xterm (X Window System),
colors@,
@@ -164,8 +224,20 @@
setf@,
sgr@,
use=xterm,
+#
+# This should work for the commonly used "color xterm" variations (XFree86
+# xterm, color_xterm, nxterm, rxvt):
+xterm-color|generic "ANSI" color xterm (X Window System),
+ colors#8,
+ ncv@,
+ pairs#64,
+ op=\E[m,
+ setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm,
+ use=xterm-r6,
+#
xterm-boldso|xterm with bold for standout (X Window System),
- rmso=\E[22m,
+ rmso=\E[m,
smso=\E[1m,
use=xterm,
#
@@ -179,13 +251,6 @@
smir@,
use=xterm,
#
-xterm-vt220|xterm emulating vt220,
- kf1=\E[11~,
- kf2=\E[12~,
- kf3=\E[13~,
- kf4=\E[14~,
- use=xterm,
-#
# This is used only for testing (it's not relevant to DEC VTxxx terminals, but
# to ncurses).
xterm-xmc|xterm with magic-cookie glitch,
@@ -227,7 +292,7 @@
setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm,
setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
- use=xterm,
+ use=xterm-xfree86,
# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
# To use it, your decTerminalID resource must be set to 200 or above.
#
@@ -249,9 +314,9 @@
it#8,
lines#24,
pairs#64,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G,
- blink=\23325m,
+ blink=\2335m,
bold=\2331m,
cbt=\233Z,
civis=\233?25l,
@@ -363,9 +428,17 @@
smso=\2337m,
smul=\2334m,
tbc=\2333g,
+ u6=\233[%i%d;%dR,
+ u7=\E[6n,
+ u8=\233[?1;2c,
+ u9=\E[c,
vpa=\233%i%p1%dd,
#
-# Compatible with the R6 xterm
+# Compatible with the R6 xterm, with the following changes:
+# + added acsc (perhaps some versions of tic assume the standard vt100
+# alternate character set)
+# + added u6, u7, u8, u9 strings for Daniel Weaver's tack program.
+# + added kmous string for ncurses.
xterm-r6|xterm-old|xterm X11R6 version,
am,
km,
@@ -373,7 +446,9 @@
msgr,
xenl,
cols#80,
+ it#8,
lines#24,
+ acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G,
blink@,
bold=\E[1m,
@@ -430,6 +505,7 @@
kf9=\E[20~,
kfnd=\E[1~,
kich1=\E[2~,
+ kmous=\E[M,
knp=\E[6~,
kpp=\E[5~,
kslt=\E[4~,
@@ -454,8 +530,17 @@
smso=\E[7m,
smul=\E[4m,
tbc=\E[3g,
-#
-# Compatible with the R5 xterm
+ u6=\E[%i%d;%dR,
+ u7=\E[6n,
+ u8=\E[?1;2c,
+ u9=\E[c,
+#
+# Compatible with the R5 xterm, with the following changes:
+# + changed 'blink=@', to 'blink@' (the former meant that "@" would start
+# a blink, the latter that it is not supported).
+# + changed kf1 through kf4 to correspond with actual usage. Though X
+# supports keypad symbols for PF1 to PF4, and xterm interprets these
+# correctly, the F1 to F4 codes are commonly (but incorrectly) used.
xterm-r5|xterm R5 version,
am,
km,
@@ -465,7 +550,7 @@
it#8,
lines#24,
bel=^G,
- blink=@,
+ blink@,
bold=\E[1m,
clear=\E[H\E[2J,
cr=^M,
@@ -502,13 +587,13 @@
kdl1=\E[31~,
kel=\E[8~,
kf0=\EOq,
- kf1=\EOP,
+ kf1=\E[11~,
kf10=\E[21~,
kf11=\E[23~,
kf12=\E[24~,
- kf2=\EOQ,
- kf3=\EOR,
- kf4=\EOS,
+ kf2=\E[12~,
+ kf3=\E[13~,
+ kf4=\E[14~,
kf5=\E[15~,
kf6=\E[17~,
kf7=\E[18~,
@@ -531,3 +616,10 @@
smkx=\E[?1h\E=,
smso=\E[7m,
tbc=\E[3g,
+#
+# This is the only entry which you should have to customize, since "xterm"
+# is widely used for a variety of incompatible terminal emulations including
+# color_xterm and rxvt.
+xterm|X Windows terminal emulator,
+ use=xterm-xfree86,
+# use=xterm-r6,
Index: util.c
--- xterm-78/util.c Fri Jun 5 16:23:53 1998
+++ xterm-79/util.c Sun Jun 28 22:50:32 1998
@@ -1423,7 +1423,7 @@
if (hi_pix != screen->foreground
&& hi_pix != fg_pix
&& hi_pix != bg_pix
- && hi_pix != 0) { /* FIXME: need a reliable undef-Pixel */
+ && hi_pix != term->dft_foreground) {
bg_pix = fg_pix;
fg_pix = hi_pix;
}
Index: version.h
--- xterm-78/version.h Fri Jun 5 16:23:53 1998
+++ xterm-79/version.h Sun Jun 28 22:50:49 1998
@@ -6,4 +6,4 @@
* version of xterm has been built. The number in parentheses is my patch
* number (T.Dickey).
*/
-#define XTERM_VERSION "XFree86 3.9Ah(78)"
+#define XTERM_VERSION "XFree86 3.9Ai(79)"
Index: xterm.h
--- xterm-78/xterm.h Fri Jun 5 16:23:53 1998
+++ xterm-79/xterm.h Sun Jun 28 22:13:09 1998
@@ -8,13 +8,6 @@
#ifndef included_xterm_h
#define included_xterm_h
-#ifdef __EMX__
-/* must be cleaned up through ANSIFICATION: X_NOT_STDC_ENV is wrong below,
- * because size_t mustn't be set to int. Xos.h sets it right
- */
-#include <X11/Xos.h>
-#endif
-
#ifndef GCC_UNUSED
#define GCC_UNUSED /* nothing */
#endif
@@ -59,7 +52,7 @@
extern void free();
#endif
-#if defined(HAVE_UNISTD_H)
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
Index: xterm.log.html
--- xterm-78/xterm.log.html Fri Jun 5 16:23:53 1998
+++ xterm-79/xterm.log.html Sun Jun 28 23:15:19 1998
@@ -41,6 +41,7 @@
xc/programs/Xserver/hw/xfree86).
<UL>
+<LI><A HREF="#xterm_79">Patch #79 - 1998/6/28 - XFree86 3.9Ai</A>
<LI><A HREF="#xterm_78">Patch #78 - 1998/6/3 - XFree86 3.9Ah and 3.3.2</A>
<LI><A HREF="#xterm_77">Patch #77 - 1998/5/26 - XFree86 3.9Ah and 3.3.2</A>
<LI><A HREF="#xterm_76">Patch #76 - 1998/5/8 - XFree86 3.9Ah and 3.3.2</A>
@@ -120,6 +121,60 @@
<LI><A HREF="#xterm_02">Patch #2 - 1996/1/7</A>
<LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
</UL>
+
+<H1><A NAME="xterm_79">Patch #79 - 1998/6/28 - XFree86 3.9Ai</A></H1>
+
+This patch fixes several small bugs:
+<ul>
+ <li>use X_EXTRA_LIBS in standalone Makefile.in (patch by Tomas Vanhala).
+
+ <li>add new resource 'oldXtermFKeys' which provides backward compatibility
+ for F1-F4 control sequences with TOG's xterm.
+
+ <li>determine the server's default foreground/background Pixel values,
+ needed if the -flipPixels X server option is used (reported by
+ David Dawes).
+
+ <li>correct logic for F1-F4 function keys so that they generate VT100
+ compatible escape sequences in VT220 mode, since that is what the
+ numeric keypad is supposed to do (reported by Ron Johnson, Jr.
+ <ronjohn@communique.net>).
+
+ <li>modify logic for editing keypad to work more like VT220: don't
+ pass those codes in VT100-mode unless oldXtermFKeys mode is set.
+
+ <li>correct an interaction with the editing-keypad logic that prevented
+ backarrow key from sending a 127 for the delete key (the 'remove'
+ escape sequence was being sent instead).
+
+ <li>use return-value from getutid() rather than the parameter, to work on
+ systems which do not update the latter (patch by Kevin Buhr
+ <buhr@mozart.stat.wisc.edu>)
+
+ <li>correct scrollbar border color when toggling to/from secure keyboard
+ mode (patch by Jeff Uphoff <juphoff@tarsier.cv.nrao.edu>)
+
+ <li>modifications to terminfo file:
+<ul>
+ <li>rename description to xterm-xfree86, adding an entry 'xterm'
+ which is derived from xterm-xfree86 to simplify customization.
+
+ <li>change string for kdch1 from \177 to \E[3~, to address complaints
+ from Debian developers. (This applies to the key labeled "Delete",
+ and does not affect the backarrow key).
+
+ <li>add user-strings u6, u7, u8, u9 to entries to make them work with
+ Daniel Weaver's "tack" program.
+
+ <li>modify xterm-24, xterm-bold, xterm-boldso entries to disentangle them from
+ explicit dependency upon xterm-xfree86.
+
+ <li>add generic 'xterm-color' entry.
+
+ <li>minor corrections to xterm-xfree86, xterm-8bit, xterm-r5 and
+ xterm-r6 entries.
+</ul>
+</ul>
<H1><A NAME="xterm_78">Patch #78 - 1998/6/3 - XFree86 3.9Ah and 3.3.2</A></H1>
Index: xterm.man
--- xterm-78/xterm.man Fri Jun 5 16:23:53 1998
+++ xterm-79/xterm.man Sun Jun 28 22:51:14 1998
@@ -957,12 +957,18 @@
events. The default is 250 milliseconds.
.TP 8
.B "multiScroll (\fPclass\fB MultiScroll)"
-Specifies whether or not scrolling should be done asynchronously. The default
-is ``false.''
+Specifies whether or not scrolling should be done asynchronously.
+The default is ``false.''
.TP 8
.B "nMarginBell (\fPclass\fB Column)"
Specifies the number of characters from the right margin at which the margin
bell should be rung, when enabled.
+.TP 8
+.B "oldXtermFKeys (\fPclass\fB OldXtermFKeys)"
+If true, xterm will use old-style control sequences for function keys F1 to F4,
+for compatibility with X Consortium xterm. Otherwise, it uses the VT100-style
+codes for PF1 to PF4.
+The default is ``false.''
.TP 8
.B "pointerColor (\fPclass\fB Foreground)"
Specifies the foreground color of the pointer. The default is