Когда я создавал приложение PDCurses, я столкнулся с проблемой, когда во время ожидания ввода он просто зависал и не передавал никакие данные программе, даже если технически считывал ввод.Мне удалось свести его к следующему коду:
#include <curses.h>
main()
{
initscr(); // initialize screen
noecho(); // don't echo the keys to the screen
cbreak(); // no waiting for enter key
clear(); // clear screen
while (getch() != 13) // loop until they press ENTER
mvaddch(0, 0, 'a'); // GETS PAST HERE
getch(); // HANGS; WINDOWS IS RECEIVING INPUT FROM THE KEYBOARD (turn off noecho()), BUT NEVER RETURNS IT TO THE ACTUAL PROGRAM
return 0;
}
Чтобы представить его в контексте того, как это отображалось в моей программе, у меня был цикл в main()
, который бесконечно вызывал функцию, котораяотображать меню, пока не будет нажата клавиша ENTER.Однако, если пользователь нажал определенную клавишу, находясь в меню, он вызвал бы другое меню и получил бы ввод от этой функции.В приведенном выше коде я упростил его, просто выполнив два последовательных вызова getch()
.
Мой вопрос: почему он зависает только после проверки цикла для клавиши ENTER ??Разве это не должно быть просто?
Кроме того, мое приложение PDCurses работает на Windows cmd.(13 = ENTER; KEY_ENTER здесь не работает)