0

我试图在不使用 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方法的行为,但无需在按下一个字符后按下回车键。

基本上我想打印“..doing stuff..”,直到我按下键盘上的某个键,但我不想使用 enter。

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

4

1 回答 1

0

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

另一种方法是用于select轮询 STDIN 是否可读。您的终端可能处于行缓冲状态,因此您需要在收到单次击键之前对其进行调整。这是 Curses 可以为您处理的事情。

于 2013-04-18T01:57:25.270 回答