die Led blinkt nur solange wie ich die Taste gedrückt halte
Da sind Ideen gefragt!

Z.B. könnte man eine 2. Variable zusätzlich zu key definieren, z.B.:
uint8_t choice;

Die Variable wird dann gleich key gesetzt, wenn key ungleich 0 ist:
if (key) choice = key;
Dadurch ändert sich choice nur, wenn wirklich eine andere Taste gedrückt wird.

Natürlich müßten dann die if-Abfragen für die Blinker geändert werden, indem man anstelle von key choice nimmt:
if(choice == 4) {
...

Probier's mal aus!

Gruß Dirk