我玩弄制作一个简单的基于终端的游戏与Ruby和我目前正试图拿出的从终端读取输入的方式。

到目前为止,我一直在使用gets,但我想有比赛瞬间反应过来,而不需要一个换行符(所以你不需要按一个键,然后输入)。

我已经想通了,我需要把终端的非规范的模式,我假设我能做到这一点通过调用$stdin.ioctl。问题是,我不知道我应该通过什么样的参数或标志此,文档和搜索只是导致对底层C函数的信息。

谁能告诉我,我应该与被调用$stdin.ioctl?我使用OSX豹Terminal.app/tcsh。

编辑:这是我最后使用,这要归功于MarkusQ:

%x{stty -icanon -echo}
key = STDIN.read(1)
有帮助吗?

解决方案

您的问题是红宝石之外。

最简单的答案:包住IO在%×{的stty -raw回波}和%×{的stty -raw回波}与stty的改变模式

您可能会想这样做,确保退出处理程序做出一定的模式被设置回来时,你退出。

- MarkusQ

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top