进入实时控制台的输入和输出

时间:2019-08-18 18:51:55

标签: go

有什么方法可以控制端子的输入和输出? 例如,我按向左箭头键并在控制台上打印“ left”。

我将尝试使用https://github.com/eiannone/keyboard,但它不起作用。 https://github.com/nsf/termbox-go和其他类似的东西太复杂了。

bufio.NewReader(os.Stdin)
bufio.NewScanner(os.Stdin)
fmt.Scanln(&input)

需要点击Enter

func main() {
    e := make(chan bool)
    go changeInput()
    <-e
}

func changeInput() {
    for {
        inp := "" // ????
        if inp == "Left arrow" {
            fmt.Println("left")
        }
    }
}

我发现的解决方案不起作用。我想实时从用户输入中获取数据。

1 个答案:

答案 0 :(得分:0)

您可能需要阅读一些有关“原始”终端模式的信息,本文的第2章和第3章为您提供了更多详细信息(使用C语言,但也适用于Go):https://viewsourcecode.org/snaptoken/kilo/index.html