Как завершить ввод строки без нажатия enter?
Программа должна считывать отдельные нажатия, а не ввод строки целиком.

Каждый раз после нажатия ввод (строка) должен формироваться из ранее нажатых клавиш. Пока он не валидный - продолжать ожидать следующие нажатия. Как только ввод стал валидным - принять его.

Такое обычно практикуют при вводе подтверждающего кода из смс. Как только ввёл нужное количество цифр и/или правильный код, принять его.
Через GetAsyncKeyState() , что то вводить , потом если пару или три секунды ничего не вводится уже делать то что нужно , либо когда совпадает с какой либо комбинацией