1 /* -*-c++-*- Present3D - Copyright (C) 1999-2006 Robert Osfield 2 * 3 * This software is open source and may be redistributed and/or modified under 4 * the terms of the GNU General Public License (GPL) version 2.0. 5 * The full license is in LICENSE.txt file included with this distribution,. 6 * 7 * This software is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * include LICENSE.txt for more details. 11 */ 12 13 #ifndef SDLINTEGRATION 14 #define SDLINTEGRATION 15 16 #include <osgGA/Device> 17 18 #include <SDL.h> 19 #include <SDL_events.h> 20 #include <SDL_joystick.h> 21 22 #include <vector> 23 #include <map> 24 25 class JoystickDevice : public osgGA::Device 26 { 27 public: 28 29 JoystickDevice(); 30 31 typedef std::vector<int> ValueList; 32 typedef std::map<int, int> ButtonMap; 33 34 virtual bool checkEvents(); 35 addMouseButtonMapping(int joystickButton,int mouseButton)36 void addMouseButtonMapping(int joystickButton, int mouseButton) 37 { 38 _mouseButtonMap[joystickButton] = mouseButton; 39 } 40 getMouseButtonMapping(int joystickButton)41 int getMouseButtonMapping(int joystickButton) 42 { 43 ButtonMap::const_iterator itr = _mouseButtonMap.find(joystickButton); 44 if (itr != _mouseButtonMap.end()) return itr->second; 45 else return -1; 46 } 47 addKeyMapping(int joystickButton,int key)48 void addKeyMapping(int joystickButton, int key) 49 { 50 _keyMap[joystickButton] = key; 51 } 52 getKeyMapping(int joystickButton)53 int getKeyMapping(int joystickButton) 54 { 55 ButtonMap::const_iterator itr = _keyMap.find(joystickButton); 56 if (itr != _keyMap.end()) return itr->second; 57 else return -1; 58 } 59 60 protected: 61 62 virtual ~JoystickDevice(); 63 64 void capture(ValueList& axisValues, ValueList& buttonValues) const; 65 66 SDL_Joystick* _joystick; 67 int _numAxes; 68 int _numBalls; 69 int _numHats; 70 int _numButtons; 71 bool _verbose; 72 73 ValueList _axisValues; 74 ValueList _buttonValues; 75 ButtonMap _mouseButtonMap; 76 ButtonMap _keyMap; 77 }; 78 79 #endif 80