tienes que deshacerte de los delays()
delay(1000);//retraso antes de repetir el ciclo
estos te bloquean el programa por eso no leen las pulsaciones.
puedes usar interrupciones pero si tu codigo es suficientemente rapido con quitar los delays sera suficiente.
mira el ejemplo que viene con arduino de blinkwithoutdelay