【问题标题】:How can I check for keyboard input without stopping execution?如何在不停止执行的情况下检查键盘输入?
【发布时间】:2015-02-04 00:31:51
【问题描述】:

什么命令/关键字用于在不停止执行的情况下检查键盘输入?我想构建一个连续运行的循环,并且在循环的每次迭代中,我都想检查键盘输入。如果用户按下了右键,我的程序就会对其进行操作;如果没有,它将继续运行。

编辑 我希望它在不按回车键的情况下工作。就像游戏运行时一样,它会检查用户是否按下箭头键,然后对按键进行操作,如果没有按下则继续。

【问题讨论】:

  • 您希望它在没有返回/回车键的情况下按一次按键工作?
  • 是的。这正是我想要的。

标签: ruby


【解决方案1】:

通过what I could find 和一些黑客攻击,我设法将一些东西放在一起,这些东西会立即回显您在命令行中运行时按下的键。

require 'io/console'
loop do
  p STDIN.getch
end

但正如引用的答案所提到的,您需要捕获 SIGTERM,以免被困在程序中:Signal.trap("INT") { exit }

所以你的程序的核心和它的所有处理都存在于那个主循环中,每一次循环都会从标准输入中获取一个字符。

【讨论】:

  • 谢谢。这适用于所有字母数字和标点符号键。它不显示箭头键、退格键或回车键。最重要的是,您让我走上了正确的道路,并为我提供了必要时调整我的想法所需的工具。
【解决方案2】:

你不能用简单的方法做到这一点。最常见的方法是使用curses gem

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    相关资源
    最近更新 更多