在一个小型Ruby应用程序中,我希望无需等待回车即可接受用户输入。我的理解是,需要启用cbreak模式,以便终端将用户输入直接提供给脚本。
我尝试在脚本顶部运行x%[cbreak()],但这不起作用。我也看到有可能使用(n)curses来获得相同的结果,虽然这看起来有点矫枉过正。
有人建议如何实施吗?
由于
答案 0 :(得分:1)
cbreak
是一个curses函数调用,因此%x
肯定不适用(用于执行shell命令)。 cbreak
在标准curses库中定义,因此这可能是您最好的选择。
请参阅:
http://ruby-doc.org/stdlib/libdoc/curses/rdoc/classes/Curses.html#M000280
修改:您还可以查看Curses.getch
答案 1 :(得分:1)
避免使用curses(我发现很难实现)的一个解决方案是通过read
使用shell的%x
命令。它似乎没有感觉正确地进入shell来做一些看起来像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