aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKostas Nakos2007-04-28 17:27:08 +0000
committerKostas Nakos2007-04-28 17:27:08 +0000
commit59550346b4270c01a8870a3497df5cab17bcf2e0 (patch)
tree7faa4c62a9004e60f2df76e8c821a573374af345
parent1337ce8296d84496a2cabd5e58b86274bcb326a2 (diff)
downloadscummvm-rg350-59550346b4270c01a8870a3497df5cab17bcf2e0.tar.gz
scummvm-rg350-59550346b4270c01a8870a3497df5cab17bcf2e0.tar.bz2
scummvm-rg350-59550346b4270c01a8870a3497df5cab17bcf2e0.zip
cleanup & completely map wm device's keys
svn-id: r26655
-rw-r--r--backends/platform/wince/CEDevice.cpp158
1 files changed, 60 insertions, 98 deletions
diff --git a/backends/platform/wince/CEDevice.cpp b/backends/platform/wince/CEDevice.cpp
index 495ba1b274..09c067ef15 100644
--- a/backends/platform/wince/CEDevice.cpp
+++ b/backends/platform/wince/CEDevice.cpp
@@ -1,5 +1,5 @@
/* ScummVM - Scumm Interpreter
- * Copyright (C) 2001-2006 The ScummVM project
+ * Copyright (C) 2001-2007 The ScummVM project
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,9 +20,6 @@
*
*/
-//#define SIMU_SMARTPHONE 1
-//#define SIMU_SMARTPHONE_2005 1
-
#include "common/stdafx.h"
#include "CEDevice.h"
@@ -30,35 +27,6 @@
#include "wince-sdl.h"
-#define KEY_CALENDAR 0xc1
-#define KEY_CONTACTS 0xc2
-#define KEY_INBOX 0xc3
-#define KEY_TASK 0xc4
-
-//#ifdef WIN32_PLATFORM_WFSP
-const char* SMARTPHONE_KEYS_NAME[] = {
- "1", "2", "3","4", "5", "6", "7", "8", "9", "*", "0", "#",
- "Home", "Back", "Up", "Down", "Left", "Right", "Action", "Hang up", "Call",
- "Soft 1", "Soft 2", "Power", "Volume Up" ,"Volume Down", "Record", "None",
- 0
-};
-
-// Old mapping from the previous (non SDL) version. To be forgotten.
-/*
-const int SMARTPHONE_KEYS_MAPPING[] = {
- '1', '2', '3', '4', '5', '6', '7', '8', '9', VK_F8, '0', VK_F9,
- VK_LWIN, VK_ESCAPE, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_RETURN, VK_F4, VK_F3,
- VK_F1, VK_F2, VK_F18, VK_F6, VK_F7, VK_F10, 0xff, 0
-};
-*/
-
-// FIXME : Home and Record are not mapped
-const int SMARTPHONE_KEYS_MAPPING[] = {
- '1', '2', '3', '4', '5', '6', '7', '8', '9', VK_F9, '0', VK_F10,
- 0xFF, VK_ESCAPE, 0x113, 0x114, 0x111, 0x112, VK_RETURN, 0x11D, 0x11C,
- 0x11A, 0x11B, 0x11D, 0x11F, 0x120, 0xFF, 0
-};
-
static void (WINAPI* _SHIdleTimerReset)(void) = NULL;
static HANDLE (WINAPI* _SetPowerRequirement)(PVOID,int,ULONG,PVOID,ULONG) = NULL;
static DWORD (WINAPI* _ReleasePowerRequirement)(HANDLE) = NULL;
@@ -72,8 +40,6 @@ extern "C" void WINAPI SystemIdleTimerReset(void);
#define TIMER_TRIGGER 9000
-//#endif
-
// Power management code borrowed from MoDaCo & Betaplayer. Thanks !
void CEDevice::init() {
HINSTANCE dll = LoadLibrary(TEXT("aygshell.dll"));
@@ -108,96 +74,92 @@ void CEDevice::wakeUp() {
}
bool CEDevice::hasPocketPCResolution() {
-#ifdef SIMU_SMARTPHONE
-#ifndef SIMU_SMARTPHONE_2005
- return false;
-#else
- return true;
-#endif
-#else
if (OSystem_WINCE3::isOzone() && hasWideResolution())
return true;
return (OSystem_WINCE3::getScreenWidth() < 320 && OSystem_WINCE3::getScreenWidth() >= 240);
-#endif
}
bool CEDevice::hasDesktopResolution() {
-#ifdef SIMU_SMARTPHONE
- return false;
-#else
if (OSystem_WINCE3::isOzone() && hasWideResolution())
return true;
return (OSystem_WINCE3::getScreenWidth() >= 320);
-#endif
}
bool CEDevice::hasWideResolution() {
-#ifdef SIMU_SMARTPHONE
- return false;
-#else
return (OSystem_WINCE3::getScreenWidth() >= 640 || OSystem_WINCE3::getScreenHeight() >= 640);
-#endif
}
bool CEDevice::hasSmartphoneResolution() {
-#ifdef SIMU_SMARTPHONE
-#ifndef SIMU_SMARTPHONE_2005
- return true;
-#else
- return false;
-#endif
-#else
return (OSystem_WINCE3::getScreenWidth() < 240);
-#endif
}
bool CEDevice::isSmartphone() {
-#ifdef SIMU_SMARTPHONE
- return true;
-#else
TCHAR platformType[100];
BOOL result = SystemParametersInfo(SPI_GETPLATFORMTYPE, sizeof(platformType), platformType, 0);
if (!result && GetLastError() == ERROR_ACCESS_DENIED)
return true;
return (_wcsnicmp(platformType, TEXT("SmartPhone"), 10) == 0);
-#endif
}
Common::String CEDevice::getKeyName(unsigned int keyCode) {
- char key_name[10];
-
- if (!keyCode)
- return "No key";
-
- if (keyCode == KEY_CALENDAR)
- return "Button Calendar";
- if (keyCode == KEY_CONTACTS)
- return "Button Contacts";
- if (keyCode == KEY_INBOX)
- return "Button Inbox";
- if (keyCode == KEY_TASK)
- return "Button Tasks";
- if (keyCode == SDLK_F1)
- return "F1 (hard 1)";
- if (keyCode == SDLK_F2)
- return "F2 (hard 2)";
- if (keyCode == SDLK_F3)
- return "F3 (hard 3)";
- if (keyCode == SDLK_F4)
- return "F4 (hard 4)";
-
-//#ifdef WIN32_PLATFORM_WFSP
- if (hasSmartphoneResolution()) {
- int i = 0;
- while (SMARTPHONE_KEYS_MAPPING[i]) {
- if (keyCode == SMARTPHONE_KEYS_MAPPING[i])
- return SMARTPHONE_KEYS_NAME[i];
- i++;
- }
+ switch (keyCode) {
+ case SDLK_F1:
+ return "Softkey A";
+ case SDLK_F2:
+ return "Softkey B";
+ case SDLK_F3:
+ return "Talk";
+ case SDLK_F4:
+ return "End";
+ case SDLK_APP1:
+ return "Application 1";
+ case SDLK_APP2:
+ return "Application 2";
+ case SDLK_APP3:
+ return "Application 3";
+ case SDLK_APP4:
+ return "Application 4";
+ case SDLK_APP5:
+ return "Application 5";
+ case SDLK_APP6:
+ return "Application 6";
+ case SDLK_LSUPER:
+ return "Home";
+ case SDLK_ESCAPE:
+ return "Back";
+ case SDLK_UP:
+ return "Up";
+ case SDLK_DOWN:
+ return "Down";
+ case SDLK_LEFT:
+ return "Left";
+ case SDLK_RIGHT:
+ return "Right";
+ case SDLK_RETURN:
+ return "Action";
+ case SDLK_F10:
+ return "Record";
+ case SDLK_F6:
+ return "Volume Up";
+ case SDLK_F7:
+ return "Volume Down";
+ case SDLK_F17:
+ return "Flip";
+ case SDLK_F18:
+ return "Power";
+ case SDLK_F16:
+ return "Speaker";
+ case SDLK_F8:
+ return "Star";
+ case SDLK_F9:
+ return "Pound";
+ case SDLK_F11:
+ return "Symbol";
+ case SDLK_F19:
+ return "Red Key";
+ case 0:
+ return "None";
+ default:
+ return SDL_GetKeyName((SDLKey)keyCode);
}
-//#endif
-
- sprintf(key_name, "Key %.4x", keyCode);
- return key_name;
}
-