--- vte/src/vte.h	2005-04-05 20:39:31.000000000 +0530
+++ vte-new/src/vte.h	2005-04-05 20:35:01.000000000 +0530
@@ -230,6 +230,12 @@ void vte_terminal_paste_clipboard(VteTer
 void vte_terminal_copy_primary(VteTerminal *terminal);
 void vte_terminal_paste_primary(VteTerminal *terminal);
 
+/* Scroll up or down in the current screen */
+void vte_terminal_scroll_page_up(VteTerminal *terminal);
+void vte_terminal_scroll_page_down(VteTerminal *terminal);
+void vte_terminal_scroll_home(VteTerminal *terminal);
+void vte_terminal_scroll_end(VteTerminal *terminal);
+
 /* Set the terminal's size. */
 void vte_terminal_set_size(VteTerminal *terminal,
 			   glong columns, glong rows);
--- vte/src/vte.c	2005-04-05 20:39:43.000000000 +0530
+++ vte-new/src/vte.c	2005-04-05 20:35:14.000000000 +0530
@@ -8562,41 +8562,6 @@ vte_terminal_key_press(GtkWidget *widget
 				suppress_meta_esc = TRUE;
 			}
 			break;
-		/* Keypad/motion keys. */
-		case GDK_KP_Page_Up:
-		case GDK_Page_Up:
-			if (terminal->pvt->modifiers & GDK_SHIFT_MASK) {
-				vte_terminal_scroll_pages(terminal, -1);
-				scrolled = TRUE;
-				handled = TRUE;
-				suppress_meta_esc = TRUE;
-			}
-			break;
-		case GDK_KP_Page_Down:
-		case GDK_Page_Down:
-			if (terminal->pvt->modifiers & GDK_SHIFT_MASK) {
-				vte_terminal_scroll_pages(terminal, 1);
-				scrolled = TRUE;
-				handled = TRUE;
-				suppress_meta_esc = TRUE;
-			}
-			break;
-		case GDK_KP_Home:
-		case GDK_Home:
-			if (terminal->pvt->modifiers & GDK_SHIFT_MASK) {
-				vte_terminal_maybe_scroll_to_top(terminal);
-				scrolled = TRUE;
-				handled = TRUE;
-			}
-			break;
-		case GDK_KP_End:
-		case GDK_End:
-			if (terminal->pvt->modifiers & GDK_SHIFT_MASK) {
-				vte_terminal_maybe_scroll_to_bottom(terminal);
-				scrolled = TRUE;
-				handled = TRUE;
-			}
-			break;
 		/* Let Shift +/- tweak the font, like XTerm does. */
 		case GDK_KP_Add:
 		case GDK_KP_Subtract:
@@ -14859,6 +14824,34 @@ vte_terminal_paste_primary(VteTerminal *
 	vte_terminal_paste(terminal, GDK_SELECTION_PRIMARY);
 }
 
+void
+vte_terminal_scroll_page_up(VteTerminal *terminal)
+{
+	g_return_if_fail(VTE_IS_TERMINAL(terminal));
+	vte_terminal_scroll_pages(terminal, -1);
+}
+
+void
+vte_terminal_scroll_page_down(VteTerminal *terminal)
+{
+	g_return_if_fail(VTE_IS_TERMINAL(terminal));
+	vte_terminal_scroll_pages(terminal, 1);
+}
+
+void
+vte_terminal_scroll_home(VteTerminal *terminal)
+{
+	g_return_if_fail(VTE_IS_TERMINAL(terminal));
+	vte_terminal_maybe_scroll_to_top(terminal);
+}
+
+void
+vte_terminal_scroll_end(VteTerminal *terminal)
+{
+	g_return_if_fail(VTE_IS_TERMINAL(terminal));
+	vte_terminal_maybe_scroll_to_bottom(terminal);
+}
+
 /**
  * vte_terminal_im_append_menuitems:
  * @terminal: a #VteTerminal
--- vte/ChangeLog	2005-04-01 15:21:47.000000000 +0530
+++ vte-new/ChangeLog	2005-04-06 10:43:37.000000000 +0530
@@ -1,3 +1,11 @@
+2005-04-06  Muktha  <muktha.narayan@wipro.com>
+
+	* src/vte.h:
+	* src/vte.c: (vte_terminal_scroll_page_up),
+	(vte_terminal_scroll_page_down), (vte_terminal_scroll_home),
+	(vte_terminal_scroll_end): New functions to handle scrolling
+	up/down. Fixes bug #172766.
+
 2005-04-01  Adi Attar  <aattar@cvs.gnome.org>
 
 	* configure.in: Added "xh" to ALL_LINGUAS.
