aboutsummaryrefslogtreecommitdiff
path: root/backends/events/maemosdl
diff options
context:
space:
mode:
authorTarek Soliman2012-02-09 01:27:55 -0600
committerTarek Soliman2012-02-15 17:07:52 -0600
commit974f5eb7b8291535ea34be5260607d6e383543a7 (patch)
tree8fb077a9f5d80a4398234b81fb370bfcd9ab6ef8 /backends/events/maemosdl
parent66aff9c4d81f842b6f5d66adedf9dd0f524d4cec (diff)
downloadscummvm-rg350-974f5eb7b8291535ea34be5260607d6e383543a7.tar.gz
scummvm-rg350-974f5eb7b8291535ea34be5260607d6e383543a7.tar.bz2
scummvm-rg350-974f5eb7b8291535ea34be5260607d6e383543a7.zip
MAEMO: Drop the hardcoded keymap in favor of the keymapper
Diffstat (limited to 'backends/events/maemosdl')
-rw-r--r--backends/events/maemosdl/maemosdl-events.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/backends/events/maemosdl/maemosdl-events.cpp b/backends/events/maemosdl/maemosdl-events.cpp
index 057205ee2c..932be0dc47 100644
--- a/backends/events/maemosdl/maemosdl-events.cpp
+++ b/backends/events/maemosdl/maemosdl-events.cpp
@@ -33,6 +33,21 @@ MaemoSdlEventSource::MaemoSdlEventSource() : SdlEventSource(), _clickEnabled(tru
}
+struct KeymapEntry {
+ SDLKey sym;
+ Common::KeyCode keycode;
+ uint16 ascii;
+};
+
+static const KeymapEntry keymapEntries[] = {
+ {SDLK_F4, Common::KEYCODE_F11, 0},
+ {SDLK_F5, Common::KEYCODE_F12, 0},
+ {SDLK_F6, Common::KEYCODE_F13, 0},
+ {SDLK_F7, Common::KEYCODE_F14, 0},
+ {SDLK_F8, Common::KEYCODE_F15, 0},
+ {SDLK_LAST, Common::KEYCODE_INVALID, 0}
+};
+
bool MaemoSdlEventSource::remapKey(SDL_Event &ev, Common::Event &event) {
Model model = Model(((OSystem_SDL_Maemo *)g_system)->getModel());
@@ -45,6 +60,20 @@ bool MaemoSdlEventSource::remapKey(SDL_Event &ev, Common::Event &event) {
// SDLK_F7 -> zoom +
// SDLK_F8 -> zoom -
+#ifdef ENABLE_KEYMAPPER
+ if (ev.type == SDL_KEYDOWN || ev.type == SDL_KEYUP) {
+ const KeymapEntry *entry;
+ for (entry = keymapEntries; entry->sym != SDLK_LAST; ++entry) {
+ if (ev.key.keysym.sym == entry->sym) {
+ SDLModToOSystemKeyFlags(SDL_GetModState(), event);
+ event.type = ev.type == SDL_KEYDOWN ? Common::EVENT_KEYDOWN : Common::EVENT_KEYUP;
+ event.kbd.keycode = entry->keycode;
+ event.kbd.ascii = entry->ascii;
+ return true;
+ }
+ }
+ }
+#else
switch (ev.type) {
case SDL_KEYDOWN:{
if (ev.key.keysym.sym == SDLK_F4
@@ -132,6 +161,7 @@ bool MaemoSdlEventSource::remapKey(SDL_Event &ev, Common::Event &event) {
break;
}
}
+#endif
// Invoke parent implementation of this method
return SdlEventSource::remapKey(ev, event);
}