docs: def eventFilter(self, object, event):
          """
          Filters the events for the editors to control how the cursor
          flows between them.
          
          :param      object | <QtCore.QObject>
                      event  | <QtCore.QEvent>
  
          :return     <bool> | consumed
          """
          index = self.indexOf(object)
          pressed = event.type() == event.KeyPress
          released = event.type() == event.KeyRelease
          
          if index == -1 or \
             not (pressed or released) or \
             self.isEditorHandlingBlocked():
              return super(XSerialEdit, self).eventFilter(object, event)
          
          text = nativestring(event.text()).strip()
          
          # handle Ctrl+C (copy)
          if event.key() == QtCore.Qt.Key_C and \
             event.modifiers() == QtCore.Qt.ControlModifier and \
             pressed:
              self.copy()
              return True
          
          # handle Ctrl+X (cut)
          elif event.key() == QtCore.Qt.Key_X and \
               event.modifiers() == QtCore.Qt.ControlModifier and \
               pressed:
              if not self.isReadOnly():
                  self.cut()
              return True
          
          # handle Ctrl+A (select all)
          elif event.key() == QtCore.Qt.Key_A and \
               event.modifiers() == QtCore.Qt.ControlModifier and \
               pressed:
              self.selectAll()
              return True
          
          # handle Ctrl+V (paste)
          elif event.key() == QtCore.Qt.Key_V and \
               event.modifiers() == QtCore.Qt.ControlModifier and \
               pressed:
              if not self.isReadOnly():
                  self.paste()
              return True
          
          # ignore tab movements
          elif event.key() in (QtCore.Qt.Key_Tab, QtCore.Qt.Key_Backtab):
              pass
          
          # delete all selected text
          elif event.key() == QtCore.Qt.Key_Backspace:
              sel_text = self.selectedText()
              if sel_text and not self.isReadOnly():
                  self.clearSelection()
                  return True
          
          # ignore modified keys
          elif not released:
              return super(XSerialEdit, self).eventFilter(object, event)
          
          # move to the previous editor
          elif object.cursorPosition() == 0:
              if event.key() in (QtCore.Qt.Key_Backspace, QtCore.Qt.Key_Left):
                  self.goBack()
          
          # move to next editor
          elif object.cursorPosition() == object.maxLength():
              valid_chars = string.ascii_letters + string.digits
              valid_text = text != '' and text in valid_chars
              
              if valid_text or event.key() == QtCore.Qt.Key_Right:
                  self.goForward()
          
          return super(XSerialEdit, self).eventFilter(object, event)