def keyPressEvent(self, event):
     print("Key: " + str(event.key()))
     print("Modifier: " + str(event.modifiers()))
     layers = QgsProject.instance().layerTreeRoot().children()
     selectedLayerIndex = 0
     tc = self.textCursor()
     #msgBox=QMessageBox()
     #msgBox.setText(str(selection))
     #msgBox.exec()
     if len(layers) > 0 and event.key() == Qt.Key_Space and event.modifiers(
     ) == Qt.ControlModifier:
         self.createVarInputDialog()
         event.accept()
         return
     elif len(layers) == 0 and event.key(
     ) == Qt.Key_Space and event.modifiers() == Qt.ControlModifier:
         msgBox = QMessageBox()
         msgBox.setText(
             "No layer has been loaded in QGIS. Therefore no query variables may be created from a given QGIS layer."
         )
         msgBox.exec()
         event.accept()
         return
     elif (event.key() == Qt.Key_Enter
           or event.key() == Qt.Key_Return) and not self.completer.popup(
           ).isVisible() and event.modifiers() == Qt.ControlModifier:
         self.buildSearchDialog(-1, -1, -1, self, True, True)
         event.accept()
         return
     elif (event.key() == Qt.Key_Enter or event.key()
           == Qt.Key_Return) and self.completer.popup().isVisible():
         self.completer.insertText.emit(self.completer.getSelected())
         self.completer.setCompletionMode(QCompleter.PopupCompletion)
         event.accept()
         return
     QPlainTextEdit.keyPressEvent(self, event)
     seltext = self.textUnderCursor(tc)
     tc.select(QTextCursor.LineUnderCursor)
     selline = tc.selectedText().strip()
     sellinearr = selline.split(" ")
     if len(sellinearr) == 2 and (sellinearr[0].startswith("?")):
         print("subject is variable")
         self.updateCompleterData(list(
             self.autocomplete["propdict"].keys()))
         self.changedCompleterSetting = True
         #msgBox=QMessageBox()
         #msgBox.setText(str(list(self.autocomplete["completerClassList"].keys())))
         #msgBox.exec()
     elif len(sellinearr) == 3 and (sellinearr[0].startswith("?")):
         print("subject and predicate")
         self.updateCompleterData(
             list(self.autocomplete["clsdict"].keys()) +
             list(self.autocomplete["completerClassList"].keys()))
         self.changedCompleterSetting = True
         #msgBox=QMessageBox()
         #msgBox.setText(str(list(self.autocomplete["completerClassList"].keys())))
         #msgBox.exec()
     elif self.changedCompleterSetting:
         self.updateCompleterData(
             list(self.autocomplete["clsdict"].keys()) +
             list(self.autocomplete["propdict"].keys()) +
             list(self.autocomplete["completerClassList"].keys()))
         self.changedCompleterSetting = False
     #msgBox=QMessageBox()
     #msgBox.setText(str(list(self.autocomplete["completerClassList"].keys()))+" - "+str(self.changedCompleterSetting))
     #msgBox.exec()
     for m in re.finditer(r'\S+', selline):
         num, part = m.start(), m.group()
         if (part == "." and num < len(selline) - 1
             ) or (part == ";" and num < len(selline) - 1) or (
                 part == "{" and num < len(selline) - 1
                 and num != 1) or (part == "}" and num < len(selline) - 1
                                   and num != 1):
             tc.setPosition(tc.selectionEnd() - 1)
             tc.insertText(os.linesep)
     cr = self.cursorRect()
     if len(seltext) > 0:
         self.completer.setCompletionPrefix(seltext)
         popup = self.completer.popup()
         popup.setCurrentIndex(self.completer.completionModel().index(0, 0))
         cr.setWidth(
             self.completer.popup().sizeHintForColumn(0) +
             self.completer.popup().verticalScrollBar().sizeHint().width())
         self.completer.complete(cr)
     else:
         self.completer.popup().hide()
     event.accept()