diff options
author | Max Horn | 2010-11-28 14:56:31 +0000 |
---|---|---|
committer | Max Horn | 2010-11-28 14:56:31 +0000 |
commit | 7760077cf530c35c969f9286145d9a36d0440d70 (patch) | |
tree | 34c67abbacefa26792ca77fc9f5360c77a34663d /backends/platform/dingux/dingux-events.cpp | |
parent | 284b49aabc54590e1444f06561a815c2a3c5de7e (diff) | |
parent | 74a53df11b51fa4956745c086b2e6351b8383568 (diff) | |
download | scummvm-rg350-7760077cf530c35c969f9286145d9a36d0440d70.tar.gz scummvm-rg350-7760077cf530c35c969f9286145d9a36d0440d70.tar.bz2 scummvm-rg350-7760077cf530c35c969f9286145d9a36d0440d70.zip |
Merging the gsoc2010-opengl branch
svn-id: r54518
Diffstat (limited to 'backends/platform/dingux/dingux-events.cpp')
-rw-r--r-- | backends/platform/dingux/dingux-events.cpp | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/backends/platform/dingux/dingux-events.cpp b/backends/platform/dingux/dingux-events.cpp deleted file mode 100644 index f9b519623d..0000000000 --- a/backends/platform/dingux/dingux-events.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - * - */ - -#include "backends/platform/dingux/dingux.h" - -#include "graphics/scaler/aspect.h" // for aspect2Real - -#if defined (DINGUX) - -#define PAD_UP SDLK_UP -#define PAD_DOWN SDLK_DOWN -#define PAD_LEFT SDLK_LEFT -#define PAD_RIGHT SDLK_RIGHT -#define BUT_A SDLK_LCTRL -#define BUT_B SDLK_LALT -#define BUT_X SDLK_SPACE -#define BUT_Y SDLK_LSHIFT -#define BUT_SELECT SDLK_ESCAPE -#define BUT_START SDLK_RETURN -#define TRIG_L SDLK_TAB -#define TRIG_R SDLK_BACKSPACE - -static int mapKey(SDLKey key, SDLMod mod, Uint16 unicode) { - if (key >= SDLK_F1 && key <= SDLK_F9) { - return key - SDLK_F1 + Common::ASCII_F1; - } else if (key >= SDLK_KP0 && key <= SDLK_KP9) { - return key - SDLK_KP0 + '0'; - } else if (key >= SDLK_UP && key <= SDLK_PAGEDOWN) { - return key; - } else if (unicode) { - return unicode; - } else if (key >= 'a' && key <= 'z' && (mod & KMOD_SHIFT)) { - return key & ~0x20; - } else if (key >= SDLK_NUMLOCK && key <= SDLK_EURO) { - return 0; - } - return key; -} - -bool OSystem_SDL_Dingux::remapKey(SDL_Event &ev, Common::Event &event) { - if (ev.key.keysym.sym == PAD_UP) { - if (ev.type == SDL_KEYDOWN) { - _km.y_vel = -1; - _km.y_down_count = 1; - } else { - _km.y_vel = 0; - _km.y_down_count = 0; - } - - event.type = Common::EVENT_MOUSEMOVE; - fillMouseEvent(event, _km.x, _km.y); - - return true; - } else if (ev.key.keysym.sym == PAD_DOWN) { - if (ev.type == SDL_KEYDOWN) { - _km.y_vel = 1; - _km.y_down_count = 1; - } else { - _km.y_vel = 0; - _km.y_down_count = 0; - } - - event.type = Common::EVENT_MOUSEMOVE; - fillMouseEvent(event, _km.x, _km.y); - - return true; - } else if (ev.key.keysym.sym == PAD_LEFT) { - if (ev.type == SDL_KEYDOWN) { - _km.x_vel = -1; - _km.x_down_count = 1; - } else { - _km.x_vel = 0; - _km.x_down_count = 0; - } - - event.type = Common::EVENT_MOUSEMOVE; - fillMouseEvent(event, _km.x, _km.y); - - return true; - } else if (ev.key.keysym.sym == PAD_RIGHT) { - if (ev.type == SDL_KEYDOWN) { - _km.x_vel = 1; - _km.x_down_count = 1; - } else { - _km.x_vel = 0; - _km.x_down_count = 0; - } - - event.type = Common::EVENT_MOUSEMOVE; - fillMouseEvent(event, _km.x, _km.y); - - return true; - } else if (ev.key.keysym.sym == BUT_Y) { // left mouse button - if (ev.type == SDL_KEYDOWN) { - event.type = Common::EVENT_LBUTTONDOWN; - } else { - event.type = Common::EVENT_LBUTTONUP; - } - - fillMouseEvent(event, _km.x, _km.y); - - return true; - } else if (ev.key.keysym.sym == BUT_B) { // right mouse button - if (ev.type == SDL_KEYDOWN) { - event.type = Common::EVENT_RBUTTONDOWN; - } else { - event.type = Common::EVENT_RBUTTONUP; - } - - fillMouseEvent(event, _km.x, _km.y); - - return true; - } else if (ev.key.keysym.sym == BUT_X) { // '.' skip dialogue - ev.key.keysym.sym = SDLK_PERIOD; - ev.key.keysym.mod = (SDLMod)0; - ev.key.keysym.unicode = '.'; - } else if (ev.key.keysym.sym == TRIG_L) { // global menu - ev.key.keysym.sym = SDLK_F5; - event.kbd.keycode = Common::KEYCODE_F5; - event.kbd.ascii = Common::ASCII_F5; - event.kbd.flags = Common::KBD_CTRL; - - if (ev.type == SDL_KEYDOWN) { - event.type = Common::EVENT_KEYDOWN; - } else { - event.type = Common::EVENT_KEYUP; - } - - return true; - } else if (ev.key.keysym.sym == BUT_A) { // key '0' - ev.key.keysym.sym = SDLK_0; - - event.kbd.keycode = Common::KEYCODE_0; - event.kbd.ascii = '0'; - event.kbd.flags = 0; - - if (ev.type == SDL_KEYDOWN) { - event.type = Common::EVENT_KEYDOWN; - } else { - event.type = Common::EVENT_KEYUP; - } - - return true; - } else if (ev.key.keysym.sym == BUT_SELECT) { // virtual keyboard - ev.key.keysym.sym = SDLK_F7; - - } else if (ev.key.keysym.sym == BUT_START) { // F5, menu in some games - ev.key.keysym.sym = SDLK_F5; - - } else if (ev.key.keysym.sym == TRIG_R) { // ESC - ev.key.keysym.sym = SDLK_ESCAPE; - } else { - event.kbd.keycode = (Common::KeyCode)ev.key.keysym.sym; - event.kbd.ascii = mapKey(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode); - } - - return false; -} - -void OSystem_SDL_Dingux::fillMouseEvent(Common::Event &event, int x, int y) { - if (_videoMode.mode == GFX_HALF && !_overlayVisible) { - event.mouse.x = x * 2; - event.mouse.y = y * 2; - } else { - event.mouse.x = x; - event.mouse.y = y; - } - - // Update the "keyboard mouse" coords - _km.x = x; - _km.y = y; - - // Adjust for the screen scaling - if (!_overlayVisible) { - event.mouse.x /= _videoMode.scaleFactor; - event.mouse.y /= _videoMode.scaleFactor; - if (_videoMode.aspectRatioCorrection) - event.mouse.y = aspect2Real(event.mouse.y); - } -} - -void OSystem_SDL_Dingux::warpMouse(int x, int y) { - if (_mouseCurState.x != x || _mouseCurState.y != y) { - if (_videoMode.mode == GFX_HALF && !_overlayVisible) { - x = x / 2; - y = y / 2; - } - } - OSystem_SDL::warpMouse(x, y); -} - -#endif - |