在使用Ruby标准输入设置不规范的模式
题
我玩弄制作一个简单的基于终端的游戏与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
不隶属于 StackOverflow