Mam prostą konfigurację programu ncurses, która czyta znaki po jednym na raz z getch() i kopiuje je do bufora. Problem, który mam, wykrywa naciśnięcie klawisza Backspace. Oto odpowiedni kod:Korzystanie z Backspace z ncurses
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();
}
Ale podczas próby uruchomienia tego kodu, to jest to, co pojawia się na ekranie po próbując usunąć znaki z wiersza „To jest test”:
this is a test^?^?^?
a zawartość buffer
są:
this is a test
z gdb wiem, że jeśli oświadczenie sprawdzania dostępności delete/Backspace jest nazywany, więc co jeszcze powinienem robić tak, że mogę usunąć cha znaki?
Czy "to jest test ^? ^? ^?" Zawartość "bufora", czy jest to, co pojawia się na ekranie? Tak czy inaczej, co jest drugim? –
'to jest test ^? ^? ^?' Jest tym, co pojawia się na terminalu, bufor zawiera 'to jest test'. – Jumhyn