我有一个设置在〜(ICANON)模式的终端,想知道如何使用我得到的退格数据(这是^?)所以我可以发送一个putchar('\ b')到控制台回到一个空间。
编辑:
struct termios new;
newt.c_lflag &= ~(ICANON);
tcsetattr(STDIN_FILENO, TCSANOW, &newt); // Set the console to send each char straight away.
char c;
while ((c = getchar()) != '\n){
// If the backspace key is pressed, the symbols ^? appear on the screen. How do I
// Interpret the backspace to send back a '\b' char to the screen. I don't want the ^?
// to appear on the screen when the backspace is pressed but rather the cursor move one
// space to the left.
}
由于
答案 0 :(得分:1)
当终端处于原始模式(~ICANON
)时, BkSp 键将输出字节0x7f
,终端不会将其解释为退格。 (这是因为它可以与击键 ^ H 区分开。)如果你希望这个击键被终端解释为退格,你将需要:
~ECHO
),然后0x7f
作为0x08
(\b
)回显。 (您可能还需要将\n
作为\r\n
回显。)