我在 Go 中有一个 REPL 应用程序,它应该对键盘按下事件做出反应(每个按键按下的不同动作),但ReadString希望在阅读之前按下返回键os.Stdin:
import (
"bufio"
"os"
)
for {
reader := bufio.NewReader(os.Stdin)
key, _ := reader.ReadString('\n')
deferKey(key)
}
如何对 Go 中的按键事件做出反应?
哔哔one
浏览 169回答 2
2回答
翻阅古今
游戏引擎通常实现这种功能。它们通常也几乎与平台无关(通常至少是 Windows、Linux、Mac OS X)。尝试例如Azul3D 的键盘库。逻辑是在我的头顶像watcher := keyboard.NewWatcher()// Query for the map containing information about all keysstatus := watcher.States()left := status[keyboard.ArrowLeft]if left == keyboard.Down { // The arrow to left is being held down // Do something!}获取当前按下的键的列表是迭代映射并列出 value 为 Down 的键的问题。