Cheguei no resultado esperado, gostaria que verificassem se minha lógica foi válida.
<canvas width="600" height="400"></canvas>
<script>
var tela = document.querySelector("canvas");
var pincel = tela.getContext("2d");
pincel.fillStyle = "grey";
pincel.fillRect(0,0,600,400);
function desenhaBolinha(evento){
var x = evento.x - tela.offsetLeft;
var y = evento.y - tela.offsetTop;
var shift = evento.shiftKey;
pincel.fillStyle = cores[indiceCorAtual];
if(shift == true){
pincel.beginPath();
pincel.arc(x, y, 10 , 0 , 2 * 3.14);
pincel.fill();
}if(shift == false){
pincel.beginPath();
pincel.arc(x, y, 30 , 0 , 2 * 3.14);
pincel.fill();
}
}
tela.onclick = desenhaBolinha;
var cores = ["red","green","blue"];
var indiceCorAtual = 0;
function mudaCor() {
indiceCorAtual++;
if(indiceCorAtual >= cores.length) {
indiceCorAtual = 0;
}
return false;
}
tela.oncontextmenu = mudaCor;
</script>