Tengo un programa ncurses simple configurado que lee caracteres de uno en uno con getch() y los copia en un búfer. El problema que estoy teniendo es detectar presionar la tecla de retroceso. Aquí está el código correspondiente:Usando el espacio de fondo 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();
}
Pero cuando se trata de ejecutar este código, esto es lo que aparece en la pantalla después de tratar de eliminar caracteres de la línea "esto es una prueba":
this is a test^?^?^?
y el contenido de buffer
son:
this is a test
Con gDB sé que la sentencia if comprobación de un borrado/retroceso está siendo llamado, así que ¿qué más debo hacer para que pueda eliminar cha racters?
Es 'esto es una prueba ^? ^? ^?' El contenido de 'buffer', ¿o es lo que aparece en la pantalla? De cualquier manera, ¿cuál es el otro? –
'esto es una prueba ^? ^? ^?' Es lo que aparece en la terminal, el buffer contiene 'esto es una prueba '. – Jumhyn