Easiest way is to use
with the hole, and set pointer-events to none
so events can pass through to the
under. Of course there are many other ways to handle events such as wrapping them with a
and handling events on it.
You don't need to limit yourself to the basic shapes and use complicated clipping. Make things felxible enough so you can copy&paste path data generated by tools like inkscape.