我正在用 golang 编写一个文本界面,如果您在打印时键入,则会干扰正在显示的文本。我知道“stty -echo”将停止回显键盘的输出,而“stty echo”会重新启用它,但是当我编写如下函数时:
func disableKeyboard() {
c := exec.Command("stty -echo")
c.Stdout = os.Stdout
c.Run()
}
func enableKeyboard() {
c := exec.Command("stty echo")
c.Stdout = os.Stdout
c.Run()
}
这些对我的程序输出没有影响。我发送这些命令的方式有问题吗?
类似于:
disableKeyboard()
time.Sleep(time.Second)
enableKeyboard()
不起作用。我目前使用的是 Mac。
最佳答案
crypto/ssh/terminal package (由于某种原因,它不是标准库)具有可以满足您需要的代码,尽管它使用相当低级的系统调用来实现它。您可能可以将其调整为您想要执行的操作(通过使用 syscall.Stdin 作为文件描述符)。不过,正如 Flimzy 指出的那样,这仍然不会禁用键盘输入,它只是抑制它回显到终端,因此如果稍后依赖它,您可能仍然需要刷新输入。
关于go - 如何在golang终端打印时禁用键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46776014/