diff options
author | David Turner | 2014-06-28 14:59:08 +0100 |
---|---|---|
committer | David Turner | 2014-06-28 14:59:08 +0100 |
commit | cb596113a784e4894b5a34787b80144d2d3561e2 (patch) | |
tree | e5be7a920b1d0de20db1424a81899cf995f11c4d /common | |
parent | 95ba430d11a09ec6fbc997550074b940223eebf5 (diff) | |
parent | ad07da959dca9580d5a832ee69303d19fd21b578 (diff) | |
download | scummvm-rg350-cb596113a784e4894b5a34787b80144d2d3561e2.tar.gz scummvm-rg350-cb596113a784e4894b5a34787b80144d2d3561e2.tar.bz2 scummvm-rg350-cb596113a784e4894b5a34787b80144d2d3561e2.zip |
Merge pull request #461 from digitall/vkeybdFix
Add trigger for Virtual Keyboard on long press of Middle Mouse Button
Diffstat (limited to 'common')
-rw-r--r-- | common/EventMapper.cpp | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/common/EventMapper.cpp b/common/EventMapper.cpp index 30896d7514..b92116cbe7 100644 --- a/common/EventMapper.cpp +++ b/common/EventMapper.cpp @@ -30,23 +30,45 @@ namespace Common { List<Event> DefaultEventMapper::mapEvent(const Event &ev, EventSource *source) { List<Event> events; Event mappedEvent; +#ifdef ENABLE_VKEYBD + // Trigger virtual keyboard on long press of more than 1 second + // of middle mouse button. + const uint32 vkeybdTime = 1000; + + static bool vkeybd = false; + static uint32 vkeybdThen = 0; + + if (ev.type == EVENT_MBUTTONDOWN) { + vkeybdThen = g_system->getMillis(); + } + + if (ev.type == EVENT_MBUTTONUP) { + if ((g_system->getMillis() - vkeybdThen) >= vkeybdTime) { + mappedEvent.type = EVENT_VIRTUAL_KEYBOARD; + + // Avoid blocking event from engine. + addDelayedEvent(100, ev); + } + } +#endif + if (ev.type == EVENT_KEYDOWN) { if (ev.kbd.hasFlags(KBD_CTRL) && ev.kbd.keycode == KEYCODE_F5) { mappedEvent.type = EVENT_MAINMENU; } #ifdef ENABLE_VKEYBD - else if (ev.kbd.keycode == KEYCODE_F7 && ev.kbd.hasFlags(0)) { + else if (ev.kbd.hasFlags(KBD_CTRL) && ev.kbd.keycode == KEYCODE_F7) { mappedEvent.type = EVENT_VIRTUAL_KEYBOARD; - // Avoid blocking F7 events from engine. + // Avoid blocking CTRL-F7 events from engine. addDelayedEvent(100, ev); } #endif #ifdef ENABLE_KEYMAPPER - else if (ev.kbd.keycode == KEYCODE_F8 && ev.kbd.hasFlags(0)) { + else if (ev.kbd.hasFlags(KBD_CTRL) && ev.kbd.keycode == KEYCODE_F8) { mappedEvent.type = EVENT_KEYMAPPER_REMAP; - // Avoid blocking F8 events from engine. + // Avoid blocking CTRL-F8 events from engine. addDelayedEvent(100, ev); } #endif |