Всем привет, пишу интерфейс на Ncurses для программы на C. Надо выводить окна в консоли с полем ввода строки. Строка вводится, но не обрабатываются Esc-последовательности (ввод, стрелки, etc). Код приведён, в нём функция StartUi инициализирует терминал и готовит его к работе (рисует рамку), а AskString запрашивает строку. Подскажите, что делать.
WINDOW *term, *mainwin;
unsigned int termx, termy;
void StartUi(){
setlocale(LC_CTYPE, "ru_RU.UTF8");
term = initscr();
cbreak();
noecho();
termx = getmaxx(term);
termy = getmaxy(term);
mainwin = newwin(termy-2, termx-2, 1, 1);
border(0, 0, 0, 0, 0, 0, 0, 0);
mvaddstr(0, 2, "<qyu 0.001>");
move(1,1);
refresh();
};char *AskString(char *req){
int *input, buffer;
unsigned int reqlen, inplen;
PANEL *dialogp;
WINDOW *dialogw;
echo();
input=0;
for(reqlen=0;*(reqlen+req);reqlen++);
dialogw = newwin(3, 4+reqlen, 4, 10);
keypad(dialogw, TRUE);
wborder(dialogw, 0, 0, 0, 0, 0, 0, 0, 0);
dialogp = new_panel(dialogw);
mvwaddstr(dialogw, 0, 2, req);
mvwchgat(dialogw, 1, 2, reqlen, A_REVERSE, 0, 0);
wrefresh(dialogw);echo();
for(inplen=0;;){
inplen++;
input = realloc(input, sizeof(int)*inplen);
wmove(dialogw, 1, inplen);
buffer = wgetch(dialogw);
*(input+inplen-1) = buffer;
wrefresh(dialogw);
switch(buffer){
case KEY_ENTER:
noecho();
del_panel(dialogp);
delwin(dialogw);
return input;
break;
case KEY_BACKSPACE:
inplen--;
*(input+inplen-1) = 0;
break;
case KEY_LEFT:
inplen--;
break;
};
};
};