Problema Tastiera HID con Arduino PRO MICRO

Salve a tutti, tramite l' uso di un Arduino Pro Micro sto emulando una tastiera HID.
Tutto funziona come dovrebbe, tranne la variabile "tempo".
Mi spiego meglio, ho impostato un ritardo nella lettura del pulsante premuto e un ritardo nel loop completo, dopo aver mandato in programazzione l' emulazione funziona perfettamente, i tempi sono quelli previsti ma se stacco la periferica della porta USB e la riattacco allora i tempi si allungano tantissimo, diventa 10 o 20 volte più lento.
Da cosa potrebbe dipendere? vi allego il codice che utilizzo.
Grazie mille

const int ritardo = 10 ;     //sono i millisecondi di attesa dopo la pressione di un pulsante
const int ritardoloop =10;          //Ritardo del loop dopo aver eseguito una operazione
const int pinButton1 = 2;           // Pulsante per aumentare il valore (non invia)
const int pinButton2 = 3;           // Pulsante per diminuire il valore (non invia)
const int pinButton3 = 4;           // Pulsante per confermare e inviare il nuovo valore
const int pinButton4 = 5;           // Pulsante per Abilitare/Disabilitare l' emulazione

void setup() {
  pinMode(pinButton1, INPUT_PULLUP);
  pinMode(pinButton2, INPUT_PULLUP);
  pinMode(pinButton3, INPUT_PULLUP);
  pinMode(pinButton4, INPUT_PULLUP);
  Keyboard.begin();
}
void loop() {
  if (!digitalRead(pinButton1)) {         //se il pulsante viene premuto (a GND)
    Keyboard.press('x');
    Keyboard.releaseAll();
    delay(ritardo);
  }
  if (!digitalRead(pinButton2)) {         //se il pulsante viene premuto (a GND)
    Keyboard.press('c');
    Keyboard.releaseAll();
    delay(ritardo);
  }
  if (!digitalRead(pinButton3)) {         //se il pulsante viene premuto (a GND)
  caricaInEprom();                        //conferma e carica i nuovi valori in EPROM
 }
  if (!digitalRead(pinButton4)) {         //se il pulsante viene premuto (a GND)
    Keyboard.press('z');
    Keyboard.releaseAll();
    delay(ritardo*4);
  }
  delay(ritardoloop);
}

nessuno riesce ad essermi di aiuto?
darmi qualche indicazione su cosa potrebbe essere.
è evidente che quando la periferica viene riconosciuta successivamente qualcosa cambio nello sketch.. nelle tempistiche etc..

Datti una calmata
Pretendi una risposta dopo 5 ore? Non stiamo davanti al PC ad aspettare di poter risponderti.

Poi dacci lo sketch kompleto che compila senza doverlo prima correggere.

Ciao Uwe

:o :o :o
Guarda che io non ho preteso proprio nulla e sono calmissimo. Chiedere è lecito e rispondere è cortesia.
Sicuramente ho portato un pò fretta e chiedo scusa se mi sono lasciato prendere dall' urgenza che ho nel risolvere il problema, però anche mi sembri un pochino agitato.
Scusami ancora.

ecco lo scketch, ci mancava la funzione finale.

const int ritardo = 10 ;            //sono i millisecondi di attesa dopo la pressione di un pulsante
const int ritardoloop =10;          //Ritardo del loop dopo aver eseguito una operazione
const int pinButton1 = 2;           // Pulsante per aumentare il valore (non invia)
const int pinButton2 = 3;           // Pulsante per diminuire il valore (non invia)
const int pinButton3 = 4;           // Pulsante per confermare e inviare il nuovo valore
const int pinButton4 = 5;           // Pulsante per Abilitare/Disabilitare l' emulazione

void setup() {
  pinMode(pinButton1, INPUT_PULLUP);
  pinMode(pinButton2, INPUT_PULLUP);
  pinMode(pinButton3, INPUT_PULLUP);
  pinMode(pinButton4, INPUT_PULLUP);

  Keyboard.begin();
}
void loop() {
  if (!digitalRead(pinButton1)) {         //se il pulsante viene premuto (a GND)
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press('w');
    Keyboard.releaseAll();
    caricaInEprom();                      //carica immediatamente i nuovi dati nell' emulatore
    delay(ritardo);
  }
  if (!digitalRead(pinButton2)) {         //se il pulsante viene premuto (a GND)
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press('e');
    Keyboard.releaseAll();
    caricaInEprom();                      //carica immediatamente i nuovi dati nell' emulatore
    delay(ritardo);
  }
  if (!digitalRead(pinButton3)) {         //se il pulsante viene premuto (a GND)
  caricaInEprom();                        //conferma e carica i nuovi valori in EPROM
 }
  if (!digitalRead(pinButton4)) {         //se il pulsante viene premuto (a GND)
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press('t');
    Keyboard.releaseAll();
    delay(ritardo*6);
  }
  delay(ritardoloop);
}
void caricaInEprom(){
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press(KEY_LEFT_SHIFT);
    Keyboard.press('s');
    Keyboard.releaseAll();
    delay(ritardo);
}

Va bhè, ho imparato la lezione....
Ho fatto altre prove, anche con un altro Arduino ma il risultato non cambia.
Riporto su la discussione sperando che ci sia qualcuno che non ha letto e che possa aiutarmi in qualche modo.
Grazie