1

我正在使用 Ruby 制作一个简单的基于终端的游戏,我目前正在尝试想出一种从终端读取输入的方法。

到目前为止,我一直在使用gets,但我想让游戏立即做出反应而不需要换行符(所以你不需要按一个键,然后输入)。

我发现我需要将终端置于非规范模式,我假设我可以通过调用$stdin.ioctl. 问题是,我不确定我应该传递什么参数或标志,文档和搜索只会导致有关底层 C 函数的信息。

谁能告诉我我应该打电话给我$stdin.ioctl吗?我在 OSX Leopard 上使用 Terminal.app/tcsh。

编辑:这就是我最终使用的,感谢 MarkusQ:

%x{stty -icanon -echo}
key = STDIN.read(1)
4

1 回答 1

3

您的问题不在红宝石范围内。

最简单的答案:将 IO 包装在 %x{stty -raw echo} 和 %x{stty -raw echo} 中以使用 stty 更改模式。

您可能需要确保退出处理程序以确保在退出时重新设置模式。

——马库斯

于 2009-02-25T07:15:47.660 回答