diff options
| author | nakeee <nakeee@gmail.com> | 2009-01-04 22:58:20 +0000 |
|---|---|---|
| committer | nakeee <nakeee@gmail.com> | 2009-01-04 22:58:20 +0000 |
| commit | 94fb0dc2207e2efa004e19a171013bf321a0a05a (patch) | |
| tree | 2aad3fde49e6d6b95eda81ba0e00097cf8939cdb /Source/Core/InputCommon | |
| parent | b2e96e1ca5b2a2e3b56e8d2a9eae665040ec05fb (diff) | |
Somethin'
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1777 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/InputCommon')
| -rw-r--r-- | Source/Core/InputCommon/Src/EventHandler.cpp | 81 | ||||
| -rw-r--r-- | Source/Core/InputCommon/Src/EventHandler.h | 17 | ||||
| -rw-r--r-- | Source/Core/InputCommon/Src/InputCommon.cpp | 22 |
3 files changed, 58 insertions, 62 deletions
diff --git a/Source/Core/InputCommon/Src/EventHandler.cpp b/Source/Core/InputCommon/Src/EventHandler.cpp index 50bf3715f2..158b7fe6b4 100644 --- a/Source/Core/InputCommon/Src/EventHandler.cpp +++ b/Source/Core/InputCommon/Src/EventHandler.cpp @@ -4,54 +4,51 @@ #include <wx/wx.h> #endif -bool EventHandler::RegisterEventListener(listenFuncPtr func, Keys key) -{ - if (key.inputType == KeyboardInput) - { - if (keys[key.keyCode][key.mods]) - return false; - keys[key.keyCode][key.mods] = func; - } - else if (key.inputType == MouseInput) - { - if (mouse[key.mouseButton]) - return false; - mouse[key.mouseButton] = func; - } +EventHandler::EventHandler() { + memset(keys, sizeof(listenFuncPtr) * (sf::Key::Escape+1)*8, 0); + memset(mouse, sizeof(listenFuncPtr) * (sf::Mouse::Count+1), 0); + memset(joys, sizeof(listenFuncPtr) * (sf::Joy::Count+1), 0); + } +bool EventHandler::RegisterEventListener(listenFuncPtr func, Keys key) { + if (key.inputType == KeyboardInput) { + fprintf(stderr, "Registering %d\n", key.keyCode); + if (key.keyCode == sf::Key::Count || + key.keyCode >= sf::Key::Escape || keys[key.keyCode][key.mods]) + return false; + keys[key.keyCode][key.mods] = func; + } else if (key.inputType == MouseInput) { + if (mouse[key.mouseButton]) + return false; + mouse[key.mouseButton] = func; + } + return true; } -bool EventHandler::RemoveEventListener(Keys key) -{ - if (key.inputType == KeyboardInput) - { - if (! keys[key.keyCode][key.mods]) - return false; - keys[key.keyCode][key.mods] = NULL; - } - else if (key.inputType == MouseInput) - { - if (! mouse[key.mouseButton]) - return false; - mouse[key.mouseButton] = NULL; +bool EventHandler::RemoveEventListener(Keys key) { + if (key.inputType == KeyboardInput) { + if ((key.keyCode == sf::Key::Count || key.keyCode >= sf::Key::Escape) && ! keys[key.keyCode][key.mods]) + return false; + keys[key.keyCode][key.mods] = NULL; + } else if (key.inputType == MouseInput) { + if (! mouse[key.mouseButton]) + return false; + mouse[key.mouseButton] = NULL; } - + return true; } -void EventHandler::Update() -{ - for (unsigned int i = 0; i < eventQueue.size();i++) - { - sf::Event ev = eventQueue.front(); - eventQueue.pop(); - keys[ev.Key.Code][ev.Key.Alt+2*ev.Key.Shift+4*ev.Key.Control](ev); +void EventHandler::Update() { + for (unsigned int i = 0; i < eventQueue.size();i++) { + sf::Event ev = eventQueue.front(); + eventQueue.pop(); + keys[ev.Key.Code][ev.Key.Alt+2*ev.Key.Shift+4*ev.Key.Control](ev); } } -bool EventHandler::addEvent(sf::Event *ev) -{ +bool EventHandler::addEvent(sf::Event *ev) { eventQueue.push(*ev); return true; } @@ -162,8 +159,7 @@ sf::Key::Code EventHandler::wxCharCodeToSF(int id) } #endif -void EventHandler::SFKeyToString(sf::Key::Code keycode, char *keyStr) -{ +void EventHandler::SFKeyToString(sf::Key::Code keycode, char *keyStr) { switch (keycode) { /* case sf::Key::A = 'a': sprintf(keyStr, "UP"); break; case sf::Key::B = 'b': sprintf(keyStr, "UP"); break; @@ -266,6 +262,11 @@ void EventHandler::SFKeyToString(sf::Key::Code keycode, char *keyStr) case sf::Key::F14: sprintf(keyStr, "F14"); break; case sf::Key::F15: sprintf(keyStr, "F15"); break; case sf::Key::Pause: sprintf(keyStr, "Paues"); break; - default: sprintf(keyStr, "%c", keycode); + default: + if (keycode > sf::Key::Escape) + sprintf(keyStr, "Invalid Key"); + else + sprintf(keyStr, "%c", keycode); + break; } } diff --git a/Source/Core/InputCommon/Src/EventHandler.h b/Source/Core/InputCommon/Src/EventHandler.h index b5a21788d5..d9b665df99 100644 --- a/Source/Core/InputCommon/Src/EventHandler.h +++ b/Source/Core/InputCommon/Src/EventHandler.h @@ -12,8 +12,7 @@ enum InputType JoystickInput }; -enum Modifiers -{ +enum Modifiers { UseAlt = 1, UseShift = 2, UseCtrl = 4 @@ -28,15 +27,15 @@ struct Keys sf::Mouse::Button mouseButton; }; -class EventHandler -{ +class EventHandler { + private: - listenFuncPtr keys[sf::Key::Count][8]; - listenFuncPtr mouse[sf::Mouse::Count]; - listenFuncPtr joys[sf::Joy::Count]; + listenFuncPtr keys[sf::Key::Escape+1][8]; + listenFuncPtr mouse[sf::Mouse::Count+1]; + listenFuncPtr joys[sf::Joy::Count+1]; std::queue<sf::Event> eventQueue; - -public: + public: + EventHandler(); bool RegisterEventListener(listenFuncPtr func, Keys key); bool RemoveEventListener(Keys key); void Update(); diff --git a/Source/Core/InputCommon/Src/InputCommon.cpp b/Source/Core/InputCommon/Src/InputCommon.cpp index 9d1c1910d3..2d2188477d 100644 --- a/Source/Core/InputCommon/Src/InputCommon.cpp +++ b/Source/Core/InputCommon/Src/InputCommon.cpp @@ -4,17 +4,13 @@ EventHandler *eventHandler = NULL; namespace InputCommon { - void Init() - { -#if defined GLTEST && GLTEST - // init the event handler - eventHandler = new EventHandler(); -#endif - } - - void Shutdown() - { - if (eventHandler) - delete eventHandler; - } + void Init() { + // init the event handler + eventHandler = new EventHandler(); + } + + void Shutdown() { + if (eventHandler) + delete eventHandler; + } } |
