bHive hace esto muy bien y viene de un fondo Actionscript que encontré bastante fácil de usar, tuve que mirar las demostraciones ya que la documentación no es útil.
Para ayudarle ..
square = engine.createShape({
shape: 'square',
style: 'filled',
backgroundColor: '#000',
width: 120,
height: 20,
x: 20,
y: 100
});
para hacer cualquier acciones del ratón que necesita para añadirlo a un objeto de clip.
clip = engine.createClip({ x: 20, y: 20 });
Entonces
clip.add(square);
añadir un detector de eventos
clip.addEventListener('onmouseover',function(e) { some code ... });
clip.addEventListener('onclick',function(e) { some code ... });
En el bucle que necesita para luego dibujar el cuadrado.
clip.draw();
estoy usando la fuente de las versiones parciales de programa que me ayude a través de lo que tal vez echa un vistazo a http://www.bhivecanvas.com/demos/cargame.php como que tiene vuelcos y onclicks en ella.
Sí, SVG es lo que sería la forma más fácil de seguir. Hasta donde yo sé, no hay bibliotecas de lienzos que admitan el tipo de detección de eventos que desee. –