diff -urp vte-20081118.orig/src/vte.c vte-20081118/src/vte.c
--- vte-20081118.orig/src/vte.c	2008-11-18 11:26:17.000000000 -0800
+++ vte-20081118/src/vte.c	2008-11-18 12:04:08.000000000 -0800
@@ -7949,6 +7949,7 @@ vte_terminal_init(VteTerminal *terminal)
 	/* Scrolling options. */
 	pvt->scroll_on_keystroke = TRUE;
 	vte_terminal_set_scrollback_lines(terminal, VTE_SCROLLBACK_INIT);
+	pvt->alternate_screen_scroll = TRUE;
 
 	/* Selection info. */
 	vte_terminal_set_word_chars(terminal, NULL);
@@ -10866,8 +10867,9 @@ vte_terminal_scroll(GtkWidget *widget, G
 		return FALSE;
 	}
 
-	if (terminal->pvt->screen == &terminal->pvt->alternate_screen ||
-		terminal->pvt->normal_screen.scrolling_restricted) {
+	if (terminal->pvt->alternate_screen_scroll &&
+		(terminal->pvt->screen == &terminal->pvt->alternate_screen ||
+		terminal->pvt->normal_screen.scrolling_restricted)) {
 		char *normal;
 		gssize normal_length;
 		const gchar *special;
@@ -12195,6 +12197,22 @@ vte_terminal_set_scroll_on_keystroke(Vte
         g_object_notify (G_OBJECT (terminal), "scroll-on-keystroke");
 }
 
+/**
+ * vte_terminal_set_alternate_screen_scroll:
+ * @terminal: a #VteTerminal
+ * @scroll: %TRUE if the terminal should send keystrokes for scrolling when using alternate screen
+ *
+ * Controls whether or not the terminal will send keystrokes for scrolling
+ * when using alternate screen or scrolling is restricted.
+ *
+ */
+void
+vte_terminal_set_alternate_screen_scroll(VteTerminal *terminal, gboolean scroll)
+{
+	g_return_if_fail(VTE_IS_TERMINAL(terminal));
+	terminal->pvt->alternate_screen_scroll = scroll;
+}
+
 static void
 vte_terminal_real_copy_clipboard(VteTerminal *terminal)
 {
diff -urp vte-20081118.orig/src/vte.h vte-20081118/src/vte.h
--- vte-20081118.orig/src/vte.h	2008-11-18 11:26:17.000000000 -0800
+++ vte-20081118/src/vte.h	2008-11-18 12:00:05.000000000 -0800
@@ -264,6 +264,8 @@ void vte_terminal_set_scroll_background(
 void vte_terminal_set_scroll_on_output(VteTerminal *terminal, gboolean scroll);
 void vte_terminal_set_scroll_on_keystroke(VteTerminal *terminal,
 					  gboolean scroll);
+void vte_terminal_set_alternate_screen_scroll(VteTerminal *terminal,
+					      gboolean scroll);
 
 /* Set the color scheme. */
 void vte_terminal_set_color_dim(VteTerminal *terminal,
diff -urp vte-20081118.orig/src/vte-private.h vte-20081118/src/vte-private.h
--- vte-20081118.orig/src/vte-private.h	2008-11-18 11:26:17.000000000 -0800
+++ vte-20081118/src/vte-private.h	2008-11-18 12:00:05.000000000 -0800
@@ -313,6 +313,7 @@ struct _VteTerminalPrivate {
 	gboolean scroll_on_output;
 	gboolean scroll_on_keystroke;
 	long scrollback_lines;
+	gboolean alternate_screen_scroll;
 
 	/* Cursor shape */
 	VteTerminalCursorShape cursor_shape;
