]> git.mxchange.org Git - simgear.git/blob - simgear/canvas/events/input_event_demo.cxx
Add simple keyboard event demo application.
[simgear.git] / simgear / canvas / events / input_event_demo.cxx
1 // Keyboard event demo. Press some keys and get some info...
2 //
3 // Copyright (C) 2014  Thomas Geymayer <tomgey@gmail.com>
4 //
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Library General Public
7 // License as published by the Free Software Foundation; either
8 // version 2 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 // Library General Public License for more details.
14 //
15 // You should have received a copy of the GNU Library General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
18
19 #include "KeyboardEvent.hxx"
20
21 #include <osgViewer/Viewer>
22 #include <iostream>
23
24 class DemoEventHandler:
25   public osgGA::GUIEventHandler
26 {
27   public:
28     bool handle( const osgGA::GUIEventAdapter& ea,
29                  osgGA::GUIActionAdapter&,
30                  osg::Object*,
31                  osg::NodeVisitor* )
32     {
33       switch( ea.getEventType() )
34       {
35         case osgGA::GUIEventAdapter::PUSH:
36         case osgGA::GUIEventAdapter::RELEASE:
37         case osgGA::GUIEventAdapter::DRAG:
38         case osgGA::GUIEventAdapter::MOVE:
39         case osgGA::GUIEventAdapter::SCROLL:
40           return handleMouse(ea);
41         case osgGA::GUIEventAdapter::KEYDOWN:
42         case osgGA::GUIEventAdapter::KEYUP:
43           return handleKeyboard(ea);
44         default:
45           return false;
46       }
47     }
48
49   protected:
50     bool handleMouse(const osgGA::GUIEventAdapter&)
51     {
52       return false;
53     }
54
55     bool handleKeyboard(const osgGA::GUIEventAdapter& ea)
56     {
57       simgear::canvas::KeyboardEvent evt(ea);
58       std::cout << evt.getTypeString() << " '" << evt.key() << "'"
59                                        << ", loc=" << evt.location()
60                                        << ", char=" << evt.charCode()
61                                        << ", key=" << evt.keyCode()
62                                        << std::endl;
63       return true;
64     }
65 };
66
67 int main()
68 {
69   osgViewer::Viewer viewer;
70
71   osg::ref_ptr<DemoEventHandler> handler( new DemoEventHandler );
72   viewer.addEventHandler(handler);
73
74   viewer.setUpViewInWindow(100, 100, 200, 100, 0);
75   return viewer.run();
76 }