code: def mouseMoveEvent(self, ev):
      lpos = ev.position() if hasattr(ev, "position") else ev.localPos()
      if not hasattr(self, "mousePos"):
          self.mousePos = lpos
      diff = lpos - self.mousePos
      self.mousePos = lpos
  
      if ev.buttons() == QtCore.Qt.MouseButton.LeftButton:
          if (
              ev.modifiers()
              & QtCore.Qt.KeyboardModifier.ControlModifier
          ):
              self.pan(diff.x(), diff.y(), 0, relative="view")
          else:
              self.orbit(-diff.x(), diff.y())
      elif ev.buttons() == QtCore.Qt.MouseButton.MiddleButton:
          if (
              ev.modifiers()
              & QtCore.Qt.KeyboardModifier.ControlModifier
          ):
              self.pan(diff.x(), 0, diff.y(), relative="view-upright")
          else:
              self.pan(diff.x(), diff.y(), 0, relative="view-upright")
  
imports: from OpenGL.GL import *
  import OpenGL.GL.framebufferobjects
  from math import cos, radians, sin, tan
  import numpy
  from ..None import Vector
  from ..None import functions
  from ..None import getConfigOption
  from ..Qt import QtCore, QtGui, QtWidgets
label_desc: Use image node_id 26 for calling the GLViewMixin obj's underlying member method code with example usage: obj.mouseMoveEvent(ev) without return types