Como Activar o desactivar un teclado numérico????

Hola, tengo un pequeño problema, mi idea es activar y desactivar un teclado, Si le pico a un Botón se quede Bloqueado el teclado, y le presiono a otro y se activa el teclado.

en el sig. Código muestro lo que tengo, Mi falla en el código es que tengo que mantener presionado el botón y funciona, pero quiero que a la hora de presionado el botón se bloqueé por completo sin tener que dejarlo presionado...

while(DigitalRead(D7))
{
DigitalWrite(D3, false);
DigitalWrite(D4, false);
DigitalWrite(D5, false);
DigitalWrite(D6, false);
}
while(DigitalRead(D8))
{
DigitalWrite(D3, true);
DigitalWrite(D4, true);
DigitalWrite(D5, true);
DigitalWrite(D6, true);
delay(100);
}

Tambien lo intente con el "if" pero es la misma, tengo que dejar aprecio nado el botón para que funcione, si no no jala...

Espero y me ayuden por-favor =/

Tienes que programar una función que cada vez que detecte la pulsación del pulsador 1 active la bandera 1 y desactive la bandera 2. Cuando detecte la pulsación del pulsador 2 desactive la bandera 1 y active la bandera 2. Con esas banderas activas o desactivas el teclado.

y como seria masomenos en codigo eso que tu dices?

buenas, es un teclado numerico tipico 4x3? si es asi hay alguna que otra libreria para poder usarlo sin liarse mucho

ise un teclado con puros puchboton cada boton es independiente, solo tengo 6 botones 4 de comandos, 1 que bloquea los 4 botones de comando y el oteo que desbloquea los 4 botones de mando, no pude consegir el teclado ya hecho, soy algo nuevo en esto del arduino, lo compre por que no me agrado prorgamar los Pic 17f8xa, siempre tenia errores y era muy tediosa la prorgamacion.

Lo he pensado más despacio y con una sola bandera es suficiente.

Pseudocódigo:

boolean BanderaPulsadores = true

Si detecto pulsador1{
BanderaPulsadores = true
}

Si detecto pulsador2{
BanderaPulsadores = false
}

El resto del código más o menos tendrías:

Si detecto PulsadorX ejecuto lo que sea

Y ahora tiene que ser:

Si ((detecto PulsadorX) y BanderaPulsadores == true) ejecuto lo que sea

No hay que activar y desactivar las pullup tal como tienes en el trozo de código que pusiste.