Я новичок в C/C++, и я делаю простой текстовый пользовательский интерфейс с NCurses
.
Всякий раз, когда я прокручиваю вверх/вниз с помощью колеса мыши или нажимаю клавиши со стрелками, символы эхо-символов консоли, такие как:
"[[A^[[C^[[B^[[D"
чтобы показать, что я нажал клавиши.
Я хотел бы остановить их от эха и только базовые ключи эха (пунктуация и буквы).
Вот мой основной цикл. Я в основном хочу, чтобы это была моя собственная консоль с командами, которые я создаю.
string input;
char inputArr[80];
while (input != "q" && input != "quit" && input != "exit" && input != "leave") {
printw(" > ");
refresh();
getstr(inputArr);
input = inputArr;
if (input.substr(0, 3) != "someCommand") {
printw("\n ~ %s\n\n", inputArr);
refresh();
} else
execCmd();
}
quit();
По большей части я считаю, что это C++, но у меня есть функция C (которая использует libCurl).
Кроме того, нет ли более чистого способа читать строки с помощью NCurses? Мне не нравится использовать char arrays (я привык к Java).
Вызовите noecho()
где-то рядом с initscr()
.
Это позволит избежать скручивания экрана с помощью нежелательного ввода. Если вы хотите, чтобы ваши пользователи увидели, что они потом печатают, вам нужно будет вызвать echo()
раньше.
noecho()
а затем распечатайте все, что вы хотите напечатать явно самостоятельно (например, с помощью printw()
).