2

我正在尝试构建自己的控制台,并且正在使用以下语句来获取 RAW 访问权限,因此我可以实现一些高级功能,例如通过按 TAB 键实现在 BASH shell 中实现的自动建议功能。

system("/bin/stty raw")

使用此键时,回车键(和其他键)无法正常运行,当我按下回车键时,它会显示 ^M 并且不会转到下一行。

  1. 如何将 RAW 控制台设置为在收到 ^M 时转到下一行

  2. 我也可以将 Shell 设置为不显示按下的键,以便我可以使用 putchar() 将字符发送回控制台(因此按下时不显示 ^M)。

谢谢

4

1 回答 1

3

如何将 RAW 控制台设置为在收到 ^M 时转到下一行

当您读取 ^M 时,您将适当的控制代码写入控制台。原始模式的全部意义在于控制台执行识别行尾、退格等操作,因为您想自己处理它们。一旦你这样做了,你就需要处理所有这些事情。

我可以将外壳设置为不显示按下的键吗

当然。关掉echo。使用该stty命令,您可以使用stty raw -echo,但如果您是从 C 程序执行此操作,则最好使用终端 API。看man tcsetattr

于 2014-03-21T07:11:23.767 回答