行模式下的终端:不回显选项卡

时间:2014-09-19 19:21:27

标签: c terminal

我正在做一个shell,我想添加自动完成功能。为此,我查看了termios.h

我以规范(=原始)模式传递终端,如下所示:

struct termios settings;
tcgetattr(0, &settings);
settings.c_lflag &= ~ICANON;
tcsetattr (0, TCSANOW, &settings);

我处理完这样的角色后:

 while((c = getchar()) != '\n') { 
    if(c == 127) { //backspace
        printf("\b \b\b \b\b \b");
        continue;
    }
    if(c == 9) { //tab
        printf("\b\b\b\b");
        //do something
    }
 }

我的问题是我没有设法撤消选项卡的回显,因为它并不总是要移除的空格数量相同,我不知道如何做到这一点。最好的不是打印标签,但我也不知道如何处理这个......

那么有一种不打印标签的简单方法吗? (或者如果没有,撤消它。)

0 个答案:

没有答案