如何在输入中捕获Tab键击? (ncurses的)

时间:2016-08-06 12:02:09

标签: c ncurses

我正在使用ncurses,我正在使用getstr()获取输入字符串。我希望通过Tab键击来实现类似自动完成的功能。但是,我没有看到用getstr()捕捉Tab的方法。我试过这个:

char input = 0;
while (input != '\n')
    switch (input = getch())
    {
        case '\t':
            printw("Got Tab\n");
            break;
        default:
            addch(input);
            break;
    }

但是在这种情况下,我必须为Backspace,Delete等编写自己的处理程序,这是不可取的,而且必须重新发明轮子。

2 个答案:

答案 0 :(得分:1)

也许试试:

 switch (input = getch())
 {
     case KEY_STAB:
         printw("Got Tab\n");
         break;
     default:
         addch(input);
         break;
 }

Complete list of keys

答案 1 :(得分:0)

这个对我来说很好用:

#include <cstdio>
#include <conio.h>

int main() {
    char input = 0;
    while (input != '\n') {
        input = getch();
        switch (input)
        {
            case '\t':
                printf("T");
                break;
            case '\b':
                printf("\b \b");
                break;
            default:
                printf("%c", input);
                break;
        }
    }
}

使用最新的g++