Send input to panes marked as active after checking for
        a request to redraw the screen (^L), a request to exit,
        and optionally display character codes as they're received.

def process_input(self):
        """
        Send input to panes marked as active after checking for
        a request to redraw the screen (^L), a request to exit,
        and optionally display character codes as they're received.
        """
        try:
            character = self.window.getch()
        except Exception as e:
            character = -1
            if self.debug:
                self.addstr(self.height-1, self.width - len(e.message) + 1, e.message)

        # Check for any keys we've been told to exit on
        if character in self.exit_keys:
            self.stop()

        # Force redraw the screen on ^L
        if character == 12:
            self.window.clear()
            return

        # Send input to active panes (hidden panes can still receive input)
        if character != -1:
            [pane.process_input(character) for pane in self if pane.active ]

            # Print character codes to the bottom center if debugging.
            if self.debug:
                self.addstr(self.height-1, self.width/2, " "*4)
                self.addstr(self.height-1, self.width/2 - len(str(character)) / 2, str(character))