diff -urNp vte-0.16.14/doc/reference/xml/vte.xml vte-0.16.14-r1/doc/reference/xml/vte.xml
--- vte-0.16.14/doc/reference/xml/vte.xml	2008-06-13 10:06:26.000000000 -0700
+++ vte-0.16.14-r1/doc/reference/xml/vte.xml	2008-06-13 10:41:30.000000000 -0700
@@ -71,6 +71,9 @@ enum                <link linkend="VteTe
 <link linkend="void">void</link>                <link linkend="vte-terminal-set-scroll-on-keystroke">vte_terminal_set_scroll_on_keystroke</link>
                                                         (<link linkend="VteTerminal">VteTerminal</link> *terminal,
                                                          <link linkend="gboolean">gboolean</link> scroll);
+<link linkend="void">void</link>                <link linkend="vte-terminal-set-scroll-on-keystroke">vte_terminal_set_alternate_screen_scroll</link>
+                                                        (<link linkend="VteTerminal">VteTerminal</link> *terminal,
+                                                         <link linkend="gboolean">gboolean</link> scroll);
 <link linkend="void">void</link>                <link linkend="vte-terminal-set-color-bold">vte_terminal_set_color_bold</link>         (<link linkend="VteTerminal">VteTerminal</link> *terminal,
                                                          const <link linkend="GdkColor">GdkColor</link> *bold);
 <link linkend="void">void</link>                <link linkend="vte-terminal-set-color-foreground">vte_terminal_set_color_foreground</link>   (<link linkend="VteTerminal">VteTerminal</link> *terminal,
diff -urNp vte-0.16.14/src/vte.c vte-0.16.14-r1/src/vte.c
--- vte-0.16.14/src/vte.c	2008-06-13 10:06:26.000000000 -0700
+++ vte-0.16.14-r1/src/vte.c	2008-06-13 10:28:34.000000000 -0700
@@ -10317,8 +10317,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;
@@ -10964,6 +10965,22 @@ vte_terminal_set_scroll_on_keystroke(Vte
 	terminal->pvt->scroll_on_keystroke = scroll;
 }
 
+/**
+ * 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 -urNp vte-0.16.14/src/vte.h vte-0.16.14-r1/src/vte.h
--- vte-0.16.14/src/vte.h	2008-06-13 10:06:26.000000000 -0700
+++ vte-0.16.14-r1/src/vte.h	2008-06-13 10:26:43.000000000 -0700
@@ -243,6 +243,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 -urNp vte-0.16.14/src/vte-private.h vte-0.16.14-r1/src/vte-private.h
--- vte-0.16.14/src/vte-private.h	2008-06-13 10:06:26.000000000 -0700
+++ vte-0.16.14-r1/src/vte-private.h	2008-06-13 10:27:48.000000000 -0700
@@ -289,6 +289,7 @@ struct _VteTerminalPrivate {
 	gboolean scroll_on_output;
 	gboolean scroll_on_keystroke;
 	long scrollback_lines;
+	gboolean alternate_screen_scroll;
 
 	/* Cursor blinking. */
 	gboolean cursor_blink_state;
