KEYBINDINGS = {
     'KEY_BACKSPACE': 'prompt_backspace',
     'KEY_ENTER': 'prompt_enter',
-    'KEY_UP': 'scroll_up',
-    'KEY_DOWN': 'scroll_down',
+    'KEY_PGUP': 'scroll_up',
+    'KEY_PGDOWN': 'scroll_down',
 }
 
 IRCSPEC_LINE_SEPARATOR = b'\r\n'
         self._draw_prompt()
 
     def _kb__scroll_up(self) -> None:
-        if len(self._log_buffer) > self._upscroll:
-            self._upscroll += 1
+        self._upscroll = min(len(self._log_buffer) - 1,
+                             self._upscroll + self._y_pgscroll)
         self._draw_log()
 
     def _kb__scroll_down(self) -> None:
-        if self._upscroll > 1:
-            self._upscroll -= 1
+        self._upscroll = max(0, self._upscroll - self._y_pgscroll)
         self._draw_log()
 
     def _calc_and_draw_all(self) -> None:
         self._term.calc_geometry()
         self._y_prompt = self._term.size.y - 1
         self._y_separator = self._term.size.y - 2
+        self._y_pgscroll = self._y_separator // 2
         self._draw_frame()
         self._draw_log()
         self._draw_prompt()