а зачем все останавливать? Останавливаешь запросивший процесс, ставишь флажочек, куда тебе ввод с клавы перенаправлять
ну да, если процесс запросил ввод, а ввода нет, то его надо заморозить до тех пор пока ему ввод не появится. В ядре это сделать не очень просто