2013-10-15 4 views
1

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

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

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

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

+1

Похоже было предложено до [http://stackoverflow.com/questions/8072623/get-single-char-from-console-immediately ] [1] [1]: http://stackoverflow.com/questions/8072623/get-single-char-from-console-immediately – Bala

ответ

0

попробовать что-то вроде этого:

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 
+0

@BerndPlontsch Если решить эту проблему, пожалуйста, отметьте ответ как принято, так 1) вопрос больше не является ppear как без ответа, и 2) будущие посетители узнают, является ли решение жизнеспособным. В противном случае вы можете удалить свой вопрос. Благодаря! –

Смежные вопросы