@grandpasp "don't like forever loops". But @kriblo prefer it (or at least detecting keys in some kind of loop). The Scratch "when key pressed"-hat-blocks have their limitations, even if you use the "any"-option and detect multiple keys in a custom block (as @kriblo do in this demo). Use the Arrow keys to see/feel the difference. Try pressing multiple keys at once. Go diagonally, or suddenly reverse etc. All new/active code in this remix by @kriblo and me (@grandpasp).
Since "when <> key pressed" is a one-shot event, I (@grandpasp) just added a repeat block (in the "when any key pressed" sprite, that's only active while a key is being pressed) to make the two methods comparable.