Switch Case et boucle infinie?

La description du comportement de ton programme correspond bien à ce qui est codé.
Loop
teste si une touche est appuyée
si une touche est appuyée tu exécutes une action (une fois)
si pas de touche appuyée tu ne fais rien
retour au début

Si j'ai bien compris toi tu voudrais ça:

Loop
teste si une touche est appuyée
si une touche est appuyée on mémorise la touche en question
exécute l'action associée à la touche
retour au début

Dans le premier code, si la touche est relâchée on ne fait plus rien
Dans le second code, comme la valeur de la dernière touche appuyée est mémorisée même après le relâché de la touche on continue à exécuter l'action.