Antes altere as configurações do termios, salve . Essa informação é a mesma que você pode ver com stty -a
.
Por exemplo
$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
O valor mostrado após erase
é o caractere a que você está se referindo como "backspace". Dependendo das convenções do sistema que podem ser ^H
(8 ou backspace ASCII) ou ^?
(127 ou ASCII DEL).
Nas configurações do termios, por exemplo,
#include <termios.h>
...
struct termios data;
tcgetattr(0, &data);
então
data.c_cc[VERASE]
é o mesmo caracter erase (com algumas advertências quando os dados nunca foram definidos: stty
mostrará "undef").
Ao contrário de algumas das outras configurações, o significado do caractere erase ainda é relevante nos modos raw / cbreak, já que é uma configuração que informa ao driver do terminal o que seu terminal deve enviar. Não faz mal testar as duas possibilidades, caso as configurações de stty
estejam incorretas ...
Leitura adicional: