2011-01-05 37 views
0

在一个小的Ruby应用程序中,我希望接受用户输入而不必等待回车。我的理解是需要启用cbreak模式才能使终端直接将用户输入提供给脚本。如何在Ruby终端应用程序中使用cbreak模式?

我试着在脚本的顶部简单地运行x%[cbreak()],但是没有奏效。我也看到可以使用(n)诅咒来获得相同的结果,尽管这看起来像是过度杀伤。

有没有人有关于如何实施这个建议?

感谢

回答

1

一种解决方案是使用shell的read命令通过%x。它似乎不适合做一些看起来像Ruby的STDIN应该负责的东西,但它很简单并且可行。

#! /usr/bin/ruby 

puts "Please enter your first initial" 

str = %x[read -s -n1 keypress; echo $keypress] 

puts "Your first inital is " + str 
1

cbreak是一个诅咒函数调用,所以%x绝对不适用(即用于执行shell命令)。 cbreak在标准curses库中定义,所以这可能是你最好的选择。

参见:
http://ruby-doc.org/stdlib/libdoc/curses/rdoc/classes/Curses.html#M000280

编辑:你也可以看看这避免了使用诅咒(我觉得这很难实现)Curses.getch

+0

我误以为这是一个bash命令误解了cbreak。感谢澄清。 – Thomas 2011-01-05 17:47:42

相关问题