如何使用NCurses阻止C ++中的某些键

时间:2014-04-12 14:59:17

标签: c++ c input ncurses curses

我是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数组(我习惯使用Java)。

1 个答案:

答案 0 :(得分:2)

noecho()附近的某个地方拨打initscr()

这样可以避免使用不需要的输入来破坏屏幕。如果您希望用户稍后查看他们输入的内容,则需要先调用echo()