aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorDavid Turner2014-06-28 14:59:08 +0100
committerDavid Turner2014-06-28 14:59:08 +0100
commitcb596113a784e4894b5a34787b80144d2d3561e2 (patch)
treee5be7a920b1d0de20db1424a81899cf995f11c4d /common
parent95ba430d11a09ec6fbc997550074b940223eebf5 (diff)
parentad07da959dca9580d5a832ee69303d19fd21b578 (diff)
downloadscummvm-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.cpp30
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