sam3x8e gpio interrupt not working as expeced
I'm wondering if your code works at all:

pio_handler_set(PIOB, ID_PIOB, PIO_PA4, (PIO_IT_FALL_EDGE ), keyPressHandler);
NVIC_EnableIRQ((IRQn_Type) ID_PIOB);
pio_enable_interrupt(PIOB, PIO_PA4);


I guess you should replace PIOB with PIOA since your GPIO is located in PortA. Also ID_PIOB doesn't sound right. If you post constants, you should post their values, otherwise we cannot really comment on them. Since this sounds like something from the ASF framework, I would guess that this constant is actually correct (or if ID_PIOA would maybe be better), but I cannot say for sure.

Still, this doesn't explain why your code triggers multiple times. I would rather think this is actually a hardware related problem which is named bouncing. You will need to de-bounce your keys to get a solid solution. For an overview of key-debouncing algorithms you might want to check this out. 

Do you have the chance to see if this is really a physical issue (bouncing) or a software issue? You might want to monitor the state of the input using a scope to get a reliable answer for this.