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。
你提到不使用
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/269323.html