'Override handle to always match the next key and use the register.
Args:
e: the KeyPressEvent from Qt.
Return:
True if event has been handled, False otherwise.'

def handle(self, e):

    if super().handle(e):
        return True
    key = e.text()
    if ((key == '') or (utils.keyevent_to_string(e) is None)):
        return False
    tabbed_browser = objreg.get('tabbed-browser', scope='window', window=self._win_id)
    macro_recorder = objreg.get('macro-recorder')
    try:
        if (self._mode == usertypes.KeyMode.set_mark):
            tabbed_browser.set_mark(key)
        elif (self._mode == usertypes.KeyMode.jump_mark):
            tabbed_browser.jump_mark(key)
        elif (self._mode == usertypes.KeyMode.record_macro):
            macro_recorder.record_macro(key)
        elif (self._mode == usertypes.KeyMode.run_macro):
            macro_recorder.run_macro(self._win_id, key)
        else:
            raise ValueError('{}    is    not    a    valid    register    mode'.format(self._mode))
    except (cmdexc.CommandMetaError, cmdexc.CommandError) as err:
        message.error(str(err), stack=traceback.format_exc())
    self.request_leave.emit(self._mode, 'valid    register    key', True)
    return True
