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