[Scummvm-cvs-logs] SF.net SVN: scummvm: [27071] scummvm/trunk/backends/platform/wince
knakos at users.sourceforge.net
knakos at users.sourceforge.net
Sun Jun 3 21:29:14 CEST 2007
Revision: 27071
http://scummvm.svn.sourceforge.net/scummvm/?rev=27071&view=rev
Author: knakos
Date: 2007-06-03 12:29:13 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
new functionality for the predictive input dialog for smartphones
Modified Paths:
--------------
scummvm/trunk/backends/platform/wince/CEActionsSmartphone.cpp
scummvm/trunk/backends/platform/wince/wince-sdl.cpp
scummvm/trunk/backends/platform/wince/wince-sdl.h
Modified: scummvm/trunk/backends/platform/wince/CEActionsSmartphone.cpp
===================================================================
--- scummvm/trunk/backends/platform/wince/CEActionsSmartphone.cpp 2007-06-03 19:15:59 UTC (rev 27070)
+++ scummvm/trunk/backends/platform/wince/CEActionsSmartphone.cpp 2007-06-03 19:29:13 UTC (rev 27071)
@@ -43,7 +43,7 @@
"Save",
"Skip",
"Zone",
- "FT Cheat",
+ "Multi Function",
"Bind Keys",
"Keyboard",
"Rotate",
@@ -152,9 +152,12 @@
_key_action[SMARTPHONE_ACTION_SKIP].setAscii(KEY_ALL_SKIP);
// Zone
_action_enabled[SMARTPHONE_ACTION_ZONE] = true;
- // FT Cheat
+ // Multi function key
_action_enabled[SMARTPHONE_ACTION_FT_CHEAT] = true;
- _key_action[SMARTPHONE_ACTION_FT_CHEAT].setAscii(86); // shift-V
+ if (is_agi)
+ _key_action[SMARTPHONE_ACTION_FT_CHEAT].setAscii(SDLK_PAUSE);
+ else
+ _key_action[SMARTPHONE_ACTION_FT_CHEAT].setAscii(86); // shift-V
// Bind keys
_action_enabled[SMARTPHONE_ACTION_BINDKEYS] = true;
}
Modified: scummvm/trunk/backends/platform/wince/wince-sdl.cpp
===================================================================
--- scummvm/trunk/backends/platform/wince/wince-sdl.cpp 2007-06-03 19:15:59 UTC (rev 27070)
+++ scummvm/trunk/backends/platform/wince/wince-sdl.cpp 2007-06-03 19:29:13 UTC (rev 27071)
@@ -330,7 +330,7 @@
OSystem_WINCE3::OSystem_WINCE3() : OSystem_SDL(),
_orientationLandscape(0), _newOrientation(0), _panelInitialized(false),
- _panelVisible(true), _panelStateForced(false), _forceHideMouse(false),
+ _panelVisible(true), _panelStateForced(false), _forceHideMouse(false), _unfilteredkeys(false),
_freeLook(false), _forcePanelInvisible(false), _toolbarHighDrawn(false), _zoomUp(false), _zoomDown(false),
_scalersChanged(false), _monkeyKeyboard(false), _lastKeyPressed(0), _tapTime(0),
_saveToolbarState(false), _saveActiveToolbar(NAME_MAIN_PANEL), _rbutton(false), _hasfocus(true),
@@ -771,6 +771,7 @@
switch(f) {
case kFeatureFullscreenMode:
return;
+
case kFeatureVirtualKeyboard:
if (_hasSmartphoneResolution)
return;
@@ -790,6 +791,12 @@
//_toolbarHandler.setVisible(_saveToolbarState);
}
return;
+
+ case kFeatureDisableKeyFiltering:
+ if (_hasSmartphoneResolution)
+ _unfilteredkeys = enable;
+ return;
+
default:
OSystem_SDL::setFeatureState(f, enable);
}
@@ -2067,11 +2074,23 @@
OSystem_SDL::addDirtyRect(x, y, w, h, false);
}
-static int mapKeyCE(SDLKey key, SDLMod mod, Uint16 unicode)
+static int mapKeyCE(SDLKey key, SDLMod mod, Uint16 unicode, bool unfilter)
{
if (GUI::Actions::Instance()->mappingActive())
return key;
+ if (unfilter) {
+ switch (key) {
+ case SDLK_ESCAPE:
+ return SDLK_BACKSPACE;
+ case SDLK_F8:
+ return SDLK_ASTERISK;
+ case SDLK_F9:
+ return SDLK_HASH;
+ }
+ return key;
+ }
+
if (key >= SDLK_KP0 && key <= SDLK_KP9) {
return key - SDLK_KP0 + '0';
} else if (key >= SDLK_UP && key <= SDLK_PAGEDOWN) {
@@ -2113,9 +2132,9 @@
while(SDL_PollEvent(&ev)) {
switch(ev.type) {
case SDL_KEYDOWN:
+ debug(1, "Key down %X %s", ev.key.keysym.sym, SDL_GetKeyName((SDLKey)ev.key.keysym.sym));
// KMOD_RESERVED is used if the key has been injected by an external buffer
- debug(1, "Key down %X %s", ev.key.keysym.sym, SDL_GetKeyName((SDLKey)ev.key.keysym.sym));
- if (ev.key.keysym.mod != KMOD_RESERVED) {
+ if (ev.key.keysym.mod != KMOD_RESERVED && !_unfilteredkeys) {
keyEvent = true;
_lastKeyPressed = ev.key.keysym.sym;
_keyRepeatTime = currentTime;
@@ -2125,19 +2144,27 @@
return true;
}
- event.type = Common::EVENT_KEYDOWN;
- event.kbd.keycode = ev.key.keysym.sym;
- event.kbd.ascii = mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode);
-
if (GUI_Actions::Instance()->mappingActive())
event.kbd.flags = 0xFF;
+ else if (ev.key.keysym.sym == SDLK_PAUSE) {
+ _lastKeyPressed = 0;
+ event.type = Common::EVENT_PREDICTIVE_DIALOG;
+ return true;
+ }
+ event.type = Common::EVENT_KEYDOWN;
+ if (!_unfilteredkeys)
+ event.kbd.keycode = ev.key.keysym.sym;
+ else
+ event.kbd.keycode = mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode, _unfilteredkeys);
+ event.kbd.ascii = mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode, _unfilteredkeys);
+
return true;
case SDL_KEYUP:
+ debug(1, "Key up %X %s", ev.key.keysym.sym, SDL_GetKeyName((SDLKey)ev.key.keysym.sym));
// KMOD_RESERVED is used if the key has been injected by an external buffer
- debug(1, "Key up %X %s", ev.key.keysym.sym, SDL_GetKeyName((SDLKey)ev.key.keysym.sym));
- if (ev.key.keysym.mod != KMOD_RESERVED) {
+ if (ev.key.keysym.mod != KMOD_RESERVED && !_unfilteredkeys) {
keyEvent = true;
_lastKeyPressed = 0;
@@ -2145,13 +2172,20 @@
return true;
}
- event.type = Common::EVENT_KEYUP;
- event.kbd.keycode = ev.key.keysym.sym;
- event.kbd.ascii = mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode);
-
if (GUI_Actions::Instance()->mappingActive())
event.kbd.flags = 0xFF;
+ else if (ev.key.keysym.sym == SDLK_PAUSE) {
+ _lastKeyPressed = 0;
+ return false; // chew up the show agi dialog key up event
+ }
+ event.type = Common::EVENT_KEYUP;
+ if (!_unfilteredkeys)
+ event.kbd.keycode = ev.key.keysym.sym;
+ else
+ event.kbd.keycode = mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode, _unfilteredkeys);
+ event.kbd.ascii = mapKeyCE(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode, _unfilteredkeys);
+
return true;
case SDL_MOUSEMOTION:
Modified: scummvm/trunk/backends/platform/wince/wince-sdl.h
===================================================================
--- scummvm/trunk/backends/platform/wince/wince-sdl.h 2007-06-03 19:15:59 UTC (rev 27070)
+++ scummvm/trunk/backends/platform/wince/wince-sdl.h 2007-06-03 19:29:13 UTC (rev 27071)
@@ -189,6 +189,7 @@
bool _panelInitialized; // only initialize the toolbar once
bool _monkeyKeyboard; // forced keyboard for Monkey Island copy protection
+ bool _unfilteredkeys; // discard key mapping temporarily (agi pred. dialog)
static bool _soundMaster; // turn off sound after all calculations
// static since needed by the SDL callback
int _orientationLandscape; // current orientation
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list