How to stop backspace from appearing in nCurses using C?
我目前正在编写一个 ncurses shell,为了读取输入,逐个字符地读取它很重要,因此我使用的是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | while ((command[i] = mvwgetch(promptwin, promptline, posx)) != '\ ') { if (command[i] == 7) { // if entered character is a backspace i =-2; posx =- 2; mvwdelch(promptwin, promptline, posx); mvwdelch(promptwin, promptline, posx - 1); command[i] = '\\0'; } else { posx++; posyx[1] = posx; wmove(promptwin, promptline, posx); } i++; } |
需要读取字符以跟踪光标在屏幕上的位置。在我的代码中,我尝试解决这个问题,但它仍然显示这些字符。 PS:在linux上工作。
已解决
原来问题是退格的代码是 127。因此它没有被识别。为了处理退格,它现在执行以下代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | if(c == 127 || c == 8){ //if character inserted is backspace or delete if(posx != tcount) { mvwprintw(promptwin, promptline, (posx + 1),""); mvwprintw(promptwin, promptline, posx,""); mvwprintw(promptwin, promptline, (posx - 1),""); wmove(promptwin, promptline, (posx - 2)); command[(chara - 1)] = '\\0'; chara--; posx--; posyx[1] = posx; } else { mvwprintw(promptwin, promptline, (posx + 1),""); mvwprintw(promptwin, promptline, posx,""); } } else { command[chara] = c; posx++; posyx[1] = posx; wmove(promptwin, promptline, posx); chara++; } |
首先,7 不是退格键——7 是铃声。您想要 8。您还可以检查 KEY_BACKSPACE。
你提到不使用