小编典典

如何对Go中的按键事件做出反应?

go

我在Go中有一个REPL应用,该应用应该对键盘按下事件(每个按下的按键的动作有所不同)做出反应,但是ReadString希望在阅读之前按下返回键os.Stdin

import (
    "bufio"
    "os"
)

for {
    reader := bufio.NewReader(os.Stdin)
    key, _ := reader.ReadString('\n')
    deferKey(key)
}

我如何对Go中的按键事件做出反应?


阅读 437

收藏
2020-07-02

共1个答案

小编典典

游戏引擎通常实现这种功能。它们通常也与平台无关(通常至少是Windows,Linux,Mac OS
X)。例如尝试Azul3D的键盘库

逻辑就像我的头上一样

watcher := keyboard.NewWatcher()
// Query for the map containing information about all keys
status := watcher.States()
left := status[keyboard.ArrowLeft]
if left == keyboard.Down {
    // The arrow to left is being held down
    // Do something!
}

要获得当前当前按下的键的列表,只需遍历地图并列出value为Down的键即可。

2020-07-02