From 43f183c207023c4398548ae385c9f3cbf853d9a9 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 31 Mar 2016 23:40:30 -0400 Subject: [PATCH] TITANIC: Implement keyboard event handling --- engines/titanic/events.cpp | 3 +++ engines/titanic/input_translator.cpp | 12 ++++++++++++ engines/titanic/input_translator.h | 2 ++ 3 files changed, 17 insertions(+) diff --git a/engines/titanic/events.cpp b/engines/titanic/events.cpp index 5202d7cb9ce..038bc8b83b3 100644 --- a/engines/titanic/events.cpp +++ b/engines/titanic/events.cpp @@ -187,6 +187,9 @@ void Events::keyDown(Common::KeyState keyState) { _vm->_debugger->attach(); _vm->_debugger->onFrame(); } + + if (_vm->_window->_inputAllowed) + _vm->_window->_gameManager->_inputTranslator.keyDown(keyState); } void Events::keyUp(Common::KeyState keyState) { diff --git a/engines/titanic/input_translator.cpp b/engines/titanic/input_translator.cpp index 2251c2fe7a5..9769076a1d6 100644 --- a/engines/titanic/input_translator.cpp +++ b/engines/titanic/input_translator.cpp @@ -94,4 +94,16 @@ void CInputTranslator::rightButtonDoubleClick(int special, const Point &pt) { _inputHandler->handleMessage(msg); } +void CInputTranslator::keyDown(const Common::KeyState &keyState) { + if (keyState.keycode >= Common::KEYCODE_F1 && keyState.keycode <= Common::KEYCODE_F5) { + CVirtualKeyCharMsg msg(keyState); + _inputHandler->handleMessage(msg); + } + + if (keyState.ascii >= 32 && keyState.ascii <= 127) { + CKeyCharMsg msg(keyState.ascii); + _inputHandler->handleMessage(msg); + } +} + } // End of namespace Titanic diff --git a/engines/titanic/input_translator.h b/engines/titanic/input_translator.h index ad4f2d9d0a2..7ca2a78699a 100644 --- a/engines/titanic/input_translator.h +++ b/engines/titanic/input_translator.h @@ -23,6 +23,7 @@ #ifndef TITANIC_INPUT_TRANSLATOR_H #define TITANIC_INPUT_TRANSLATOR_H +#include "common/keyboard.h" #include "titanic/messages/mouse_messages.h" namespace Titanic { @@ -50,6 +51,7 @@ public: void rightButtonDown(int special, const Point &pt); void rightButtonUp(int special, const Point &pt); void rightButtonDoubleClick(int special, const Point &pt); + void keyDown(const Common::KeyState &keyState); }; } // End of namespace Titanic