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))
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)
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', [])