Пример #1
0
    def send_key_sequence(self, event_string):
        ''' Fake key sequence.'''
        event_list = event_string.split("-")

        if len(event_list) > 1:
            for widget in [self.buffer_widget.focusProxy()]:
                last_char = event_list[-1]
                last_key = last_char
                if len(last_char) == 1:
                    last_key = last_char.lower()

                modifiers = Qt.KeyboardModifier.NoModifier

                for modifier in event_list[0:-1]:
                    if modifier == "C":
                        modifiers |= Qt.KeyboardModifier.ControlModifier
                    elif modifier == "M":
                        modifiers |= Qt.KeyboardModifier.AltModifier
                    elif modifier == "S":
                        modifiers |= Qt.KeyboardModifier.KeyboardModifier.ShiftModifier
                    elif modifier == "s":
                        modifiers |= Qt.KeyboardModifier.MetaModifier
                        
                if last_key in qt_text_dict:
                    last_key = qt_text_dict[last_key]

                QApplication.postEvent(widget, QKeyEvent(QEvent.Type.KeyPress, qt_key_dict[last_key], modifiers, last_key))
Пример #2
0
    def send_key(self, event_string):
        ''' Fake key event.'''
        # Init.
        text = event_string
        modifier = Qt.KeyboardModifier.NoModifier

        # Get key text.
        if event_string in qt_text_dict:
            text = qt_text_dict[event_string]

        if event_string == "<backtab>":
            modifier = Qt.KeyboardModifier.ShiftModifier
        elif len(event_string) == 1 and event_string.isupper():
            modifier = Qt.KeyboardModifier.ShiftModifier

        # print("Press: ", event_string, modifier, text)

        # NOTE: don't ignore text argument, otherwise QWebEngineView not respond key event.
        try:
            key_press = QKeyEvent(QEvent.Type.KeyPress, qt_key_dict[event_string], modifier, text)
        except:
            key_press = QKeyEvent(QEvent.Type.KeyPress, Qt.Key.Key_unknown, modifier, text)

        for widget in self.get_key_event_widgets():
            QApplication.postEvent(widget, key_press)

        self.send_key_filter(event_string)
Пример #3
0
    def focus_widget(self, event=None):
        '''Focus buffer widget.'''
        if event is None:
            event = QFocusEvent(QEvent.Type.FocusIn, Qt.FocusReason.MouseFocusReason)
        QApplication.postEvent(self.buffer_widget.focusProxy(), event)

        # Activate emacs window when call focus widget, avoid first char is not
        eval_in_emacs('eaf-activate-emacs-window', [])