--- vte-0.16.2/src/vte.c~	2007-05-08 21:08:17.000000000 +0400
+++ vte-0.16.2/src/vte.c	2007-05-08 21:08:23.000000000 +0400
@@ -4097,6 +4099,35 @@
 	terminal->pvt->cursor_blink_tag = VTE_INVALID_SOURCE;
 }
 
+/* 
+ * Translate national keys with Crtl|Alt modifier
+ * Refactored from http://bugzilla.gnome.org/show_bug.cgi?id=375112
+ */
+static guint 
+vte_translate_national_ctrlkeys(GdkEventKey *event) {
+
+	guint keyval;
+	GdkModifierType consumed_modifiers;
+	GdkKeymap *keymap;
+
+#if GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 2
+  	keymap = gdk_keymap_get_for_display(
+  		gdk_drawable_get_display(event->window));
+#else
+    	keymap = gdk_keymap_get_default();
+#endif
+    
+        gdk_keymap_translate_keyboard_state(keymap,
+		event->hardware_keycode, event->state,
+		0, /* Force 0 group (English) */
+		&keyval, NULL, NULL, &consumed_modifiers);
+#ifdef VTE_DEBUG
+	_vte_debug_print(VTE_DEBUG_EVENTS,
+       		"ctrl+Key, group=%d de-grouped into keyval=0x%x\n",
+       		event->group, keyval);
+#endif
+	return keyval;
+}
 
 /* Read and handle a keypress event. */
 static gint
@@ -4388,6 +4419,11 @@
 		/* If we didn't manage to do anything, try to salvage a
 		 * printable string. */
 		if (handled == FALSE && normal == NULL && special == NULL) {
+		
+			if (event->group && 
+				(terminal->pvt->modifiers & GDK_CONTROL_MASK))
+				keyval = vte_translate_national_ctrlkeys(event);
+				
 			/* Convert the keyval to a gunichar. */
 			keychar = gdk_keyval_to_unicode(keyval);
 			normal_length = 0;
