It's up to individual applications how they implement user input. All of this is entirely possible in modern terminal emulators - look at the micro text editor, for example.
I guess most shells (bash, zsh, etc.) keep things "traditional" for backwards compatibility reasons.