Here's my take (see image below, which is a side view):
Three strips of spring steel ("shim stock" or "feeler gauge stock", etc) cantilevered with spacers between them. Piano key is attached to the top strip.
When the key is depressed contact will be made with the middle strip of metal (which is attached to a digital pin) registering a digital high. When the key is depressed farther both strips will contact the bottom strip and ground out registering a digital low. The time between the high and low is the velocity.
Of course there are resistances needed here -- ~5K between each middle strip and the Arduino and ~500R between the 5V and GND strip. The top strip should be pretty thick (for durability) and the middle strip should be very close to the top strip. You might want to put a bend in the middle strip near the end so it contacts the bottom strip (which could be a contact sheet for all the keys) more easily.
