2011-01-05 61 views
0

在一個小的Ruby應用程序中,我希望接受用戶輸入而不必等待回車。我的理解是需要啓用cbreak模式才能使終端直接將用戶輸入提供給腳本。如何在Ruby終端應用程序中使用cbreak模式?

我試着在腳本的頂部簡單地運行x%[cbreak()],但是沒有奏效。我也看到可以使用(n)詛咒來獲得相同的結果,儘管這看起來像是過度殺傷。

有沒有人有關於如何實施這個建議?

感謝

回答

1

一種解決方案是使用shell的read命令通過%x。它似乎不適合做一些看起來像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 
1

cbreak是一個詛咒函數調用,所以%x絕對不適用(即用於執行shell命令)。 cbreak在標準curses庫中定義,所以這可能是你最好的選擇。

參見:
http://ruby-doc.org/stdlib/libdoc/curses/rdoc/classes/Curses.html#M000280

編輯:你也可以看看這避免了使用詛咒(我覺得這很難實現)Curses.getch

+0

我誤以爲這是一個bash命令誤解了cbreak。感謝澄清。 – Thomas 2011-01-05 17:47:42

相關問題