--- gnome-terminal/src/gnome-terminal.schemas.in	2005-04-05 20:40:11.000000000 +0530
+++ gnome-terminal-new/src/gnome-terminal.schemas.in	2005-04-05 20:36:10.000000000 +0530
@@ -1138,5 +1138,72 @@
       </locale>
     </schema>
 
+    <schema>
+      <key>/schemas/apps/gnome-terminal/keybindings/scroll_page_up</key>
+      <applyto>/apps/gnome-terminal/keybindings/scroll_page_up</applyto>
+      <owner>gnome-terminal</owner>
+      <type>string</type>
+      <default>&lt;Shift&gt;Page_Up</default>
+      <locale name="C">
+         <default>&lt;Shift&gt;Page_Up</default>
+         <short>Keyboard shortcut to scroll one page up</short>
+         <long>
+          Keyboard shortcut key for scrolling one page up. If you set the
+          option to the special string "disabled", then there will be no
+          keyboard shortcut for this action.
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/gnome-terminal/keybindings/scroll_page_down</key>
+      <applyto>/apps/gnome-terminal/keybindings/scroll_page_down</applyto>
+      <owner>gnome-terminal</owner>
+      <type>string</type>
+      <default>&lt;Shift&gt;Page_Down</default>
+      <locale name="C">
+         <default>&lt;Shift&gt;Page_Down</default>
+         <short>Keyboard shortcut to scroll one page down</short>
+         <long>
+          Keyboard shortcut key for scrolling one page down. If you set the
+          option to the special string "disabled", then there will be no
+          keyboard shortcut for this action.
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/gnome-terminal/keybindings/scroll_home</key>
+      <applyto>/apps/gnome-terminal/keybindings/scroll_home</applyto>
+      <owner>gnome-terminal</owner>
+      <type>string</type>
+      <default>&lt;Shift&gt;Home</default>
+      <locale name="C">
+         <default>&lt;Shift&gt;Home</default>
+         <short>Keyboard shortcut to scroll up to the first line</short>
+         <long>
+          Keyboard shortcut key for scrolling up to the first line. If you set
+          the option to the special string "disabled", then there will be no
+          keyboard shortcut for this action.
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/gnome-terminal/keybindings/scroll_end</key>
+      <applyto>/apps/gnome-terminal/keybindings/scroll_end</applyto>
+      <owner>gnome-terminal</owner>
+      <type>string</type>
+      <default>&lt;Shift&gt;End</default>
+      <locale name="C">
+         <default>&lt;Shift&gt;End</default>
+         <short>Keyboard shortcut to scroll down to the last line</short>
+         <long>
+          Keyboard shortcut key for scrolling down to the last line. If you set+          the option to the special string "disabled", then there will be no
+          keyboard shortcut for this action.
+         </long>
+      </locale>
+    </schema>
+
   </schemalist>  
 </gconfschemafile>
--- gnome-terminal/src/terminal-accels.h	2005-04-05 20:41:04.000000000 +0530
+++ gnome-terminal-new/src/terminal-accels.h	2005-04-05 20:36:56.000000000 +0530
@@ -47,6 +47,10 @@ GtkAccelGroup* terminal_accels_get_group
 #define ACCEL_PATH_ZOOM_IN ACCEL_PATH_ROOT"/zoom_in"
 #define ACCEL_PATH_ZOOM_OUT ACCEL_PATH_ROOT"/zoom_out"
 #define ACCEL_PATH_ZOOM_NORMAL ACCEL_PATH_ROOT"/zoom_normal"
+#define ACCEL_PATH_SCROLL_PAGE_UP ACCEL_PATH_ROOT"/scroll_page_up"
+#define ACCEL_PATH_SCROLL_PAGE_DOWN ACCEL_PATH_ROOT"/scroll_page_down"
+#define ACCEL_PATH_SCROLL_HOME ACCEL_PATH_ROOT"/scroll_home"
+#define ACCEL_PATH_SCROLL_END ACCEL_PATH_ROOT"/scroll_end"
 
 #define FORMAT_ACCEL_PATH_SWITCH_TO_TAB ACCEL_PATH_ROOT"/switch_to_tab_%d"
 #define PREFIX_ACCEL_PATH_SWITCH_TO_TAB ACCEL_PATH_ROOT"/switch_to_tab_"
--- gnome-terminal/src/terminal-accels.c	2005-04-05 20:40:35.000000000 +0530
+++ gnome-terminal-new/src/terminal-accels.c	2005-04-05 20:36:36.000000000 +0530
@@ -49,6 +49,10 @@
 #define KEY_ZOOM_IN CONF_KEYS_PREFIX"/zoom_in"
 #define KEY_ZOOM_OUT CONF_KEYS_PREFIX"/zoom_out"
 #define KEY_ZOOM_NORMAL CONF_KEYS_PREFIX"/zoom_normal"
+#define KEY_SCROLL_PAGE_UP CONF_KEYS_PREFIX"/scroll_page_up"
+#define KEY_SCROLL_PAGE_DOWN CONF_KEYS_PREFIX"/scroll_page_down"
+#define KEY_SCROLL_HOME CONF_KEYS_PREFIX"/scroll_home"
+#define KEY_SCROLL_END CONF_KEYS_PREFIX"/scroll_end"
 
 typedef struct
 {
@@ -118,6 +122,14 @@ static KeyEntry terminal_entries[] =
 
 static KeyEntry go_entries[] =
 {
+  { N_("Scroll One Page Up"),
+    KEY_SCROLL_PAGE_UP, ACCEL_PATH_SCROLL_PAGE_UP, 0, 0, NULL, FALSE },
+  { N_("Scroll One Page Down"),
+    KEY_SCROLL_PAGE_DOWN, ACCEL_PATH_SCROLL_PAGE_DOWN, 0, 0, NULL, FALSE },
+  { N_("Scroll to First Line"),
+    KEY_SCROLL_HOME, ACCEL_PATH_SCROLL_HOME, 0, 0, NULL, FALSE },
+  { N_("Scroll to Last Line"),
+    KEY_SCROLL_END, ACCEL_PATH_SCROLL_END, 0, 0, NULL, FALSE },
   { N_("Switch to Previous Tab"),
     KEY_PREV_TAB, ACCEL_PATH_PREV_TAB, 0, 0, NULL, FALSE },
   { N_("Switch to Next Tab"),
--- gnome-terminal/src/terminal-widget-vte.c	2005-04-05 20:41:58.000000000 +0530
+++ gnome-terminal-new/src/terminal-widget-vte.c	2005-04-05 20:38:07.000000000 +0530
@@ -419,6 +419,34 @@ terminal_widget_paste_clipboard (GtkWidg
 }
 
 void
+terminal_widget_scroll_page_up (GtkWidget *widget)
+{
+  g_return_if_fail(VTE_IS_TERMINAL(widget));
+  vte_terminal_scroll_page_up(VTE_TERMINAL(widget));
+}
+
+void
+terminal_widget_scroll_page_down (GtkWidget *widget)
+{
+  g_return_if_fail(VTE_IS_TERMINAL(widget));
+  vte_terminal_scroll_page_down(VTE_TERMINAL(widget));
+}
+
+void
+terminal_widget_scroll_home (GtkWidget *widget)
+{
+  g_return_if_fail(VTE_IS_TERMINAL(widget));
+  vte_terminal_scroll_home(VTE_TERMINAL(widget));
+}
+
+void
+terminal_widget_scroll_end (GtkWidget *widget)
+{
+  g_return_if_fail(VTE_IS_TERMINAL(widget));
+  vte_terminal_scroll_end(VTE_TERMINAL(widget));
+}
+
+void
 terminal_widget_reset (GtkWidget *widget,
 		       gboolean   also_clear_afterward)
 {
@@ -426,7 +454,6 @@ terminal_widget_reset (GtkWidget *widget
   vte_terminal_reset (VTE_TERMINAL(widget), TRUE, also_clear_afterward);
 }
 
-
 void
 terminal_widget_connect_title_changed (GtkWidget *widget,
 				       GCallback  callback,
--- gnome-terminal/src/terminal-window.c	2005-04-05 20:42:28.000000000 +0530
+++ gnome-terminal-new/src/terminal-window.c	2005-04-05 20:38:25.000000000 +0530
@@ -50,6 +50,10 @@ struct _TerminalWindowPrivate
   GtkWidget *close_tab_menuitem;
   GtkWidget *copy_menuitem;
   GtkWidget *paste_menuitem;
+  GtkWidget *scroll_page_up_menuitem;
+  GtkWidget *scroll_page_down_menuitem;
+  GtkWidget *scroll_home_menuitem;
+  GtkWidget *scroll_end_menuitem;
   GtkWidget *show_menubar_menuitem;
   GtkWidget *zoom_in_menuitem;
   GtkWidget *zoom_out_menuitem;
@@ -150,6 +154,14 @@ static void copy_callback               
                                            TerminalWindow *window);
 static void paste_callback                (GtkWidget      *menuitem,
                                            TerminalWindow *window);
+static void scroll_page_up_callback       (GtkWidget      *menuitem,
+                                           TerminalWindow *window);
+static void scroll_page_down_callback     (GtkWidget      *menuitem,
+                                           TerminalWindow *window);
+static void scroll_home_callback          (GtkWidget      *menuitem,
+                                           TerminalWindow *window);
+static void scroll_end_callback           (GtkWidget      *menuitem,
+                                           TerminalWindow *window);
 static void edit_keybindings_callback     (GtkWidget      *menuitem,
                                            TerminalWindow *window);
 static void change_configuration_callback (GtkWidget      *menuitem,
@@ -940,6 +952,25 @@ terminal_window_init (TerminalWindow *wi
   mi = gtk_separator_menu_item_new ();
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
 
+  mi = append_menuitem (menu, _("Scroll Page Up"), ACCEL_PATH_SCROLL_PAGE_UP,
+                        G_CALLBACK (scroll_page_up_callback), window);
+  window->priv->scroll_page_up_menuitem = mi;
+
+  mi = append_menuitem (menu, _("Scroll Page Down"), ACCEL_PATH_SCROLL_PAGE_DOWN,
+                        G_CALLBACK (scroll_page_down_callback), window);
+  window->priv->scroll_page_down_menuitem = mi;
+
+  mi = append_menuitem (menu, _("Scroll Home"), ACCEL_PATH_SCROLL_HOME,
+                        G_CALLBACK (scroll_home_callback), window);
+  window->priv->scroll_home_menuitem = mi;
+
+  mi = append_menuitem (menu, _("Scroll End"), ACCEL_PATH_SCROLL_END,
+                        G_CALLBACK (scroll_end_callback), window);
+  window->priv->scroll_end_menuitem = mi;
+
+  mi = gtk_separator_menu_item_new ();
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
+
   mi = append_stock_menuitem (menu, GTK_STOCK_ZOOM_IN, ACCEL_PATH_ZOOM_IN,
                               G_CALLBACK (zoom_in_callback), window);
   window->priv->zoom_in_menuitem = mi;
@@ -1116,6 +1147,10 @@ terminal_window_destroy (GtkObject *obje
   window->priv->edit_config_menuitem = NULL;
   window->priv->choose_config_menuitem = NULL;
   window->priv->encoding_menuitem = NULL;
+  window->priv->scroll_page_up_menuitem = NULL;
+  window->priv->scroll_page_down_menuitem = NULL;
+  window->priv->scroll_home_menuitem = NULL;
+  window->priv->scroll_end_menuitem = NULL;
   
   GTK_OBJECT_CLASS (parent_class)->destroy (object);  
 }
@@ -2391,6 +2426,58 @@ paste_callback (GtkWidget      *menuitem
 }
 
 static void
+scroll_page_up_callback (GtkWidget      *menuitem,
+                         TerminalWindow *window)
+{
+  GtkWidget *widget;
+
+  if (window->priv->active_term)
+    {
+      widget = terminal_screen_get_widget (window->priv->active_term);
+      terminal_widget_scroll_page_up (widget);
+    }
+}
+
+static void
+scroll_page_down_callback (GtkWidget      *menuitem,
+                           TerminalWindow *window)
+{
+  GtkWidget *widget;
+
+  if (window->priv->active_term)
+    {
+      widget = terminal_screen_get_widget (window->priv->active_term);
+      terminal_widget_scroll_page_down (widget);
+    }
+}
+
+static void
+scroll_home_callback (GtkWidget      *menuitem,
+                      TerminalWindow *window)
+{
+  GtkWidget *widget;
+
+  if (window->priv->active_term)
+    {
+      widget = terminal_screen_get_widget (window->priv->active_term);
+      terminal_widget_scroll_home (widget);
+    }
+}
+
+static void
+scroll_end_callback (GtkWidget      *menuitem,
+                     TerminalWindow *window)
+{
+  GtkWidget *widget;
+
+  if (window->priv->active_term)
+    {
+      widget = terminal_screen_get_widget (window->priv->active_term);
+      terminal_widget_scroll_end (widget);
+    }
+}
+
+static void
 edit_keybindings_callback (GtkWidget      *menuitem,
                            TerminalWindow *window)
 {
--- gnome-terminal/src/terminal-widget.h	2005-04-05 20:41:30.000000000 +0530
+++ gnome-terminal-new/src/terminal-widget.h	2005-04-05 20:37:43.000000000 +0530
@@ -104,6 +104,10 @@ void       terminal_widget_set_colors   
                                                        const GdkColor       *palette_entries);
 void       terminal_widget_copy_clipboard             (GtkWidget            *widget);
 void       terminal_widget_paste_clipboard            (GtkWidget            *widget);
+void       terminal_widget_scroll_page_up             (GtkWidget            *widget);
+void       terminal_widget_scroll_page_down           (GtkWidget            *widget);
+void       terminal_widget_scroll_home                (GtkWidget            *widget);
+void       terminal_widget_scroll_end                 (GtkWidget            *widget);
 void       terminal_widget_reset                      (GtkWidget            *widget,
                                                        gboolean              also_clear_afterward);
 
--- gnome-terminal/ChangeLog	2005-04-01 06:18:40.000000000 +0530
+++ gnome-terminal-new/ChangeLog	2005-04-06 10:53:22.000000000 +0530
@@ -1,3 +1,15 @@
+2005-04-06  Muktha  <muktha.narayan@wipro.com>
+
+	* src/gnome-terminal.schemas.in: Added new gconf keys for
+	scrolling up/down.
+	* src/terminal-accels.h:  
+	* src/terminal-accels.c: Added new shortcuts for scrolling.
+	* src/terminal-widget-vte.c: (terminal_widget_scroll_page_up),
+	(terminal_widget_scroll_page_down), (terminal_widget_scroll_home),
+	(terminal_widget_scroll_end): New functions to scroll up/down.
+	* src/terminal-window.c: Add scroll menuitems.
+	Fixes bug #172766.
+
 2005-03-31  Steve Murphy  <murf@e-tools.com>
 
         * configure.in: Added "rw" to ALL_LINGUAS.
