If I wanted to measure the length of time a key was pressed, I would use a microprocessor, which can be programmed to measure times. However, this does not fully address the velocity question. The microprocessor approach can measure length of depression at microsecond precision - can you somehow relate velocity to 'depression time'?
On another line of thought, I built a velocity measurer, based on 2 laser beams. When they were broken and remade, velocity was measured using pretty simple microprocessor code. This does not seem practical in your application, but perhaps a variation of it would work. I am thinking of a user-built keyboard, with 3 layers of foil, and button cutouts. When pressed, the first contact would be between layers 1 and 2 of the foil, and then layer 3. The speed beteen layers 1, 2 and 3 would give you a key press velocity. The theory is sound but I wouldn't care to have to make it.
=OR= How about a keypad with break before make contacts? The break time would be measured, also giving velocity.