switch case anidados (Solucionado)

Como no consegui hacerlo funcionar, solo de esta manaera, lo malo es que el waitForKey() pe detiene el codigo hasta que precione la opcion elegida

#include <Keypad.h>


int led_1 =8;
int led_2 =9;
int led_3=11;
int led_4 =12;

const byte Filas = 4; //KeyPad de 4 filas
const byte Cols = 4; //y 4 columnas
byte Pins_Filas[] = {33,35,37,39}; //Pines Arduino para las filas.
byte Pins_Cols[] = {41,43,45,47}; // Pines Arduino para las columnas.

int tiempo = 250;
unsigned long inicia=0;


char cadena[17]; 
char Teclas [Filas][Cols] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
Keypad Teclado = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols);

char leds;
char pulsacion;


void setup() {
 Serial.begin(9600);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
  
  pulsacion = Teclado.getKey();
  
  if(millis() - inicia>=tiempo){
      inicia = millis();
      digitalWrite(6, !digitalRead(6));
  }
  
  switch (pulsacion) {
    
      case 'A' :
            leds = Teclado.waitForKey();
            switch (leds) 
               {
          
         case '1':
              digitalWrite(led_1, !digitalRead(led_1));
              break;
         case '2':
              digitalWrite(led_2, !digitalRead(led_2));
              break;
              }
              break;
           
      case 'B' :
          leds = Teclado.waitForKey();
        switch (leds){
                
        case '3':
              digitalWrite(led_3, !digitalRead(led_3));
              break;
          case '4':
              digitalWrite(led_4, !digitalRead(led_4));
              break;
               }
              break;

       }   
  
  }