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.