cursesでメニュー
@@SelChars = ['0'..'9','a'..'z','A'..'Z'].inject([]){|i,j|i.push(*j.to_a)} def select_cu(&block) require "curses" ch = "" Curses.init_screen() begin while true @@SelChars.size.times do |i| break if i >= @menu.size Curses.setpos(i % 20 , i / 20 * 40) s = NKF.nkf("-Se",@menu[i]) Curses.addstr("#{@@SelChars[i]}. #{s}") end Curses.refresh ch = Curses.getch if block block.call(@@SelChars.index(ch.chr)) else break end end ensure Curses.close_screen end @@SelChars.index(ch.chr) end