diff -r 810a5a541979 terminatorlib/config.py --- a/terminatorlib/config.py Wed Jul 18 14:03:38 2012 +0900 +++ b/terminatorlib/config.py Wed Jul 18 20:42:27 2012 +0900 @@ -122,6 +122,12 @@ 'paste' : 'v', 'toggle_scrollbar' : 's', 'search' : 'f', + 'scroll_one_page_up' : '', + 'scroll_one_page_down' : '', + 'scroll_half_page_up' : '', + 'scroll_half_page_down' : '', + 'scroll_one_line_up' : '', + 'scroll_one_line_down' : '', 'close_window' : 'q', 'resize_up' : 'Up', 'resize_down' : 'Down', diff -r 810a5a541979 terminatorlib/prefseditor.py --- a/terminatorlib/prefseditor.py Wed Jul 18 14:03:38 2012 +0900 +++ b/terminatorlib/prefseditor.py Wed Jul 18 20:42:27 2012 +0900 @@ -91,6 +91,12 @@ 'paste' : 'Paste clipboard', 'toggle_scrollbar' : 'Show/Hide the scrollbar', 'search' : 'Search terminal scrollback', + 'scroll_one_page_up' : 'Scroll upwards one page', + 'scroll_one_page_down' : 'Scroll downwards one page', + 'scroll_half_page_up' : 'Scroll upwards half a page', + 'scroll_half_page_down' : 'Scroll downwards half a page', + 'scroll_one_line_up' : 'Scroll upwards one line', + 'scroll_one_line_down' : 'Scroll downwards one line', 'close_window' : 'Close window', 'resize_up' : 'Resize the terminal up', 'resize_down' : 'Resize the terminal down', diff -r 810a5a541979 terminatorlib/terminal.py --- a/terminatorlib/terminal.py Wed Jul 18 14:03:38 2012 +0900 +++ b/terminatorlib/terminal.py Wed Jul 18 20:42:27 2012 +0900 @@ -1407,6 +1407,20 @@ if layout.has_key('title') and layout['title'] != '': self.titlebar.set_custom_string(layout['title']) + def scroll_by_page(self, pages): + amount = pages * self.vte.get_adjustment().get_page_increment() + self.scroll_by(int(amount)) + + def scroll_by_line(self, lines): + amount = lines * self.vte.get_adjustment().get_step_increment() + self.scroll_by(int(amount)) + + def scroll_by(self, amount): + adjustment = self.vte.get_adjustment() + bottom = adjustment.upper - adjustment.page_size + value = adjustment.get_value() + amount + adjustment.set_value(min(value, bottom)) + # There now begins a great list of keyboard event handlers def key_zoom_in(self): self.zoom_in() @@ -1576,6 +1590,25 @@ def key_broadcast_all(self): self.set_groupsend(None, self.terminator.groupsend_type['all']) + def key_scroll_one_page_up(self): + self.scroll_by_page(-1) + + def key_scroll_one_page_down(self): + self.scroll_by_page(1) + + def key_scroll_half_page_up(self): + self.scroll_by_page(-0.5) + + def key_scroll_half_page_down(self): + self.scroll_by_page(0.5) + + def key_scroll_one_line_up(self): + self.scroll_by_line(-1) + + def key_scroll_one_line_down(self): + self.scroll_by_line(1) + + # End key events gobject.type_register(Terminal)