在 ncurses 中使用退格键

2024-05-12

我设置了一个简单的 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^?^?^?

和内容buffer are:

this is a test

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


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

你也许可以打电话delch()两次,但随后您必须找出哪些字符作为两个字符(或更多)序列进行回显。

你最好的选择可能是打电话noecho()并自己显式打印字符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ncurses 中使用退格键 的相关文章

随机推荐