我有一个简单的 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/