diff -crB ./src/terminal-accels.c ../gnome-terminal-2.25.3/src/terminal-accels.c
*** ./src/terminal-accels.c	2008-11-29 15:30:21.000000000 -0500
--- ../gnome-terminal-2.25.3/src/terminal-accels.c	2009-01-30 23:26:57.000000000 -0500
***************
*** 69,74 ****
--- 69,81 ----
  #define ACCEL_PATH_MOVE_TAB_RIGHT       ACCEL_PATH_ROOT "TabsMoveRight"
  #define ACCEL_PATH_DETACH_TAB           ACCEL_PATH_ROOT "TabsDetach"
  #define ACCEL_PATH_SWITCH_TAB_PREFIX    ACCEL_PATH_ROOT "TabsSwitch"
+ #define ACCEL_PATH_SCROLL_DOWN_1_LINE   ACCEL_PATH_ROOT "ViewScrollDown1Line"
+ #define ACCEL_PATH_SCROLL_UP_1_LINE     ACCEL_PATH_ROOT "ViewScrollUp1Line"
+ #define ACCEL_PATH_SCROLL_DOWN_1_PAGE   ACCEL_PATH_ROOT "ViewScrollDown1Page"
+ #define ACCEL_PATH_SCROLL_UP_1_PAGE     ACCEL_PATH_ROOT "ViewScrollUp1Page"
+ #define ACCEL_PATH_SCROLL_TO_TOP        ACCEL_PATH_ROOT "ViewScrollToTop"
+ #define ACCEL_PATH_SCROLL_TO_BOTTOM     ACCEL_PATH_ROOT "ViewScrollToBottom"
+ 
  
  #define KEY_CLOSE_TAB           CONF_KEYS_PREFIX "/close_tab"
  #define KEY_CLOSE_WINDOW        CONF_KEYS_PREFIX "/close_window"
***************
*** 92,97 ****
--- 99,110 ----
  #define KEY_ZOOM_NORMAL         CONF_KEYS_PREFIX "/zoom_normal"
  #define KEY_ZOOM_OUT            CONF_KEYS_PREFIX "/zoom_out"
  #define KEY_SWITCH_TAB_PREFIX   CONF_KEYS_PREFIX "/switch_to_tab_"
+ #define KEY_SCROLL_DOWN_1_LINE  CONF_KEYS_PREFIX "/scroll_down_1_line"
+ #define KEY_SCROLL_UP_1_LINE    CONF_KEYS_PREFIX "/scroll_up_1_line"
+ #define KEY_SCROLL_DOWN_1_PAGE  CONF_KEYS_PREFIX "/scroll_down_1_page"
+ #define KEY_SCROLL_UP_1_PAGE    CONF_KEYS_PREFIX "/scroll_up_1_page"
+ #define KEY_SCROLL_TO_TOP       CONF_KEYS_PREFIX "/scroll_to_top"
+ #define KEY_SCROLL_TO_BOTTOM    CONF_KEYS_PREFIX "/scroll_to_bottom"
  
  typedef struct
  {
***************
*** 147,153 ****
    { N_("Zoom Out"),
      KEY_ZOOM_OUT, ACCEL_PATH_ZOOM_OUT, 0, 0, NULL, FALSE, TRUE },
    { N_("Normal Size"),
!     KEY_ZOOM_NORMAL, ACCEL_PATH_ZOOM_NORMAL, 0, 0, NULL, FALSE, TRUE }
  };
  
  static KeyEntry terminal_entries[] =
--- 160,179 ----
    { N_("Zoom Out"),
      KEY_ZOOM_OUT, ACCEL_PATH_ZOOM_OUT, 0, 0, NULL, FALSE, TRUE },
    { N_("Normal Size"),
!     KEY_ZOOM_NORMAL, ACCEL_PATH_ZOOM_NORMAL, 0, 0, NULL, FALSE, TRUE },
!   { N_("Scroll Down 1 Line"),
!     KEY_SCROLL_DOWN_1_LINE, ACCEL_PATH_SCROLL_DOWN_1_LINE, 0, 0, NULL, FALSE, TRUE },
!   { N_("Scroll Up 1 Line"),
!     KEY_SCROLL_UP_1_LINE, ACCEL_PATH_SCROLL_UP_1_LINE, 0, 0, NULL, FALSE, TRUE },
!   { N_("Scroll Down 1 Page"),
!     KEY_SCROLL_DOWN_1_PAGE, ACCEL_PATH_SCROLL_DOWN_1_PAGE, 0, 0, NULL, FALSE, TRUE },
!   { N_("Scroll Up 1 Page"),
!     KEY_SCROLL_UP_1_PAGE, ACCEL_PATH_SCROLL_UP_1_PAGE, 0, 0, NULL, FALSE, TRUE },
!   { N_("Scroll To Top"),
!     KEY_SCROLL_TO_TOP, ACCEL_PATH_SCROLL_TO_TOP, 0, 0, NULL, FALSE, TRUE },
!   { N_("Scroll To Bottom"),
!     KEY_SCROLL_TO_BOTTOM, ACCEL_PATH_SCROLL_TO_BOTTOM, 0, 0, NULL, FALSE, TRUE }
! 
  };
  
  static KeyEntry terminal_entries[] =
diff -crB ./src/terminal-screen-container.c ../gnome-terminal-2.25.3/src/terminal-screen-container.c
*** ./src/terminal-screen-container.c	2008-10-01 12:41:20.000000000 -0400
--- ../gnome-terminal-2.25.3/src/terminal-screen-container.c	2009-01-30 23:14:39.000000000 -0500
***************
*** 81,87 ****
  }
  
  #ifndef USE_SCROLLED_WINDOW
! static GtkWidget *
  terminal_screen_container_get_scrollbar (GtkWidget *container)
  {
    return g_object_get_data (G_OBJECT (container), SCROLLBAR_DATA_KEY);
--- 81,87 ----
  }
  
  #ifndef USE_SCROLLED_WINDOW
! GtkWidget *
  terminal_screen_container_get_scrollbar (GtkWidget *container)
  {
    return g_object_get_data (G_OBJECT (container), SCROLLBAR_DATA_KEY);
diff -crB ./src/terminal-screen-container.h ../gnome-terminal-2.25.3/src/terminal-screen-container.h
*** ./src/terminal-screen-container.h	2008-10-01 12:41:20.000000000 -0400
--- ../gnome-terminal-2.25.3/src/terminal-screen-container.h	2009-01-30 23:14:30.000000000 -0500
***************
*** 27,32 ****
--- 27,36 ----
  
  GtkWidget *terminal_screen_container_new (TerminalScreen *screen);
  
+ #ifndef USE_SCROLLED_WINDOW
+ GtkWidget * terminal_screen_container_get_scrollbar (GtkWidget *container) ;
+ #endif
+ 
  TerminalScreen *terminal_screen_container_get_screen (GtkWidget *container);
  
  void terminal_screen_container_set_policy (GtkWidget *container,
diff -crB ./src/terminal-window.c ../gnome-terminal-2.25.3/src/terminal-window.c
*** ./src/terminal-window.c	2008-12-15 16:25:10.000000000 -0500
--- ../gnome-terminal-2.25.3/src/terminal-window.c	2009-01-30 23:11:00.000000000 -0500
***************
*** 157,162 ****
--- 157,174 ----
                                                 TerminalWindow *window);
  static void view_zoom_normal_callback         (GtkAction *action,
                                                 TerminalWindow *window);
+ static void view_scroll_linedown_callback     (GtkAction *action,
+                                                TerminalWindow *window);
+ static void view_scroll_lineup_callback       (GtkAction *action,
+                                                TerminalWindow *window);
+ static void view_scroll_pagedown_callback     (GtkAction *action,
+                                                TerminalWindow *window);
+ static void view_scroll_pageup_callback       (GtkAction *action,
+                                                TerminalWindow *window);
+ static void view_scroll_top_callback          (GtkAction *action,
+                                                TerminalWindow *window);
+ static void view_scroll_bottom_callback       (GtkAction *action,
+                                                TerminalWindow *window);
  static void terminal_set_title_callback       (GtkAction *action,
                                                 TerminalWindow *window);
  static void terminal_add_encoding_callback    (GtkAction *action,
***************
*** 1609,1614 ****
--- 1621,1644 ----
        { "ViewZoom100", GTK_STOCK_ZOOM_100, NULL, "<control>0",
          NULL,
          G_CALLBACK (view_zoom_normal_callback) },
+       { "ViewScrollDown1Line", NULL, N_("_Scroll Down 1 Line"), NULL,
+         NULL,
+         G_CALLBACK (view_scroll_linedown_callback) },
+       { "ViewScrollUp1Line", NULL, N_("_Scroll Up 1 Line"), NULL,
+         NULL,
+         G_CALLBACK (view_scroll_lineup_callback) },
+       { "ViewScrollDown1Page", NULL, N_("_Scroll Down 1 Page"), NULL,
+         NULL,
+         G_CALLBACK (view_scroll_pagedown_callback) },
+       { "ViewScrollUp1Page", NULL, N_("_Scroll Up 1 Page"), NULL,
+         NULL,
+         G_CALLBACK (view_scroll_pageup_callback) },
+       { "ViewScrollToTop", NULL, N_("_Scroll To Top"), NULL,
+         NULL,
+         G_CALLBACK (view_scroll_top_callback) },
+       { "ViewScrollToBottom", NULL, N_("_Scroll To Bottom"), NULL,
+         NULL,
+         G_CALLBACK (view_scroll_bottom_callback) },
  
        /* Terminal menu */
        { "TerminalProfiles", NULL, N_("Change _Profile") },
***************
*** 3207,3212 ****
--- 3237,3371 ----
  }
  
  static void
+ view_scroll_lineup_callback (GtkAction *action,
+                              TerminalWindow *window)
+ {
+   int current;
+   TerminalScreen *screen = terminal_window_get_active( window ) ;
+   GtkWidget *scrollbar = terminal_screen_container_get_scrollbar( GTK_WIDGET (screen)->parent ) ;
+ 
+   if (screen == NULL)
+     return;
+ 
+   current = gtk_range_get_value( GTK_RANGE( scrollbar ) ) ;
+ 
+   if ( current )
+     gtk_range_set_value( GTK_RANGE ( scrollbar ), current - 1 ) ;
+ 
+   gtk_widget_show( screen ) ;
+   gtk_widget_show( window ) ;
+ 
+ }
+ 
+ static void
+ view_scroll_linedown_callback (GtkAction *action,
+                                TerminalWindow *window)
+ {
+   int current;
+   TerminalScreen *screen = terminal_window_get_active( window ) ;
+   GtkWidget *scrollbar = terminal_screen_container_get_scrollbar( GTK_WIDGET (screen)->parent ) ;
+ 
+   if (screen == NULL)
+     return;
+ 
+   current = gtk_range_get_value( GTK_RANGE( scrollbar ) ) ;
+ 
+   if ( current < ( gtk_range_get_adjustment( GTK_RANGE( scrollbar ) )->upper ) )
+     gtk_range_set_value( GTK_RANGE ( scrollbar ), current + 1 ) ;
+ 
+   gtk_widget_show( screen ) ;
+   gtk_widget_show( window ) ;
+ 
+ }
+ 
+ static void
+ view_scroll_pagedown_callback (GtkAction *action,
+                                TerminalWindow *window)
+ {
+   int current;
+   int upper ;
+   TerminalScreen *screen = terminal_window_get_active( window ) ;
+   GtkWidget *scrollbar = terminal_screen_container_get_scrollbar( GTK_WIDGET (screen)->parent ) ;
+ 
+   if (screen == NULL)
+     return;
+ 
+   current = gtk_range_get_value( GTK_RANGE( scrollbar ) ) ;
+ 
+   current += gtk_range_get_adjustment( GTK_RANGE( scrollbar ) )->page_size ;
+ 
+   upper = gtk_range_get_adjustment( GTK_RANGE( scrollbar ) )->upper ;
+ 
+   if ( current > upper )
+     current = upper ;
+ 
+   gtk_range_set_value( GTK_RANGE ( scrollbar ), current  ) ;
+ 
+   gtk_widget_show( screen ) ;
+   gtk_widget_show( window ) ;
+ 
+ }
+ 
+ static void
+ view_scroll_pageup_callback (GtkAction *action,
+                              TerminalWindow *window)
+ {
+   int current;
+   TerminalScreen *screen = terminal_window_get_active( window ) ;
+   GtkWidget *scrollbar = terminal_screen_container_get_scrollbar( GTK_WIDGET (screen)->parent ) ;
+ 
+   if (screen == NULL)
+     return;
+ 
+   current = gtk_range_get_value( GTK_RANGE( scrollbar ) ) ;
+ 
+   current -= gtk_range_get_adjustment( GTK_RANGE( scrollbar ) )->page_size ;
+ 
+   if ( current < 0  )
+     current = 0 ;
+ 
+   gtk_range_set_value( GTK_RANGE ( scrollbar ), current  ) ;
+ 
+   gtk_widget_show( screen ) ;
+   gtk_widget_show( window ) ;
+ 
+ }
+ 
+ static void
+ view_scroll_top_callback (GtkAction *action,
+                                 TerminalWindow *window)
+ {
+   TerminalScreen *screen = terminal_window_get_active( window ) ;
+   GtkWidget *scrollbar = terminal_screen_container_get_scrollbar( GTK_WIDGET (screen)->parent ) ;
+ 
+   if (screen == NULL)
+     return;
+ 
+   gtk_range_set_value( GTK_RANGE ( scrollbar ), 0  ) ;
+ 
+   gtk_widget_show( screen ) ;
+   gtk_widget_show( window ) ;
+ 
+ }
+ 
+ static void
+ view_scroll_bottom_callback (GtkAction *action,
+                                    TerminalWindow *window)
+ {
+   TerminalScreen *screen = terminal_window_get_active( window ) ;
+   GtkWidget *scrollbar = terminal_screen_container_get_scrollbar( GTK_WIDGET (screen)->parent ) ;
+ 
+   if (screen == NULL)
+     return;
+ 
+   gtk_range_set_value( GTK_RANGE ( scrollbar ), gtk_range_get_adjustment( GTK_RANGE( scrollbar ) )->upper  ) ;
+ 
+   gtk_widget_show( screen ) ;
+   gtk_widget_show( window ) ;
+ 
+ }
+ 
+ static void
  terminal_set_title_dialog_response_cb (GtkWidget *dialog,
                                         int response,
                                         TerminalScreen *screen)
diff -crB ./src/terminal.xml ../gnome-terminal-2.25.3/src/terminal.xml
*** ./src/terminal.xml	2008-11-24 12:19:28.000000000 -0500
--- ../gnome-terminal-2.25.3/src/terminal.xml	2009-01-30 23:28:25.000000000 -0500
***************
*** 29,34 ****
--- 29,41 ----
        <menuitem action="ViewZoomIn" />
        <menuitem action="ViewZoomOut" />
        <menuitem action="ViewZoom100" />
+       <separator />
+       <menuitem action="ViewScrollDown1Line" />
+       <menuitem action="ViewScrollUp1Line" />
+       <menuitem action="ViewScrollDown1Page" />
+       <menuitem action="ViewScrollUp1Page" />
+       <menuitem action="ViewScrollToTop" />
+       <menuitem action="ViewScrollToBottom" />
      </menu>
      <menu action="Terminal">
        <menu action="TerminalProfiles" />
