diff options
| author | nakeee <nakeee@gmail.com> | 2009-01-02 14:10:52 +0000 |
|---|---|---|
| committer | nakeee <nakeee@gmail.com> | 2009-01-02 14:10:52 +0000 |
| commit | a2a5d0a066909ca8a0d1c902b7f85f0a7d98ea11 (patch) | |
| tree | 33710f6441af3fd66fbea4f93f008da53c8d7818 /Source/Core | |
| parent | dbd9d5fb2d77d3f22072ccba7712f90b3c09104d (diff) | |
some more work on pad/event handler
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1733 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/Src/EventHandler.cpp | 27 | ||||
| -rw-r--r-- | Source/Core/Core/Src/EventHandler.h | 7 |
2 files changed, 28 insertions, 6 deletions
diff --git a/Source/Core/Core/Src/EventHandler.cpp b/Source/Core/Core/Src/EventHandler.cpp index c93e16d2ad..a6a6bb76da 100644 --- a/Source/Core/Core/Src/EventHandler.cpp +++ b/Source/Core/Core/Src/EventHandler.cpp @@ -15,6 +15,20 @@ bool EventHandler::RegisterEventListener(listenFuncPtr func, Keys key) { 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; + } + + return true; +} + void EventHandler::Update() { for (unsigned int i = 0; i < eventQueue.size();i++) { sf::Event ev = eventQueue.front(); @@ -45,9 +59,9 @@ bool EventHandler::TestEvent (Keys k, sf::Event e) } // Taken from wxw source code -int EventHandler::wxCharCodeWXToSF(int id) +sf::Key::Code EventHandler::wxCharCodeToSF(int id) { - int sfKey; + sf::Key::Code sfKey; switch (id) { // case WXK_CANCEL: sfKey = sf::Key::Cancel; break; @@ -121,13 +135,18 @@ int EventHandler::wxCharCodeWXToSF(int id) case WXK_F15: sfKey = sf::Key::F15; break; // case WXK_NUMLOCK: sfKey = sf::Key::Num_Lock; break; // case WXK_SCROLL: sfKey = sf::Key::Scroll_Lock; break; - default: sfKey = id <= 255 ? id : 0; + default: + if ((id >= 'a' && id <= 'z') || + (id >= '0' && id <= '9')) + sfKey = (sf::Key::Code)id; + else + sfKey = sf::Key::Count; // Invalid key } return sfKey; } -void EventHandler::SFKeyToString(unsigned int 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; diff --git a/Source/Core/Core/Src/EventHandler.h b/Source/Core/Core/Src/EventHandler.h index 0141f46802..1de00ecb75 100644 --- a/Source/Core/Core/Src/EventHandler.h +++ b/Source/Core/Core/Src/EventHandler.h @@ -35,11 +35,14 @@ private: std::queue<sf::Event> eventQueue; public: bool RegisterEventListener(listenFuncPtr func, Keys key); + bool RemoveEventListener(Keys key); void Update(); bool addEvent(sf::Event *e); static bool TestEvent (Keys k, sf::Event e); - static int wxCharCodeWXToSF(int id); - static void SFKeyToString(unsigned int keycode, char *keyStr); + static sf::Key::Code wxCharCodeToSF(int id); + static void SFKeyToString(sf::Key::Code keycode, char *keyStr); }; +extern EventHandler *eventHandler; + #endif |
