diff -r -C5 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
***************
*** 10315,10326 ****
  		break;
  	default:
  		return FALSE;
  	}
  
! 	if (terminal->pvt->screen == &terminal->pvt->alternate_screen ||
! 		terminal->pvt->normal_screen.scrolling_restricted) {
  		char *normal;
  		gssize normal_length;
  		const gchar *special;
  		gint i, cnt = v;
  
--- 10315,10327 ----
  		break;
  	default:
  		return FALSE;
  	}
  
! 	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;
  		gint i, cnt = v;
  
***************
*** 10962,10971 ****
--- 10963,10988 ----
  {
  	g_return_if_fail(VTE_IS_TERMINAL(terminal));
  	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)
  {
  	_vte_debug_print(VTE_DEBUG_SELECTION, "Copying to CLIPBOARD.\n");
  	if (terminal->pvt->selection != NULL) {
diff -r -C5 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
***************
*** 241,250 ****
--- 241,252 ----
  gboolean vte_terminal_get_visible_bell(VteTerminal *terminal);
  void vte_terminal_set_scroll_background(VteTerminal *terminal, gboolean scroll);
  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,
  				const GdkColor *dim);
  void vte_terminal_set_color_bold(VteTerminal *terminal,
diff -r -C5 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
***************
*** 287,296 ****
--- 287,297 ----
  	/* Scrolling options. */
  	gboolean scroll_background;
  	gboolean scroll_on_output;
  	gboolean scroll_on_keystroke;
  	long scrollback_lines;
+ 	gboolean alternate_screen_scroll;
  
  	/* Cursor blinking. */
  	gboolean cursor_blink_state;
  	gboolean cursor_blinks;
  	guint cursor_blink_tag;
