Обработка ввода пользователем одного символа без нажатия клавиши ввода

Я пишу крошечный интерактивный инструмент командной строки, предлагающий пользователю нажать цифровую клавишу. Это должно продолжаться сразу после первого нажатия/ввода клавиши.

В настоящее время я делаю это, чтобы зафиксировать ввод пользователя

puts "yes, please ..."
gets.chomp

... однако для этого требуется нажать «ввод» для подтверждения ввода. Как вернуть введенное значение сразу после первого нажатия клавиши?


person Bernd    schedule 15.10.2013    source источник
comment
Похоже, об этом уже спрашивали [stackoverflow.com/questions/8072623/ [1]: stackoverflow.com/questions/8072623/   -  person Bala    schedule 15.10.2013


Ответы (1)


Попробуйте что-то вроде этого:

puts 'Do you want to proceed? y/n'

loop do
  system("stty raw -echo")
  c = STDIN.getc
  system("stty -raw echo")

  case c
  when 'y'
    puts 'Yes'
    break
  when 'n'
    puts 'No'
    break
  else
    puts 'Please type "y" or "n"'
  end
end
person Patrick Oscity    schedule 15.10.2013