gpt4 book ai didi

c - termios.h 如何使用特殊字符

转载 作者:行者123 更新时间:2023-11-30 15:36:27 26 4
gpt4 key购买 nike

我有一个设置为 ~(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.
}

谢谢

最佳答案

当终端处于原始模式 (~ICANON) 时,BkSp 键将输出字节 0x7f,该字节不会被解释为按终端退格键。 (这样可以将其与击键 ^H 区分开来。)如果您希望终端将此击键解释为退格键,则需要:

  1. 在终端上禁用回显 (~ECHO),然后
  2. 在输入时回显大多数字符,但将 0x7f 回显为 0x08 (\b)。 (您可能还需要将 \n 回显为 \r\n。)

关于c - termios.h 如何使用特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22572983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com