kind=defined
names=bstate
visibility=public

--- bstate -> Integer

マウスのボタンがクリックされたとか、押しっぱなしといった状態を返します。

戻り値の各ビットが、4 つのボタンを状態を表現しています。
次の定数を使って、状態を取得します。

: Curses::BUTTON1_RELEASED
  ボタン 1 を離した状態
: Curses::BUTTON1_PRESSED
  ボタン 1 を押した状態
: Curses::BUTTON1_CLICKED
  ボタン 1 をクリックした状態
: Curses::BUTTON1_DOUBLE_CLICKED
  ボタン 1 をダブルクリックした状態
: Curses::BUTTON1_TRIPLE_CLICKED
  ボタン 1 をトリプルクリックした状態
: Curses::BUTTON2_RELEASED
  ボタン 2 を離した状態
: Curses::BUTTON2_PRESSED
  ボタン 2 を押した状態
: Curses::BUTTON2_CLICKED
  ボタン 2 をクリックした状態
: Curses::BUTTON2_DOUBLE_CLICKED
  ボタン 2 をダブルクリックした状態
: Curses::BUTTON2_TRIPLE_CLICKED
  ボタン 2 をトリプルクリックした状態
: Curses::BUTTON3_RELEASED
  ボタン 3 を離した状態
: Curses::BUTTON3_PRESSED
  ボタン 3 を押した状態
: Curses::BUTTON3_CLICKED
  ボタン 3 をクリックした状態
: Curses::BUTTON3_DOUBLE_CLICKED
  ボタン 3 をダブルクリックした状態
: Curses::BUTTON3_TRIPLE_CLICKED
  ボタン 3 をトリプルクリックした状態
: Curses::BUTTON4_RELEASED
  ボタン 4 を離した状態
: Curses::BUTTON4_PRESSED
  ボタン 4 を押した状態
: Curses::BUTTON4_CLICKED
  ボタン 4 をクリックした状態
: Curses::BUTTON4_DOUBLE_CLICKED
  ボタン 4 をダブルクリックした状態
: Curses::BUTTON4_TRIPLE_CLICKED
  ボタン 4 をトリプルクリックした状態

例:

  require "curses"
  
  Curses.init_screen
  begin
    Curses.cbreak
    Curses.stdscr.keypad(true)
    Curses.mousemask(Curses::BUTTON1_PRESSED | Curses::BUTTON1_RELEASED |
                     Curses::BUTTON1_CLICKED | Curses::BUTTON1_DOUBLE_CLICKED |
		     Curses::BUTTON1_TRIPLE_CLICKED)
    s = "Click"
    Curses.setpos(Curses.lines / 2, Curses.cols / 2 - (s.length / 2))
    Curses.addstr(s)
    Curses.refresh
    if Curses.getch == Curses::KEY_MOUSE
      m = Curses.getmouse
      if m
        a = []
        if m.bstate & Curses::BUTTON1_PRESSED
          a.push("pressed")
        end
        if m.bstate & Curses::BUTTON1_RELEASED
          a.push("released")
        end
        if m.bstate & Curses::BUTTON1_CLICKED
          a.push("clicked")
        end
        if m.bstate & Curses::BUTTON1_DOUBLE_CLICKED
          a.push("double-clicked")
        end
        if m.bstate & Curses::BUTTON1_TRIPLE_CLICKED
          a.push("triple-clicked")
        end
        s = a.join(" ")
        Curses.setpos(Curses.lines / 2 + 1, Curses.cols / 2 - (s.length / 2))
        Curses.addstr(s)
        Curses.refresh
      end
    end
  ensure
    Curses.close_screen
  end

@see [[m:Curses.#mousemask]]、[[m:Curses.#getmouse]]

