code: def on_mouse_move(self, event):
      if event.is_dragging:
          dxy = event.pos - event.last_event.pos
          button = event.press_event.button
  
          if button == 1:
              self.points.transform.move(dxy)
          elif button == 2:
              center = event.press_event.pos
              self.points.transform.zoom(
                  np.exp(dxy * (0.01, -0.01)), center
              )
  
          self.update()
  
file_path: vispy/examples/basics/visuals/custom_visual.py
imports: from __future__ import division
  import numpy
  from vispy import app
  from vispy.gloo import VertexBuffer
  from vispy.visuals import Visual
  from vispy.visuals.transforms import STTransform
label_desc: Use image node_id 2 for calling the Canvas obj's underlying member method code with example usage: obj.on_mouse_move(event) without return types