立即从控制台获取单个字符

时间:2011-11-09 22:24:32

标签: ruby

是否可以在提供STDIN后获取每个char(无需等待返回键)?

4 个答案:

答案 0 :(得分:60)

使用Ruby 1.9.3的新getch方法可以实现这一点:

require 'io/console'
input = STDIN.getch

文档(核心):http://ruby-doc.org/core-2.3.0/IO.html#class-IO-label-io-2Fconsole

Docs(Lib):http://ruby-doc.org/stdlib-2.3.0/libdoc/io/console/rdoc/IO.html#method-i-getch

来源:https://github.com/ruby/ruby/tree/trunk/ext/io/console

答案 1 :(得分:4)

是的,有很多种方法可以做到这一点,除了宝石之外,你可以直接使用terminfo通过gem来操作termios,ncurses或stty程序。

tty_param = `stty -g`
system 'stty raw'

a = IO.read '/dev/stdin', 1

system "stty #{tty_param}"

print a

答案 2 :(得分:1)

使用Highline gem:

require "highline/system_extensions"  # gem install highline
include HighLine::SystemExtensions

print "Enter one character:  "
char = get_character
puts char.chr
来自JEG II's blog

答案 3 :(得分:1)

对于非阻止解决方案,请参阅我对https://stackoverflow.com/q/8274275/190135

的回答

“如何在没有按回车的情况下获取红宝石中的单个角色”

相关问题