我正在尝试从命令行立即读取字符,而不使用Enter。 我正在使用的ruby(ruby 1.9.3p374)代码如下:

require 'io/console'

ch = STDIN.getch
puts ch

直到现在,一切都很好,但现在我想将此代码放入执行其他操作的无限循环中,例如

loop do
  puts "..doing stuff.."
  ch = STDIN.getch
  if ch == 'q'
    break
  end
end

但是此代码始终会迫使我们在每次打印之间按一个键。 我想要一种类似于STDIN.read_nonblock方法的行为,但不必在按一个字符后按Enter键。

基本上我想打印“ ..正在做..”,直到我按键盘上的某个键,但我不想使用Enter。

任何帮助将不胜感激。 谢谢

===============>>#1 票数:0

您始终可以使用内置的curses库来处理您的交互。 它非常强大,可用于构造键盘驱动的工具,例如文本编辑器。

替代方法是使用select轮询STDIN是否可读。 您的终端可能处于行缓冲状态,因此您需要在接收到单个击键之前进行调整。 这是Curses可以为您处理的。

  ask by Paulo Magalhães translate from so

未解决问题?本站智能推荐: