Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > cursesライブラリ > Curses::MouseEventクラス > bstate

instance method Curses::MouseEvent#bstate

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_ALSO] Curses.#mousemaskCurses.#getmouse

class Curses::MouseEvent