マウスのホイール回転を検出する。
概要
ホイールの回転は 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`