Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > cursesライブラリ > Curses::MouseEventクラス
クラスの継承リスト: Curses::MouseEvent < Object < Kernel < BasicObject
マウスの位置や状態などの情報を取得するためのクラスです。 ncurses を利用して curses ライブラリをインストールした場合にだけ、 本クラスが定義されています。
本クラスのインスタンスを直接生成することはできません。 Curses.#getmouse で生成します。
なお、ncurses でマウスのイベントを取得できるようにするには、 いくつかの条件が必要なようです。 詳しくは man ページの curs_mouse(3X) の BUGS を参照ください。
例: クリックした位置などを取得する。
require "curses" Curses.init_screen begin Curses.cbreak Curses.stdscr.keypad(true) Curses.mousemask(Curses::BUTTON1_CLICKED | Curses::BUTTON2_CLICKED | Curses::BUTTON3_CLICKED | Curses::BUTTON4_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 s = "mouse event = #{'0x%x' % m.bstate}, axis = (#{m.x},#{m.y},#{m.z})" Curses.setpos(Curses.lines / 2 + 1, Curses.cols / 2 - (s.length / 2)) Curses.addstr(s) Curses.refresh end end ensure Curses.close_screen end
bstate -> Integer
[permalink][rdoc]マウスのボタンがクリックされたとか、押しっぱなしといった状態を返します。
戻り値の各ビットが、4 つのボタンを状態を表現しています。 次の定数を使って、状態を取得します。
ボタン 1 を離した状態
ボタン 1 を押した状態
ボタン 1 をクリックした状態
ボタン 1 をダブルクリックした状態
ボタン 1 をトリプルクリックした状態
ボタン 2 を離した状態
ボタン 2 を押した状態
ボタン 2 をクリックした状態
ボタン 2 をダブルクリックした状態
ボタン 2 をトリプルクリックした状態
ボタン 3 を離した状態
ボタン 3 を押した状態
ボタン 3 をクリックした状態
ボタン 3 をダブルクリックした状態
ボタン 3 をトリプルクリックした状態
ボタン 4 を離した状態
ボタン 4 を押した状態
ボタン 4 をクリックした状態
ボタン 4 をダブルクリックした状態
ボタン 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.#mousemask、Curses.#getmouse
eid -> Integer
[permalink][rdoc]マウスを識別するための ID を返します。 複数のマウスを使用している場合に、それらを識別するために使用します。
[SEE_ALSO] Curses.#getmouse
x -> Integer
[permalink][rdoc]マウスのイベントが発生した文字の位置の X 座標を返します。
[SEE_ALSO] Curses.#getmouse
y -> Integer
[permalink][rdoc]マウスのイベントが発生した文字の位置の Y 座標を返します。
[SEE_ALSO] Curses.#getmouse
z -> Integer
[permalink][rdoc]マウスのイベントが発生した文字の位置の Z 座標を返します。
[SEE_ALSO] Curses.#getmouse