diff -ruN gnome-libs-1.4.1.2-maint/debian/changelog gnome-libs-1.4.1.2/debian/changelog
--- gnome-libs-1.4.1.2-maint/debian/changelog	Wed Sep 26 23:27:49 2001
+++ gnome-libs-1.4.1.2/debian/changelog	Wed Sep 26 23:30:41 2001
@@ -1,3 +1,15 @@
+gnome-libs (1.4.1.2-2.2) unstable; urgency=low
+
+  * Fixed a glitch with the backspace key and the CTRL-SPACE key.
+
+ -- Philippe Troin <phil@fifi.org>  Wed, 26 Sep 2001 23:30:41 -0700
+
+gnome-libs (1.4.1.2-2.1) unstable; urgency=low
+
+  * Added support for meta-key configuration in libzvt.
+
+ -- Philippe Troin <phil@fifi.org>  Wed, 26 Sep 2001 12:58:30 -0700
+
 gnome-libs (1.4.1.2-2) unstable; urgency=low
 
   * Move docbook-utils from build-depends-indep to build-depends (Closes: #113173)
diff -ruN gnome-libs-1.4.1.2-maint/debian/patches/zvttermmeta.dpatch gnome-libs-1.4.1.2/debian/patches/zvttermmeta.dpatch
--- gnome-libs-1.4.1.2-maint/debian/patches/zvttermmeta.dpatch	Wed Dec 31 16:00:00 1969
+++ gnome-libs-1.4.1.2/debian/patches/zvttermmeta.dpatch	Wed Sep 26 23:33:19 2001
@@ -0,0 +1,355 @@
+#! /bin/sh -e
+
+# DP: Modified
+
+if [ $# -ne 1 ]; then
+    echo >&2 "$0: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch) patch -f -p0 < $0;;
+    -unpatch) patch -f -R -p0 < $0;;
+    *)
+        echo >&2 "$0: script expects -patch|-unpatch as argument"
+        exit 1
+esac
+exit 0
+
+diff -u ../again/gnome-libs-1.4.1.2/zvt/ChangeLog zvt/ChangeLog
+--- ../again/gnome-libs-1.4.1.2/zvt/ChangeLog	Wed Sep 26 23:19:21 2001
++++ zvt/ChangeLog	Wed Sep 26 22:21:02 2001
+@@ -1,3 +1,18 @@
++2001-09-24  Philippe Troin  <phil@fifi.org>
++
++	* zvtterm.c (zvt_term_init): Initialize meta_modifiers (defaults
++	to MOD1|MOD4) and meta_use_high_bit (defaults to false).
++	(zvt_term_set_meta_use_high_bit): Created.
++	(zvt_term_set_meta_modifiers): Created.
++	(zvt_term_key_press): Handle meta more consistently.
++
++	* zvtterm.h (struct _ZvtTerm): Added a meta_modifiers field and a
++	meta_use_high_bit bitfield.
++	New prototypes for zvt_term_set_meta_use_high_bit and
++	zvt_term_set_meta_modifiers.
++
++	* zvtterm.c (term_force_size): Removed unused xp variable.
++
+ 2001-06-14  Miguel de Icaza  <miguel@ximian.com>
+ 
+ 	* subshell-includes.h: From Dan McNichol: IBM compiler defines
+diff -u ../again/gnome-libs-1.4.1.2/zvt/zvtterm.c zvt/zvtterm.c
+--- ../again/gnome-libs-1.4.1.2/zvt/zvtterm.c	Wed Sep 26 23:19:21 2001
++++ zvt/zvtterm.c	Wed Sep 26 22:24:35 2001
+@@ -290,9 +290,13 @@
+   term->scroll_on_output = 0;
+   term->blink_enabled = 1;
+   term->ic = NULL;
++  term->meta_modifiers = GDK_MOD1_MASK|GDK_MOD4_MASK;
+   term->in_expose = 0;
+   term->transparent = 0;
+   term->shaded = 0;
++  term->swap_del_key = 0;
++  term->del_is_del = 0;
++  term->meta_use_hight_bit = 0;
+ 
+   /* private data - set before calling functions */
+   zp = g_malloc0(sizeof(*zp));
+@@ -432,7 +436,6 @@
+ static void
+ term_force_size(ZvtTerm *term)
+ {
+-  struct _zvtprivate *zp = _ZVT_PRIVATE(term);
+   if (GTK_WIDGET_REALIZED (term)) {
+ 
+     /* ok, if we update the window hints ourselves, then we
+@@ -2350,7 +2353,9 @@
+   int handled;
+   char *cursor;
+   int appl_keypad;
+-  
++  char pre_meta = '\0';
++  char or_meta = '\0';
++
+   g_return_val_if_fail (widget != NULL, FALSE);
+   g_return_val_if_fail (ZVT_IS_TERM (widget), FALSE);
+   g_return_val_if_fail (event != NULL, FALSE);
+@@ -2364,15 +2369,25 @@
+   
+   d(printf("keyval = %04x state = %x\n", event->keyval, event->state));
+   handled = TRUE;
++  if (event->state & term->meta_modifiers) {
++    /* Metaified key */
++    if (term->meta_use_hight_bit)
++      or_meta = 0x80;
++    else
++      pre_meta = '\033';
++  }
++
++  /* This macro inserts an ESC or sets the high bit on a character to be
++     sent to the app depending on the meta state. */
++# define INSERT_AND_MAYBE_METAIFY_KEY(c) \
++    ( ( pre_meta ? (*p++ = pre_meta) : 0 ), *p++ = ((c)|or_meta) )
++  
+   switch (event->keyval) {
+   case GDK_BackSpace:
+-    if (event->state & GDK_MOD1_MASK)
+-      *p++ = '\033';
+-
+     if (term->swap_del_key)
+-      *p++ = 8;
++      INSERT_AND_MAYBE_METAIFY_KEY(8);
+     else
+-      *p++ = '\177';
++      INSERT_AND_MAYBE_METAIFY_KEY('\177');
+     break;
+   case GDK_KP_Right:
+   case GDK_Right:
+@@ -2390,6 +2405,7 @@
+   case GDK_Down:
+     cursor = "B";
+     do_cursor:
++    /* XTerm does not metaify cursor keys, we don't either */
+     if (vx->vt.mode & VTMODE_APP_CURSOR)
+       p+=sprintf (p, "\033O%s", cursor);
+     else
+@@ -2397,6 +2413,7 @@
+     break;
+   case GDK_KP_Insert:
+   case GDK_Insert:
++    /* XTerm does not metaify Insert, we don't either */
+     if ((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK){
+         request_paste (widget, 0, event->time);
+     } else {
+@@ -2405,29 +2422,31 @@
+     break;
+   case GDK_Delete:
+     if (term->del_is_del){
+-      if (event->state & GDK_MOD1_MASK)
+-	*p++ = '\033';
+       if (term->swap_del_key)
+-	*p++ = '\177';
++	INSERT_AND_MAYBE_METAIFY_KEY('\177');
+       else
+-	*p++ = 8;
++	INSERT_AND_MAYBE_METAIFY_KEY(8);
+     } else {
+       p+=sprintf (p, "\033[3~");
+     }
+     break;
+   case GDK_KP_Delete:
++    /* XTerm does not metaify Delete, we don't either */
+     p+=sprintf (p, "\033[3~");
+     break;
+   case GDK_KP_Home:
+   case GDK_Home:
++    /* XTerm does not metaify Home, we don't either */
+     p+=sprintf (p, "\033OH");
+     break;
+   case GDK_KP_End:
+   case GDK_End:
++    /* XTerm does not metaify End, we don't either */
+     p+=sprintf (p, "\033OF");
+     break;
+   case GDK_KP_Page_Up:
+   case GDK_Page_Up:
++    /* XTerm does not metaify PgUp, we don't either */
+     if (event->state & GDK_SHIFT_MASK){
+       zvt_term_scroll (term, -1);
+     } else
+@@ -2435,6 +2454,7 @@
+     break;
+   case GDK_KP_Page_Down:
+   case GDK_Page_Down:
++    /* XTerm does not metaify PgDown, we don't either */
+     if (event->state & GDK_SHIFT_MASK){
+       zvt_term_scroll (term, 1);
+     } else
+@@ -2443,30 +2463,36 @@
+ 
+   case GDK_KP_F1:
+   case GDK_F1:
++    /* XTerm does not metaify function keys, we don't either */
+     p+=sprintf (p, "\033OP");
+     break;
+   case GDK_KP_F2:
+   case GDK_F2:
++    /* XTerm does not metaify function keys, we don't either */
+     p+=sprintf (p, "\033OQ");
+     break;
+   case GDK_KP_F3:
+   case GDK_F3:
++    /* XTerm does not metaify function keys, we don't either */
+     p+=sprintf (p, "\033OR");
+     break;
+   case GDK_KP_F4:
+   case GDK_F4:
++    /* XTerm does not metaify function keys, we don't either */
+     p+=sprintf (p, "\033OS");
+     break;
+   case GDK_F5:  case GDK_F6:  case GDK_F7:  case GDK_F8:
+   case GDK_F9:  case GDK_F10:  case GDK_F11:  case GDK_F12:
+   case GDK_F13:  case GDK_F14:  case GDK_F15:  case GDK_F16:
+   case GDK_F17:  case GDK_F18:  case GDK_F19:  case GDK_F20:
++    /* XTerm does not metaify function keys, we don't either */
+     p+=sprintf (p, "\033[%d~", f5_f20_remap[event->keyval-GDK_F5]);
+     break;
+ 
+   case GDK_KP_0:  case GDK_KP_1:  case GDK_KP_2:  case GDK_KP_3:
+   case GDK_KP_4:  case GDK_KP_5:  case GDK_KP_6:  case GDK_KP_7:
+   case GDK_KP_8:  case GDK_KP_9:
++    /* XTerm does not metaify numeric pad keys, we don't either */
+     if (appl_keypad) {
+       p+=sprintf (p, "\033O%c", 'p' + (event->keyval - GDK_KP_0));
+     } else {
+@@ -2474,6 +2500,7 @@
+     }
+     break;
+   case GDK_KP_Enter:
++    /* XTerm does not metaify numeric pad keys, we don't either */
+     if (appl_keypad) {
+       p+=sprintf (p, "\033OM");
+     } else {
+@@ -2481,6 +2508,7 @@
+     }
+     break;
+   case GDK_KP_Add:
++    /* XTerm does not metaify numeric pad keys, we don't either */
+     if (appl_keypad) {
+       p+=sprintf (p, "\033Ok");
+     } else {
+@@ -2488,6 +2516,7 @@
+     }
+     break;
+   case GDK_KP_Subtract:
++    /* XTerm does not metaify numeric pad keys, we don't either */
+     if (appl_keypad) {
+       p+=sprintf (p, "\033Om");
+     } else {
+@@ -2495,6 +2524,7 @@
+     }
+     break;
+   case GDK_KP_Separator:  /* aka KP Comma */
++    /* XTerm does not metaify numeric pad keys, we don't either */
+     if (appl_keypad) {
+       p+=sprintf (p, "\033Ol");
+     } else {
+@@ -2502,6 +2532,7 @@
+     }
+     break;
+   case GDK_KP_Decimal:
++    /* XTerm does not metaify numeric pad keys, we don't either */
+     if (appl_keypad) {
+       p+=sprintf (p, "\033On");
+     } else {
+@@ -2535,10 +2566,11 @@
+   case GDK_Multi_key:
+     break;
+   case GDK_ISO_Left_Tab:
++    /* XTerm does not metaify Shift-TAB, we don't either */
+     *p++ = gdk_keyval_from_name("Tab");
+     break;
+   case GDK_Tab:
+-    *p++ = event->keyval;
++    INSERT_AND_MAYBE_METAIFY_KEY(event->keyval);
+     break;
+   case GDK_Menu:
+     p+=sprintf (p, "\033[29~");
+@@ -2546,24 +2578,26 @@
+   case ' ':
+     /* maps single characters to correct control and alt versions */
+     if (event->state & GDK_CONTROL_MASK)
+-      *p++=event->keyval & 0x1f;
+-    else if (event->state & GDK_MOD1_MASK)
+-      *p++=event->keyval + 0x80; /* this works for space at least */
++      INSERT_AND_MAYBE_METAIFY_KEY(event->keyval & 0x1f);
+     else
+-      *p++=event->keyval;
++      INSERT_AND_MAYBE_METAIFY_KEY(event->keyval);
+     break;
+   default:
+       if (event->length > 0){
+-	if (event->state & (GDK_MOD1_MASK | GDK_MOD4_MASK)){
+-	   *p++ = '\033';
+-        }
++	if (pre_meta)
++	  *p++ = pre_meta;
+ 	memcpy(p, event->string, event->length*sizeof(char));
++	p[0] |= or_meta; /* Only sets the first character with multibyte 
++			    character sets ? */
+ 	p += event->length;
+       } else {
+ 	handled = FALSE;
+       }
+       d(printf ("[%s,%d,%d]\n", event->string, event->length, handled));
+   }
++
++#undef INSERT_AND_MAYBE_METAIFY_KEY
++
+   if (handled && p>buffer) {
+     vt_writechild(&vx->vt, buffer, (p-buffer));
+     if (term->scroll_on_keystroke) zvt_term_scroll (term, 0);
+@@ -3327,6 +3361,36 @@
+   g_return_if_fail (ZVT_IS_TERM (term));
+   
+   term->del_is_del = state != 0;
++}
++
++/**
++ * zvt_term_set_meta_use_high_bit
++ * @term:  Terminal
++ * @state: If true, meta keys sends characters with their high bit set rather
++ *         than sending ESC+character
++ **/
++void
++zvt_term_set_meta_use_high_bit(ZvtTerm *term, int state)
++{
++  g_return_if_fail (term != NULL);
++  g_return_if_fail (ZVT_IS_TERM (term));
++
++  term->meta_use_hight_bit = state != 0;
++}
++
++/**
++ * zvt_term_set_meta_modifiers
++ * @term:      Terminal
++ * @modifiers: All the modifiers which should be used as Meta modifiers
++ *             (GDK_MODx_MASK) ored together.
++ *             (if set to zero, then no meta keys are used)
++ **/
++void
++zvt_term_set_meta_modifiers(ZvtTerm* term, guint modifiers)
++{
++  g_return_if_fail (term != NULL);
++
++  term->meta_modifiers = modifiers;
+ }
+ 
+ /*
+diff -u ../again/gnome-libs-1.4.1.2/zvt/zvtterm.h zvt/zvtterm.h
+--- ../again/gnome-libs-1.4.1.2/zvt/zvtterm.h	Wed Sep 26 23:19:21 2001
++++ zvt/zvtterm.h	Wed Sep 26 22:21:02 2001
+@@ -97,6 +97,7 @@
+   GdkColorContext *color_ctx;	/* Color context in use, where we allocate our colors */
+   gulong colors [18];		/* Our colors, pixel values. */
+   GdkIC *ic;			/* input context */
++  guint meta_modifiers;         /* what modifiers are handled as meta */
+ 
+  /* file name of a pixmap, if NULL, none is loaded
+   * and normal mode is used
+@@ -126,6 +127,7 @@
+   unsigned int shaded:1;	      /* transparent background with shade */
+   unsigned int swap_del_key:1;        /* swap the del and backspace keys */
+   unsigned int del_is_del:1;          /* Delete generates DEL/BS instead of Esc[3~ */
++  unsigned int meta_use_hight_bit:1;  /* Generates hi-bit-set characters instead of Esc */
+ };
+ 
+ struct _ZvtTermClass
+@@ -220,6 +222,8 @@
+ void         zvt_term_set_default_color_scheme (ZvtTerm *term);
+ void         zvt_term_set_del_key_swap         (ZvtTerm *term, int state);
+ void         zvt_term_set_del_is_del           (ZvtTerm *term, int state);
++void         zvt_term_set_meta_use_high_bit    (ZvtTerm *term, int state);
++void         zvt_term_set_meta_modifiers       (ZvtTerm *term, guint modifiers);
+ void	     zvt_term_set_wordclass	       (ZvtTerm *term, unsigned char *klass);
+ 
+ /* regular expression matching - automagically! */
diff -ruN gnome-libs-1.4.1.2-maint/debian/rules gnome-libs-1.4.1.2/debian/rules
--- gnome-libs-1.4.1.2-maint/debian/rules	Wed Sep 26 23:27:49 2001
+++ gnome-libs-1.4.1.2/debian/rules	Wed Sep 26 23:28:32 2001
@@ -8,7 +8,7 @@
 # Patches applied in this order.
 debian_patches = gnome-init LZWStream gnome-dentry zvtterm gnome-gettext.m4 \
 gnome-score.c gnome-pty-helper.c gnome-file-entry.c gtk_dialog_cauldron.3 \
-gnome-config.in configure.in
+gnome-config.in configure.in zvttermmeta
 
 version := $(shell sed -n 's/Package: \(.*\)/\1/p' debian/control | head -1)
 
