def METHOD_NAME(self, ev):
    """Handler for mouse or finger move"""
    if not self.drawing:
        return
    # New mouse / finger position
    X, Y = self.mouse_pos(ev)
    if self.tool == 'pen':
        ctx.beginPath()
        ctx.moveTo(self.X0-zleft, self.Y0-ztop)
        ctx.lineTo(X-zleft, Y-ztop)
        ctx.stroke()
        ctx.closePath()
        self.X0, self.Y0 = X, Y
    elif self.tool == 'select':
        ctx.putImageData(self.store, 0, 0)
        ctx.strokeRect(self.X0-zleft, self.Y0-ztop, 
            X-self.X0, Y-self.Y0)
    elif self.tool == 'selected':
        if X>=self.X0 and X<=self.X1 and Y>=self.Y0 and Y<=self.Y1:
            zone.style.cursor = 'move'
        else:
            zone.style.cursor = 'default'
    elif self.tool == 'rubber':
        ctx.strokeStyle = '#808'
        ctx.rect(X-zleft, Y-ztop,
            self.rubber_size, self.rubber_size)
        ctx.fill()