> for that it works to draw first the black, then the white keys, then vis 0,vis 1.
> It's not logical, but it seems to work.

also works for me. and it helps for filtering the right key events (see my solution).

Seems like a magic for me... Anyway I adopt Christof mixed with Joćo solutions at this patch.

But arises some questions...

Once I need:
  1. change color of key while mouse click is on at these key

that's easy on its own, get the pointer from the output of [struct] when you click on it. use it to change the color with [set ...... color].

  2. once mouse click is on, and mouse cursor move around the gop area, the keyboard will respond. Like a finger pressing and moving around a real keyboard.
  3. the key are velocity sensitive around y axis at first click.

I'm thinking to map the gop are, create a system of coordinates to draw keyboard and using [cyclone/mousestate] and/or only [iemguts/receivecanvas].

In this way maybe is better implement the Joćo suggestion of parameterize the template and implement the keys with more points and implement the control with a gop coordinate system.

you can't click and drag on data-s, so your other idea is better (and get the pointers to make the display look accordingly). 
Once I did a sampler what I had an horizontal line of marks indicating places in a sample; also using [mousestate] to get the mouse actions (position in window + clicks) I could extrapolate where I was in the window, and what should sound. 

Joao