これを行うためのより良い方法が絶対に必要です。
temp_file ||= Tempfile.new()
system("stty -echo; tput u7; read -d R x; stty echo; echo ${x#??} > #{temp_file.path}")
temp_file.gets.chomp.split(';').map(&:to_i)
基本的に、サブプロセスでこの質問のbashスクリプトを実行し、リダイレクトされたファイルから出力を読み取ります。
Cや宝石を使わずに(stdlibは大丈夫です)、これを行うより良い方法は何ですか? 相互互換性はそれほど重要ではありません。