1 #include <msp/core/application.h>
2 #include <msp/graphics/simplewindow.h>
3 #include <msp/input/keyboard.h>
4 #include <msp/input/mouse.h>
5 #include <msp/io/print.h>
6 #include <msp/stringcodec/codec.h>
7 #include <msp/stringcodec/utf8.h>
8 #include <msp/time/timedelta.h>
9 #include <msp/time/utils.h>
13 class Ev: public RegisteredApplication<Ev>
16 Graphics::SimpleWindow window;
17 Input::Keyboard keyboard;
26 void key_press(unsigned);
27 void key_release(unsigned);
28 void character(StringCodec::unichar);
29 void button_press(unsigned);
30 void button_release(unsigned);
31 void axis_motion(unsigned, float, float);
39 window.signal_close.connect(sigc::bind(sigc::mem_fun(this, &Ev::exit), 0));
40 keyboard.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::key_press), false));
41 keyboard.signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::key_release), false));
42 keyboard.signal_character.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::character), false));
43 mouse.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::button_press), false));
44 mouse.signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::button_release), false));
45 mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::axis_motion), false));
46 window.set_title("Event tester");
53 Time::sleep(Time::msec);
56 void Ev::key_press(unsigned key)
58 IO::print("key_press: %s\n", keyboard.get_button_name(key));
61 void Ev::key_release(unsigned key)
63 IO::print("key_release: %s\n", keyboard.get_button_name(key));
66 void Ev::character(StringCodec::unichar ch)
68 IO::print("character: %s\n", StringCodec::encode<StringCodec::Utf8>(StringCodec::ustring(1, ch)));
71 void Ev::button_press(unsigned btn)
73 IO::print("button_press: %s\n", mouse.get_button_name(btn));
76 void Ev::button_release(unsigned btn)
78 IO::print("button_release: %s\n", mouse.get_button_name(btn));
81 void Ev::axis_motion(unsigned axis, float value, float rel)
83 IO::print("axis_motion: %s %.3f %+.3f\n", mouse.get_axis_name(axis), value, rel);