【问题标题】:Setting non-canonical mode on stdin with Ruby使用 Ruby 在标准输入上设置非规范模式
【发布时间】:2010-10-09 14:13:48
【问题描述】:

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

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

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

谁能告诉我应该用什么称呼$stdin.ioctl?我在 OSX Leopard 上使用 Terminal.app/tcsh。

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

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

【问题讨论】:

    标签: ruby terminal stdin ioctl


    【解决方案1】:

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

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

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

    -- MarkusQ

    【讨论】:

    • 您的 stty 信息让我走上了正轨。看了看,找到了我需要的东西。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2020-06-11
    • 2016-01-06
    相关资源
    最近更新 更多