我在Go中有一个REPL应用程序应该对键盘按下事件做出反应(每个键按下键的操作不同)但是ReadString在阅读之前需要按下返回键os.Stdin:
import (
"bufio"
"os"
)
for {
reader := bufio.NewReader(os.Stdin)
key, _ := reader.ReadString('\n')
deferKey(key)
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能对Go中的关键新闻事件作出反应?
游戏引擎通常实现这种功能。它们通常也与平台无关(通常至少是 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!
}
Run Code Online (Sandbox Code Playgroud)
获取当前按下的键的列表只需迭代映射并列出值为 Down 的键即可。
| 归档时间: |
|
| 查看次数: |
5578 次 |
| 最近记录: |