Как я могу заблокировать определенные ключи в C ++ с помощью NCurses

0

Я новичок в 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).

  • 0
    Пожалуйста, покажите свой код. Также выберите язык, который вы используете. C и C ++ - это разные языки.
Теги:
input
curses
ncurses

1 ответ

2
Лучший ответ

Вызовите noecho() где-то рядом с initscr().

Это позволит избежать скручивания экрана с помощью нежелательного ввода. Если вы хотите, чтобы ваши пользователи увидели, что они потом печатают, вам нужно будет вызвать echo() раньше.

  • 0
    Я хочу повторить буквы и знаки препинания в цикле. Я не хочу отображать клавиши типа стрелок / колесика мыши. Если бы я сделал noecho (), тогда ВСЕ ввод был бы заблокирован. Я только хочу, чтобы этот СПЕЦИАЛЬНЫЙ вход был заблокирован (или иметь определенные ключи в белом списке).
  • 1
    Вот как это работает: отключите «автоматический» вывод с помощью noecho() а затем распечатайте все, что вы хотите напечатать явно самостоятельно (например, с помощью printw() ).
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню