From 5e6d05c816ce5dce1f9d4273f53cfd1369a908e3 Mon Sep 17 00:00:00 2001 From: D G Turner Date: Sun, 20 Apr 2014 02:44:36 +0100 Subject: VKEYBD: Add code to open virtual keyboard on middle mouse button. This removes the need for a hardware keyboard to trigger the use of the virtual keyboard via F7 if using the default event mapper. As middle button is rarely used by games, this should not cause any conflicts. Though to avoid this possibility, the event is passed to the engine. --- common/EventMapper.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'common/EventMapper.cpp') diff --git a/common/EventMapper.cpp b/common/EventMapper.cpp index 30896d7514..de1907d141 100644 --- a/common/EventMapper.cpp +++ b/common/EventMapper.cpp @@ -30,6 +30,15 @@ namespace Common { List DefaultEventMapper::mapEvent(const Event &ev, EventSource *source) { List events; Event mappedEvent; +#ifdef ENABLE_VKEYBD + if (ev.type == EVENT_MBUTTONUP) { + 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; -- cgit v1.2.3 From e07a224a9a899055dc2b95b23e7740e250a748a1 Mon Sep 17 00:00:00 2001 From: D G Turner Date: Sun, 20 Apr 2014 03:31:50 +0100 Subject: VKEYBD: Modify code to open vkeybd on long press of middle mouse button. This should massively reduce any chance of a conflict with mouse usage in games and is still easy for a person with mobility issues to perform. --- common/EventMapper.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'common/EventMapper.cpp') diff --git a/common/EventMapper.cpp b/common/EventMapper.cpp index de1907d141..36feedf726 100644 --- a/common/EventMapper.cpp +++ b/common/EventMapper.cpp @@ -31,11 +31,24 @@ List DefaultEventMapper::mapEvent(const Event &ev, EventSource *source) { List 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) { - mappedEvent.type = EVENT_VIRTUAL_KEYBOARD; + if ((g_system->getMillis() - vkeybdThen) >= vkeybdTime) { + mappedEvent.type = EVENT_VIRTUAL_KEYBOARD; - // Avoid blocking event from engine. - addDelayedEvent(100, ev); + // Avoid blocking event from engine. + addDelayedEvent(100, ev); + } } #endif -- cgit v1.2.3 From 8cf41943f66113c9efbadc4baf17b9a72dce7323 Mon Sep 17 00:00:00 2001 From: D G Turner Date: Sun, 27 Apr 2014 04:14:41 +0100 Subject: VKEYBD: Switch hotkey from F7 to CTRL-F7 to reduce game conflicts. Although this is harder for physically disabled users to trigger, they can now use the long middle mouse button press instead to trigger. --- common/EventMapper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'common/EventMapper.cpp') diff --git a/common/EventMapper.cpp b/common/EventMapper.cpp index 36feedf726..6a3a7e5be6 100644 --- a/common/EventMapper.cpp +++ b/common/EventMapper.cpp @@ -57,10 +57,10 @@ List DefaultEventMapper::mapEvent(const Event &ev, EventSource *source) { 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 -- cgit v1.2.3 From b7192731b9e65292fd2998162db63a4e3d76b8dd Mon Sep 17 00:00:00 2001 From: D G Turner Date: Sun, 27 Apr 2014 04:17:36 +0100 Subject: KEYMAPPER: Change hotkey from F8 to CTRL-F8 to reduce game conflicts. --- common/EventMapper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'common/EventMapper.cpp') diff --git a/common/EventMapper.cpp b/common/EventMapper.cpp index 6a3a7e5be6..b92116cbe7 100644 --- a/common/EventMapper.cpp +++ b/common/EventMapper.cpp @@ -65,10 +65,10 @@ List DefaultEventMapper::mapEvent(const Event &ev, EventSource *source) { } #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 -- cgit v1.2.3