c - 在 ncurses 中使用退格键

标签 c ncurses

我有一个简单的 ncurses 程序设置,它使用 getch() 一次读取一个字符并将它们复制到缓冲区中。我遇到的问题是检测到按下退格键。相关代码如下:

while((buffer[i] = c = getch()) != EOF) {
    ++i;
    if (c == '\n') {
        break;
    }
    else if (c == KEY_BACKSPACE || c == KEY_DC || c == 127) {
        i--;
        delch();
        buffer[i] = 0;
    }
    refresh();
}

但是当尝试运行此代码时,这是在尝试从“this is a test”行中删除字符后出现在屏幕上的内容:

this is a test^?^?^?

buffer的内容是:

this is a test

使用 gdb 我知道正在调用检查删除/退格的 if 语句,那么我还应该做什么才能删除字符?

最佳答案

看起来像 ^? 是当您输入 DEL 字符时屏幕上回显的内容。

您可能会调用 delch() 两次,但随后您必须弄清楚哪些字符作为双字符(或更多)序列回显。

您最好的选择可能是调用 noecho() 并自己显式打印字符。

关于c - 在 ncurses 中使用退格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11387572/

相关文章:

c - 如何在C函数中返回错误登录?

c - Linux 上的 UDP 套接字;发送成功但无法接收大缓冲区

使用 mvapich2 与 openmpi 比较 MPI 线程死锁期间的 CPU 利用率

c - 为什么没有在 `float` 中定义 `printf` 的说明符?

c - ncurses:非重叠窗口仍然会互相破坏

python - 在 ncurses 的指定位置添加相同符号的快捷方式是什么?

c++ - 如何将 PDCurses 链接到 Windows 上的 C++ 应用程序?

c - C中fgetc/fputc和fread/fwrite的速度比较

c++ - 无法从新函数中修改类变量

c - 读取设备状态报告 ANSI 转义序列回复