Ho un semplice programma ncurses che legge i caratteri uno alla volta con getch() e li copia in un buffer. Il problema che sto riscontrando è la rilevazione di una pressione del tasto backspace. Ecco il codice rilevante:Utilizzo backspace con 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();
}
Ma quando si tenta di eseguire questo codice, questo è ciò che appare sullo schermo dopo aver cercato di eliminare i caratteri della linea "questo è un test":
this is a test^?^?^?
e il contenuto di buffer
sono:
this is a test
con gdb so che l'istruzione if verifica per una cancellazione/backspace è chiamata, in modo che altro dovrei fare in modo che possa eliminare cha racters?
È 'questo è un test ^? ^? ^?' Il contenuto di 'buffer', o è ciò che appare sullo schermo? In ogni caso, qual'è l'altro? –
'questo è un test ^? ^? ^?' È ciò che appare sul terminale, il buffer contiene 'questo è un test'. – Jumhyn