Немедленно получить одиночный char с консоли

Можно ли получить каждый char из STDIN после его предоставления (не дожидаясь возврата ключа)?

Ответы

Ответ 1

Да, существует множество способов сделать это, и помимо драгоценных камней вы можете напрямую манипулировать с помощью terminfo через драгоценные камни для termios, ncurses или stty program.

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

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

system "stty #{tty_param}"

print a

Ответ 3

Используйте Highline gem:

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

print "Enter one character:  "
char = get_character
puts char.chr

из блог JEG II.

Ответ 4

Для неблокирующего решения см. мой ответ fooobar.com/info/23000/...

"Как получить один символ в рубине без нажатия клавиши ввода