【发布时间】:2023-03-11 16:38:02
【问题描述】:
我打算使用 haskell 创建一个游戏,但无法弄清楚如何捕获键盘上的向上、向下、向左和向右等键事件。 我试过 getChar 但它没有捕获这些。 (或者我可能不知道它是怎么做的)
同时捕获 CTRL、ALT 组合也很棒。
【问题讨论】:
我打算使用 haskell 创建一个游戏,但无法弄清楚如何捕获键盘上的向上、向下、向左和向右等键事件。 我试过 getChar 但它没有捕获这些。 (或者我可能不知道它是怎么做的)
同时捕获 CTRL、ALT 组合也很棒。
【问题讨论】:
异步键盘 IO 是特定于操作系统的,因此您需要一个库来抽象它。
至于其中的“处理”部分,此类库通常允许您为事件注册回调。例如,您可以从它们中使用 TQueue from STM 将事件推送到其中,然后在纯代码中按顺序处理它们。
GLFW-b demo 在实践中有一个很好的例子来说明这种技术。如果您想创建一个文本游戏,那么为此拉一整件事可能会有点矫枉过正;也许寻找一些 ncurses 绑定?
【讨论】: