マウスのホイール回転を検出する。
概要
ホイールの回転は Gtk::Widget::on_scroll_event() で検出できる。 上下左右の方向は GdkEventScroll構造体の direction により得られる。 またshiftやctrlを押しているかどうかは state により得られる。なお Gtk::Window のデフォルトでは SCROLL イベントは off になっているので add_events( Gdk::SCROLL_MASK )する必要がある。
ソース
wheel.cpp#include <gtkmm.h> #include <iostream> class MainWin : public Gtk::Window { public: MainWin(); protected: virtual bool on_scroll_event( GdkEventScroll *event ); }; MainWin::MainWin() { // OFFになってるイベントを追加 add_events( Gdk::SCROLL_MASK ); } // ホイールの回転 bool MainWin::on_scroll_event( GdkEventScroll *event ) { std::cout << "wheel event\n" << "time = " << event->time << std::endl << "x = " << event->x << std::endl << "y = " << event->y << std::endl << "state = " << event->state << std::endl << "direction = "; switch( event->direction ){ case GDK_SCROLL_UP: std::cout << "up"; break; case GDK_SCROLL_DOWN: std::cout << "down"; break; case GDK_SCROLL_LEFT: std::cout << "left"; break; case GDK_SCROLL_RIGHT: std::cout << "right"; break; } std::cout << std::endl << std::endl; return true; } int main( int argc, char *argv[] ) { Gtk::Main kit( argc, argv ); MainWin mainwin; Gtk::Main::run( mainwin ); return 0; }
コンパイル
必要なコンパイルオプションは pkg-config を使って取得する。g++ wheel.cpp -o wheel `pkg-config gtkmm-2.4 --cflags --libs`