Я пытаюсь записать целые числа в файл, используя ncurses и стрелки клавиатуры. Я использую nodelay, чтобы я мог записать 4 в файл, пока ничего не нажимается. ESC выходит из программы. Проблема в том, что все, что я могу записать в файлы, это 4. ESC, похоже, работает нормально, поэтому коммутатор работает. Если я выберу nodelay, программа работает, но 4 не могут быть записаны.ncurses nodelay для отзывчивой клавиши со стрелкой
Благодаря
#include <ncurses.h>
#include <fstream>
using namespace std;
int main(int argc, char* argv[])
{
ofstream outFile;
char outputFilename[80];
sprintf(outputFilename, "files/file.%s",argv[1]);
outFile.open(outputFilename, ios::out);
int ch;
initscr();
nodelay(stdscr,TRUE);
raw();
keypad(stdscr, TRUE);
noecho();
refresh();
while(1){
ch = getch();
switch(ch)
{
case KEY_UP:
outFile << 0 << endl;
break;
case KEY_DOWN:
outFile << 1 << endl;
break;
case KEY_RIGHT:
outFile << 2 << endl;
break;
case KEY_LEFT:
outFile << 3 << endl;
break;
case ERR:
outFile << 4 << endl;
break;
case 27:
outFile.close();
endwin();
return 0;
break;
default:
break;
}
refresh();
}
}