From 98f999f8e01c4752a771f1a8c6aec77b6efe3fb5 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Mon, 7 Jul 2008 14:30:11 +0000 Subject: WIP: VirtualKeyboard updates: - got keyboard bitmap displaying (no transparency as yet) - simple event loop for VK to capture mouse clicks done (and untested code to process the clicks) - pollEvent() method to deliver the virtual key press events to EventManager svn-id: r32939 --- backends/events/default/default-events.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index 0caba25792..601e292ad0 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -191,6 +191,9 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : _hasPlaybackEvent = false; } + + _vk = new GUI::VirtualKeyboard(); + _vk->loadKeyboardPack("test"); } DefaultEventManager::~DefaultEventManager() { @@ -349,7 +352,10 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { uint32 time = _boss->getMillis(); bool result; - result = _boss->pollEvent(event); + // poll virtual keyboard + result = _vk->pollEvent(event); + // if no vk event, then poll backend + if (!result) result = _boss->pollEvent(event); if (_recordMode != kPassthrough) { @@ -384,6 +390,19 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { _currentKeyDown.flags = event.kbd.flags; _keyRepeatTime = time + kKeyRepeatInitialDelay; #endif + + // quick hack to show/hide keyboard + if (event.kbd.keycode == Common::KEYCODE_F6 && event.kbd.flags == 0) { + if (_vk->isDisplaying()) { + _vk->hide(); + } else { + bool isPaused = (g_engine) ? g_engine->isPaused() : true; + if (!isPaused) g_engine->pauseEngine(true); + _vk->show(); + if (!isPaused) g_engine->pauseEngine(false); + } + } + break; case Common::EVENT_KEYUP: _modifierState = event.kbd.flags; -- cgit v1.2.3 From 7e3639e68b054c2259124d86bcd3bde0edc72d9e Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Mon, 7 Jul 2008 14:52:30 +0000 Subject: - moved VirtualKeyboard files into backends/common directory svn-id: r32941 --- backends/events/default/default-events.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index 601e292ad0..a3630b1d73 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -193,7 +193,6 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : } _vk = new GUI::VirtualKeyboard(); - _vk->loadKeyboardPack("test"); } DefaultEventManager::~DefaultEventManager() { @@ -396,6 +395,7 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { if (_vk->isDisplaying()) { _vk->hide(); } else { + if (!_vk->isLoaded()) _vk->loadKeyboardPack("test"); bool isPaused = (g_engine) ? g_engine->isPaused() : true; if (!isPaused) g_engine->pauseEngine(true); _vk->show(); -- cgit v1.2.3 From 275ffece2f2e2d39eef3409090b6be28827e0de3 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Mon, 7 Jul 2008 15:42:26 +0000 Subject: - changed VirtualKeyboard classes to Common namespace - updated XMLParser from Tanoku's branch svn-id: r32943 --- backends/events/default/default-events.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index a3630b1d73..edb8f662e8 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -192,7 +192,7 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : _hasPlaybackEvent = false; } - _vk = new GUI::VirtualKeyboard(); + _vk = new Common::VirtualKeyboard(); } DefaultEventManager::~DefaultEventManager() { -- cgit v1.2.3 From 1f0b3ceb3633c75cd40f1eaacddeb73b5b8ec555 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Wed, 9 Jul 2008 13:33:36 +0000 Subject: Added pushEvent to EventManager (from cpage88's branch) and changed VirtualKeyboard so that it uses this method to feed key presses its resulting key press events. svn-id: r32977 --- backends/events/default/default-events.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index edb8f662e8..d06edaec1b 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -31,6 +31,7 @@ #include "engines/engine.h" #include "gui/message.h" +#include "gui/newgui.h" #define RECORD_SIGNATURE 0x54455354 #define RECORD_VERSION 1 @@ -196,6 +197,7 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : } DefaultEventManager::~DefaultEventManager() { + delete _vk; _boss->lockMutex(_timeMutex); _boss->lockMutex(_recorderMutex); _recordMode = kPassthrough; @@ -351,10 +353,11 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { uint32 time = _boss->getMillis(); bool result; - // poll virtual keyboard - result = _vk->pollEvent(event); - // if no vk event, then poll backend - if (!result) result = _boss->pollEvent(event); + if (!_artificialEventQueue.empty()) { + event = _artificialEventQueue.pop(); + result = true; + } else + result = _boss->pollEvent(event); if (_recordMode != kPassthrough) { @@ -390,16 +393,17 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { _keyRepeatTime = time + kKeyRepeatInitialDelay; #endif - // quick hack to show/hide keyboard + // HACK to show/hide keyboard (keyboard is not shown if gui is active) if (event.kbd.keycode == Common::KEYCODE_F6 && event.kbd.flags == 0) { if (_vk->isDisplaying()) { _vk->hide(); - } else { + } else if (!g_gui.isActive()) { if (!_vk->isLoaded()) _vk->loadKeyboardPack("test"); bool isPaused = (g_engine) ? g_engine->isPaused() : true; if (!isPaused) g_engine->pauseEngine(true); _vk->show(); if (!isPaused) g_engine->pauseEngine(false); + result = false; } } @@ -466,4 +470,8 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { return result; } +void DefaultEventManager::pushEvent(Common::Event event) { + _artificialEventQueue.push(event); +} + #endif // !defined(DISABLE_DEFAULT_EVENTMANAGER) -- cgit v1.2.3 From 8aa09cbb991d5122d8327ddfa41f67ee2c9a938d Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Fri, 11 Jul 2008 20:10:14 +0000 Subject: Better handling of virtual keyboard and gui being displayed at the same time. VK now also uses its own cursor. svn-id: r33008 --- backends/events/default/default-events.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index d06edaec1b..6113f0e65c 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -31,7 +31,6 @@ #include "engines/engine.h" #include "gui/message.h" -#include "gui/newgui.h" #define RECORD_SIGNATURE 0x54455354 #define RECORD_VERSION 1 @@ -397,8 +396,7 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { if (event.kbd.keycode == Common::KEYCODE_F6 && event.kbd.flags == 0) { if (_vk->isDisplaying()) { _vk->hide(); - } else if (!g_gui.isActive()) { - if (!_vk->isLoaded()) _vk->loadKeyboardPack("test"); + } else { bool isPaused = (g_engine) ? g_engine->isPaused() : true; if (!isPaused) g_engine->pauseEngine(true); _vk->show(); -- cgit v1.2.3 From 28cb417fb1343b599d5dbc31199c750365bc6f9a Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Sat, 12 Jul 2008 12:40:57 +0000 Subject: Added comments in virtual-keyboard-parser.h describing the file format. Added a delay functionality to the delivery of artificial events in DefaultEventManager, to get round events being ignored when delivered consecutively. svn-id: r33012 --- backends/events/default/default-events.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index 6113f0e65c..76a61d1342 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -193,6 +193,7 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : } _vk = new Common::VirtualKeyboard(); + _artificialEventCounter = 0; } DefaultEventManager::~DefaultEventManager() { @@ -351,10 +352,15 @@ void DefaultEventManager::processMillis(uint32 &millis) { bool DefaultEventManager::pollEvent(Common::Event &event) { uint32 time = _boss->getMillis(); bool result; - + if (!_artificialEventQueue.empty()) { - event = _artificialEventQueue.pop(); - result = true; + // delay the feeding of artificial events + if (++_artificialEventCounter % kArtificialEventDelay == 0) { + event = _artificialEventQueue.pop(); + result = true; + _artificialEventCounter = 0; + } else + result = _boss->pollEvent(event); } else result = _boss->pollEvent(event); -- cgit v1.2.3 From a58080bd58bbcc9f7c710fade55620049bae14e4 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Mon, 21 Jul 2008 18:53:55 +0000 Subject: Changed pushEvent to use a const& argument svn-id: r33175 --- backends/events/default/default-events.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index 76a61d1342..3a77b0114c 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -474,7 +474,7 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { return result; } -void DefaultEventManager::pushEvent(Common::Event event) { +void DefaultEventManager::pushEvent(const Common::Event &event) { _artificialEventQueue.push(event); } -- cgit v1.2.3 From 2f064da1021344f28c9106285475c72930638390 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Wed, 23 Jul 2008 08:45:12 +0000 Subject: Most of Keymapper class complete DefaultEventManager now initialises Keymapper and passes key press events to it svn-id: r33227 --- backends/events/default/default-events.cpp | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index 3a77b0114c..685f2bac89 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -107,6 +107,7 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : _eventCount = 0; _lastEventCount = 0; _lastMillis = 0; + _artificialEventCounter = 0; Common::String recordModeString = ConfMan.get("record_mode"); if (recordModeString.compareToIgnoreCase("record") == 0) { @@ -193,7 +194,7 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : } _vk = new Common::VirtualKeyboard(); - _artificialEventCounter = 0; + _keyMapper = new Common::Keymapper(this); } DefaultEventManager::~DefaultEventManager() { @@ -351,18 +352,32 @@ void DefaultEventManager::processMillis(uint32 &millis) { bool DefaultEventManager::pollEvent(Common::Event &event) { uint32 time = _boss->getMillis(); - bool result; + bool result = false; + // poll for pushed events if (!_artificialEventQueue.empty()) { // delay the feeding of artificial events if (++_artificialEventCounter % kArtificialEventDelay == 0) { event = _artificialEventQueue.pop(); result = true; _artificialEventCounter = 0; - } else - result = _boss->pollEvent(event); - } else + } + } + + // poll for event from backend + if (!result) { result = _boss->pollEvent(event); + if (result) { + // send key press events to keymapper + if (event.type == Common::EVENT_KEYDOWN) { + if (_keyMapper->mapKeyDown(event.kbd)) + result = false; + } else if (event.type == Common::EVENT_KEYUP) { + if (_keyMapper->mapKeyUp(event.kbd)) + result = false; + } + } + } if (_recordMode != kPassthrough) { -- cgit v1.2.3 From dfcdbb0d335128c99d13ba017a4e36f2338f7736 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Thu, 24 Jul 2008 10:00:56 +0000 Subject: KeymapManager - implemented loading/saving of keymaps - Refactoring of code to map a key to a UserAction - now we call a method on UserAction to do it (and it then tells the Keymap class) - General cleanup of code svn-id: r33262 --- backends/events/default/default-events.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index 685f2bac89..fa9ff38330 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -28,6 +28,8 @@ #include "common/system.h" #include "common/config-manager.h" #include "backends/events/default/default-events.h" +#include "backends/common/keymapper.h" +#include "backends/common/virtual-keyboard.h" #include "engines/engine.h" #include "gui/message.h" -- cgit v1.2.3 From 57b13141af10c5e0773c2e1606daca8e08410ed5 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Wed, 6 Aug 2008 14:21:05 +0000 Subject: Keymapper WIP: * Implemented stack-based active map in Keymapper * Started proper testing by adding code to OSystem_SDL to set up simple HardwareKeySet and Keymap svn-id: r33660 --- backends/events/default/default-events.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index fa9ff38330..9bafdd9e4f 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -196,10 +196,11 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : } _vk = new Common::VirtualKeyboard(); - _keyMapper = new Common::Keymapper(this); + _keymapper = new Common::Keymapper(this); } DefaultEventManager::~DefaultEventManager() { + delete _keymapper; delete _vk; _boss->lockMutex(_timeMutex); _boss->lockMutex(_recorderMutex); @@ -372,10 +373,10 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { if (result) { // send key press events to keymapper if (event.type == Common::EVENT_KEYDOWN) { - if (_keyMapper->mapKeyDown(event.kbd)) + if (_keymapper->mapKeyDown(event.kbd)) result = false; } else if (event.type == Common::EVENT_KEYUP) { - if (_keyMapper->mapKeyUp(event.kbd)) + if (_keymapper->mapKeyUp(event.kbd)) result = false; } } -- cgit v1.2.3 From 2645ca48ad9bc219b43ab88cc5b071952297a992 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Thu, 7 Aug 2008 16:38:39 +0000 Subject: * Moved VK code into backends/vkeybd * Moved Keymapper code into backends/keymapper svn-id: r33681 --- backends/events/default/default-events.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index 9bafdd9e4f..026892a050 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -28,8 +28,8 @@ #include "common/system.h" #include "common/config-manager.h" #include "backends/events/default/default-events.h" -#include "backends/common/keymapper.h" -#include "backends/common/virtual-keyboard.h" +#include "backends/keymapper/keymapper.h" +#include "backends/vkeybd/virtual-keyboard.h" #include "engines/engine.h" #include "gui/message.h" -- cgit v1.2.3 From 4eacc09024515dc95e0afbb1ca9a8f610c55a84d Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Fri, 8 Aug 2008 14:23:59 +0000 Subject: Keymapper WIP: * Got rid of default keymaps as they over-complicated the API * Remapping dialog WIP svn-id: r33699 --- backends/events/default/default-events.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index 026892a050..ccea12dad6 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -29,6 +29,7 @@ #include "common/config-manager.h" #include "backends/events/default/default-events.h" #include "backends/keymapper/keymapper.h" +#include "backends/keymapper/remap-dialog.h" #include "backends/vkeybd/virtual-keyboard.h" #include "engines/engine.h" @@ -427,6 +428,9 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { if (!isPaused) g_engine->pauseEngine(false); result = false; } + } else if (event.kbd.keycode == Common::KEYCODE_F7 && event.kbd.flags == 0) { + Common::RemapDialog dialog; + dialog.runModal(); } break; -- cgit v1.2.3 From 70dde2d8bdfeb0e86a76d196193339f9ec9e17ab Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Wed, 13 Aug 2008 19:24:52 +0000 Subject: RemapDialog now properly uses reflowLayout() and open(), so that the same instance can be reopened svn-id: r33843 --- backends/events/default/default-events.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index ccea12dad6..af8f9fa231 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -198,6 +198,7 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : _vk = new Common::VirtualKeyboard(); _keymapper = new Common::Keymapper(this); + _remap = false; } DefaultEventManager::~DefaultEventManager() { @@ -429,8 +430,15 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { result = false; } } else if (event.kbd.keycode == Common::KEYCODE_F7 && event.kbd.flags == 0) { - Common::RemapDialog dialog; - dialog.runModal(); + if (!_remap) { + _remap = true; + Common::RemapDialog _remapDialog; + bool isPaused = (g_engine) ? g_engine->isPaused() : true; + if (!isPaused) g_engine->pauseEngine(true); + _remapDialog.runModal(); + if (!isPaused) g_engine->pauseEngine(false); + _remap = false; + } } break; -- cgit v1.2.3 From fca5a0ad340da0fd0fd86d00f2c4cedbfd7a3ab8 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Fri, 15 Aug 2008 01:21:29 +0000 Subject: Virtual Keyboard: * added support for submit, cancel, backspace, and cursor movement commands * minor API modifications svn-id: r33887 --- backends/events/default/default-events.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index af8f9fa231..aad8fee4fc 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -421,7 +421,7 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { // HACK to show/hide keyboard (keyboard is not shown if gui is active) if (event.kbd.keycode == Common::KEYCODE_F6 && event.kbd.flags == 0) { if (_vk->isDisplaying()) { - _vk->hide(); + _vk->close(true); } else { bool isPaused = (g_engine) ? g_engine->isPaused() : true; if (!isPaused) g_engine->pauseEngine(true); -- cgit v1.2.3 From 63c4a61032bd97b478de9cbf82510f461d08f653 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Sun, 17 Aug 2008 12:11:34 +0000 Subject: Various virtual keyboard bug fixes svn-id: r33969 --- backends/events/default/default-events.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index aad8fee4fc..282d8251b5 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -423,11 +423,17 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { if (_vk->isDisplaying()) { _vk->close(true); } else { - bool isPaused = (g_engine) ? g_engine->isPaused() : true; - if (!isPaused) g_engine->pauseEngine(true); - _vk->show(); - if (!isPaused) g_engine->pauseEngine(false); - result = false; + static bool enabled = true; + if (enabled && _vk->isLoaded() == false) { + enabled = _vk->loadKeyboardPack("vkeybd"); + } + if (enabled) { + bool isPaused = (g_engine) ? g_engine->isPaused() : true; + if (!isPaused) g_engine->pauseEngine(true); + _vk->show(); + if (!isPaused) g_engine->pauseEngine(false); + result = false; + } } } else if (event.kbd.keycode == Common::KEYCODE_F7 && event.kbd.flags == 0) { if (!_remap) { -- cgit v1.2.3 From d92909203b56d9b3fa6c4989bdeb83dbed5b94d5 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Mon, 18 Aug 2008 10:07:11 +0000 Subject: - proper init of virtual keyboard now implemented (involved added EventManager::init() which is called after screen has been initialised) - changed HardwareKey / Action id field to an array of 4 chars instead of int32. Means that the keymap key/value pairs in config file are more readable. svn-id: r33986 --- backends/events/default/default-events.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index 282d8251b5..d6b9978d94 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -199,6 +199,8 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : _vk = new Common::VirtualKeyboard(); _keymapper = new Common::Keymapper(this); _remap = false; + + //init(); } DefaultEventManager::~DefaultEventManager() { @@ -259,6 +261,14 @@ DefaultEventManager::~DefaultEventManager() { _boss->deleteMutex(_recorderMutex); } +void DefaultEventManager::init() { + if (ConfMan.hasKey("vkeybd_pack_name")) { + _vk->loadKeyboardPack(ConfMan.get("vkeybd_pack_name")); + } else { + _vk->loadKeyboardPack("vkeybd"); + } +} + bool DefaultEventManager::playback(Common::Event &event) { if (!_hasPlaybackEvent) { @@ -418,22 +428,15 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { _keyRepeatTime = time + kKeyRepeatInitialDelay; #endif - // HACK to show/hide keyboard (keyboard is not shown if gui is active) if (event.kbd.keycode == Common::KEYCODE_F6 && event.kbd.flags == 0) { if (_vk->isDisplaying()) { _vk->close(true); } else { - static bool enabled = true; - if (enabled && _vk->isLoaded() == false) { - enabled = _vk->loadKeyboardPack("vkeybd"); - } - if (enabled) { - bool isPaused = (g_engine) ? g_engine->isPaused() : true; - if (!isPaused) g_engine->pauseEngine(true); - _vk->show(); - if (!isPaused) g_engine->pauseEngine(false); - result = false; - } + bool isPaused = (g_engine) ? g_engine->isPaused() : true; + if (!isPaused) g_engine->pauseEngine(true); + _vk->show(); + if (!isPaused) g_engine->pauseEngine(false); + result = false; } } else if (event.kbd.keycode == Common::KEYCODE_F7 && event.kbd.flags == 0) { if (!_remap) { -- cgit v1.2.3 From baae044e388bca79a593ce083037c5da777818ea Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Sat, 23 Aug 2008 17:04:40 +0000 Subject: Proper fix for key repeat bug - r34094 caused different problems due to repeated key up events svn-id: r34115 --- backends/events/default/default-events.cpp | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index d6b9978d94..9a0b5de298 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -110,7 +110,6 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : _eventCount = 0; _lastEventCount = 0; _lastMillis = 0; - _artificialEventCounter = 0; Common::String recordModeString = ConfMan.get("record_mode"); if (recordModeString.compareToIgnoreCase("record") == 0) { @@ -364,19 +363,20 @@ void DefaultEventManager::processMillis(uint32 &millis) { _lastMillis = millis; _boss->unlockMutex(_timeMutex); } - +#include "backends/vkeybd/keycode-descriptions.h" bool DefaultEventManager::pollEvent(Common::Event &event) { uint32 time = _boss->getMillis(); bool result = false; // poll for pushed events if (!_artificialEventQueue.empty()) { - // delay the feeding of artificial events - if (++_artificialEventCounter % kArtificialEventDelay == 0) { - event = _artificialEventQueue.pop(); - result = true; - _artificialEventCounter = 0; - } + event = _artificialEventQueue.pop(); + result = true; + + if (event.type == Common::EVENT_KEYDOWN) + printf("ART. KEY DOWN: %d (%s)\n", event.kbd.keycode, keycodeDescTable[event.kbd.keycode]); + else if (event.type == Common::EVENT_KEYUP) + printf("ART. KEY UP: %d (%s)\n", event.kbd.keycode, keycodeDescTable[event.kbd.keycode]); } // poll for event from backend @@ -385,11 +385,21 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { if (result) { // send key press events to keymapper if (event.type == Common::EVENT_KEYDOWN) { - if (_keymapper->mapKeyDown(event.kbd)) + printf("KEY DOWN: %d (%s)", event.kbd.keycode, keycodeDescTable[event.kbd.keycode]); + if (_keymapper->mapKeyDown(event.kbd)) { result = false; + printf(" - MAPPED!\n"); + } else { + printf("\n"); + } } else if (event.type == Common::EVENT_KEYUP) { - if (_keymapper->mapKeyUp(event.kbd)) + printf("KEY UP: %d (%s)", event.kbd.keycode, keycodeDescTable[event.kbd.keycode]); + if (_keymapper->mapKeyUp(event.kbd)) { result = false; + printf(" - MAPPED!\n"); + } else { + printf("\n"); + } } } } -- cgit v1.2.3 From 11c0a3bdedcdf5eb2618b9db67b559663fb93320 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Fri, 29 Aug 2008 21:10:10 +0000 Subject: Updated comments, and general cleanup svn-id: r34203 --- backends/events/default/default-events.cpp | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index 9a0b5de298..afa71e1fd1 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -363,7 +363,7 @@ void DefaultEventManager::processMillis(uint32 &millis) { _lastMillis = millis; _boss->unlockMutex(_timeMutex); } -#include "backends/vkeybd/keycode-descriptions.h" + bool DefaultEventManager::pollEvent(Common::Event &event) { uint32 time = _boss->getMillis(); bool result = false; @@ -372,11 +372,6 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { if (!_artificialEventQueue.empty()) { event = _artificialEventQueue.pop(); result = true; - - if (event.type == Common::EVENT_KEYDOWN) - printf("ART. KEY DOWN: %d (%s)\n", event.kbd.keycode, keycodeDescTable[event.kbd.keycode]); - else if (event.type == Common::EVENT_KEYUP) - printf("ART. KEY UP: %d (%s)\n", event.kbd.keycode, keycodeDescTable[event.kbd.keycode]); } // poll for event from backend @@ -385,20 +380,12 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { if (result) { // send key press events to keymapper if (event.type == Common::EVENT_KEYDOWN) { - printf("KEY DOWN: %d (%s)", event.kbd.keycode, keycodeDescTable[event.kbd.keycode]); if (_keymapper->mapKeyDown(event.kbd)) { result = false; - printf(" - MAPPED!\n"); - } else { - printf("\n"); } } else if (event.type == Common::EVENT_KEYUP) { - printf("KEY UP: %d (%s)", event.kbd.keycode, keycodeDescTable[event.kbd.keycode]); if (_keymapper->mapKeyUp(event.kbd)) { result = false; - printf(" - MAPPED!\n"); - } else { - printf("\n"); } } } -- cgit v1.2.3 From df3b8fd14c9ce97fe81976e30086af95000bb2f1 Mon Sep 17 00:00:00 2001 From: Stephen Kennedy Date: Tue, 30 Sep 2008 13:51:01 +0000 Subject: Added preprocessor flags 'ENABLE_VKEYBD' and 'ENABLE_KEYMAPPER' to control inclusion of vkeybd and keymapper in build.\n\nAlso added corresponding --enable-vkeybd and --enable-keymapper flags to configure scripts. svn-id: r34706 --- backends/events/default/default-events.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'backends/events/default/default-events.cpp') diff --git a/backends/events/default/default-events.cpp b/backends/events/default/default-events.cpp index a2616bc58a..e12ab09433 100644 --- a/backends/events/default/default-events.cpp +++ b/backends/events/default/default-events.cpp @@ -196,16 +196,22 @@ DefaultEventManager::DefaultEventManager(OSystem *boss) : _hasPlaybackEvent = false; } +#ifdef ENABLE_VKEYBD _vk = new Common::VirtualKeyboard(); +#endif +#ifdef ENABLE_KEYMAPPER _keymapper = new Common::Keymapper(this); _remap = false; - - //init(); +#endif } DefaultEventManager::~DefaultEventManager() { +#ifdef ENABLE_KEYMAPPER delete _keymapper; +#endif +#ifdef ENABLE_VKEYBD delete _vk; +#endif _boss->lockMutex(_timeMutex); _boss->lockMutex(_recorderMutex); _recordMode = kPassthrough; @@ -265,11 +271,13 @@ DefaultEventManager::~DefaultEventManager() { } void DefaultEventManager::init() { +#ifdef ENABLE_VKEYBD if (ConfMan.hasKey("vkeybd_pack_name")) { _vk->loadKeyboardPack(ConfMan.get("vkeybd_pack_name")); } else { _vk->loadKeyboardPack("vkeybd"); } +#endif } bool DefaultEventManager::playback(Common::Event &event) { @@ -379,6 +387,7 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { } else { // poll for event from backend result = _boss->pollEvent(event); +#ifdef ENABLE_KEYMAPPER if (result) { // send key press events to keymapper if (event.type == Common::EVENT_KEYDOWN) { @@ -391,6 +400,7 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { } } } +#endif } if (_recordMode != kPassthrough) { @@ -457,7 +467,9 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { else if (_shouldRTL) event.type = Common::EVENT_RTL; } - } else if (event.kbd.keycode == Common::KEYCODE_F7 && event.kbd.flags == 0) { + } +#ifdef ENABLE_VKEYBD + else if (event.kbd.keycode == Common::KEYCODE_F7 && event.kbd.flags == 0) { if (_vk->isDisplaying()) { _vk->close(true); } else { @@ -467,7 +479,10 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { if (!isPaused) g_engine->pauseEngine(false); result = false; } - } else if (event.kbd.keycode == Common::KEYCODE_F8 && event.kbd.flags == 0) { + } +#endif +#ifdef ENABLE_KEYMAPPER + else if (event.kbd.keycode == Common::KEYCODE_F8 && event.kbd.flags == 0) { if (!_remap) { _remap = true; Common::RemapDialog _remapDialog; @@ -478,6 +493,7 @@ bool DefaultEventManager::pollEvent(Common::Event &event) { _remap = false; } } +#endif break; case Common::EVENT_KEYUP: -- cgit v1.2.3