2011-01-05 13 views
0

小さなRubyアプリケーションでは、キャリッジリターンを待つことなくユーザー入力を受け入れたいと思います。私の理解は、端末がユーザ入力をスクリプトに直接供給するためには、cbreakモードを有効にする必要があるということです。Ruby端末アプリケーションでcbreakモードを使用するには?

スクリプトの先頭にx%[cbreak()]を実行してみましたが、うまくいかなかった。また、(n)cursesを使用して同じ結果を達成することが可能であることも見てきましたが、それは過度のようです。

これを実装する方法の提案はありますか?

おかげ

答えて

1

をチェックアウトするかもしれません(私は実装が困難見つける。)呪いを使用する必要がなくなり一つの解決策は、シェルのreadコマンドを使用することですvia %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は間違いなく(つまり、シェルコマンドを実行するためのものである)は適用されません。 cbreakは標準のcursesライブラリに定義されているので、おそらくあなたの最善の策になるでしょう。

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

編集:あなたもCurses.getch

+0

私はそれがbashコマンドであると考えて誤解していました。明確化のためにありがとう。 – Thomas

関連する問題