我有这样一个程序,从标准输入读取用户输入:
var input string = ""
exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
exec.Command("stty", "-F", "/dev/tty", "-echo").Run()
var b []byte = make([]byte, 1)
for {
input += string(b)
}
我希望在for循环中加入某种条件,以便当用户按下“enter”(例如)或按下“backspace”时删除字符串中的一个字符。但是,我无法弄清楚这两个键的字节数组或字符串表示形式。我该如何解决?enter只打印\w,backspace打印一个未定义的字符。
"\n"
,而退格键则是"\b"
或"\x7f"
的字符串形式。 - Vatinegithub.com/nsf/termbox-go
和(或)github.com/jteeuwen/keyboard/termbox
(它利用前者)?我有一种感觉,您选择了一种相当奇特的方法来解决您的任务。相反,您应该将终端切换到“原始”模式,并处理它发送给您的任何数据。termbox
可以为您完成繁重的工作。 - kostixtermbox-go
处理键盘输入的演示代码。请参见:https://github.com/nsf/termbox-go/blob/master/_demos/keyboard.go#L660。 - kostix