Cómo registrar el evento onkeydown para el lienzo HTML5

Me gustaría escribir una demostración de juego de serpientes con HTML5<canvas> elemento. He intentado registrar el evento Keyboard (onkeydown), pero no funciona.

Código:

   canvas.onkeydown = divertDirection; //don't work
   //canvas.addEventListener("keydown", divertDirection, false);  //don't work

   //根据键盘来调振蛇移动的方向
   function divertDirection(ev) {
        console.log(ev);
    }

    //register this event for widnow
   window.addEventListener("keydown", divertDirection, false); //ok

Respuestas a la pregunta(2)

Su respuesta a la pregunta