aboutsummaryrefslogtreecommitdiff
path: root/backends/events/ps3sdl
diff options
context:
space:
mode:
authorBastien Bouclet2011-06-04 12:54:37 +0200
committerBastien Bouclet2011-06-22 19:57:44 +0200
commit6633a06519bfc0a826e1e1664b88c4dd413abbeb (patch)
treeef3c4ebc961cbfa08e242de0d8fd8cec8eb2bae9 /backends/events/ps3sdl
parent8bd78b6325213695116c1494c65795406d797b0b (diff)
downloadscummvm-rg350-6633a06519bfc0a826e1e1664b88c4dd413abbeb.tar.gz
scummvm-rg350-6633a06519bfc0a826e1e1664b88c4dd413abbeb.tar.bz2
scummvm-rg350-6633a06519bfc0a826e1e1664b88c4dd413abbeb.zip
PS3: Map joypad buttons to features. Enable the virtual keyboard.
Diffstat (limited to 'backends/events/ps3sdl')
-rw-r--r--backends/events/ps3sdl/ps3sdl-events.cpp124
-rw-r--r--backends/events/ps3sdl/ps3sdl-events.h37
2 files changed, 161 insertions, 0 deletions
diff --git a/backends/events/ps3sdl/ps3sdl-events.cpp b/backends/events/ps3sdl/ps3sdl-events.cpp
new file mode 100644
index 0000000000..4bcc8e15ba
--- /dev/null
+++ b/backends/events/ps3sdl/ps3sdl-events.cpp
@@ -0,0 +1,124 @@
+/* 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.
+ *
+ */
+
+#include "common/scummsys.h"
+
+#if defined(PLAYSTATION3)
+
+#include "backends/events/ps3sdl/ps3sdl-events.h"
+
+#include "common/util.h"
+#include "common/events.h"
+
+enum {
+ BTN_LEFT = 0,
+ BTN_DOWN = 1,
+ BTN_RIGHT = 2,
+ BTN_UP = 3,
+
+ BTN_START = 4,
+ BTN_R3 = 5,
+ BTN_L3 = 6,
+ BTN_SELECT = 7,
+
+ BTN_SQUARE = 8,
+ BTN_CROSS = 9,
+ BTN_CIRCLE = 10,
+ BTN_TRIANGLE = 11,
+
+ BTN_R1 = 12,
+ BTN_L1 = 13,
+ BTN_R2 = 14,
+ BTN_L2 = 15
+};
+
+bool PS3SdlEventSource::handleJoyButtonDown(SDL_Event &ev, Common::Event &event) {
+
+ event.kbd.flags = 0;
+
+ switch (ev.jbutton.button) {
+ case BTN_CROSS: // Left mouse button
+ event.type = Common::EVENT_LBUTTONDOWN;
+ fillMouseEvent(event, _km.x, _km.y);
+ break;
+ case BTN_CIRCLE: // Right mouse button
+ event.type = Common::EVENT_RBUTTONDOWN;
+ fillMouseEvent(event, _km.x, _km.y);
+ break;
+ case BTN_TRIANGLE: // Game menu
+ event.type = Common::EVENT_KEYDOWN;
+ event.kbd.keycode = Common::KEYCODE_F5;
+ event.kbd.ascii = mapKey(SDLK_F5, (SDLMod) ev.key.keysym.mod, 0);
+ break;
+ case BTN_SELECT: // Virtual keyboard
+ event.type = Common::EVENT_KEYDOWN;
+ event.kbd.keycode = Common::KEYCODE_F7;
+ event.kbd.ascii = mapKey(SDLK_F7, (SDLMod) ev.key.keysym.mod, 0);
+ break;
+ case BTN_SQUARE: // Escape
+ event.type = Common::EVENT_KEYDOWN;
+ event.kbd.keycode = Common::KEYCODE_ESCAPE;
+ event.kbd.ascii = mapKey(SDLK_ESCAPE, (SDLMod) ev.key.keysym.mod, 0);
+ break;
+ case BTN_L1: // Predictive input dialog
+ event.type = Common::EVENT_PREDICTIVE_DIALOG;
+ break;
+ case BTN_START: // ScummVM in game menu
+ event.type = Common::EVENT_MAINMENU;
+ break;
+ }
+ return true;
+}
+
+bool PS3SdlEventSource::handleJoyButtonUp(SDL_Event &ev, Common::Event &event) {
+
+ event.kbd.flags = 0;
+
+ switch (ev.jbutton.button) {
+ case BTN_CROSS: // Left mouse button
+ event.type = Common::EVENT_LBUTTONUP;
+ fillMouseEvent(event, _km.x, _km.y);
+ break;
+ case BTN_CIRCLE: // Right mouse button
+ event.type = Common::EVENT_RBUTTONUP;
+ fillMouseEvent(event, _km.x, _km.y);
+ break;
+ case BTN_TRIANGLE: // Game menu
+ event.type = Common::EVENT_KEYUP;
+ event.kbd.keycode = Common::KEYCODE_F5;
+ event.kbd.ascii = mapKey(SDLK_F5, (SDLMod) ev.key.keysym.mod, 0);
+ break;
+ case BTN_SELECT: // Virtual keyboard
+ event.type = Common::EVENT_KEYUP;
+ event.kbd.keycode = Common::KEYCODE_F7;
+ event.kbd.ascii = mapKey(SDLK_F7, (SDLMod) ev.key.keysym.mod, 0);
+ break;
+ case BTN_SQUARE: // Escape
+ event.type = Common::EVENT_KEYUP;
+ event.kbd.keycode = Common::KEYCODE_ESCAPE;
+ event.kbd.ascii = mapKey(SDLK_ESCAPE, (SDLMod) ev.key.keysym.mod, 0);
+ break;
+ }
+ return true;
+}
+
+#endif
diff --git a/backends/events/ps3sdl/ps3sdl-events.h b/backends/events/ps3sdl/ps3sdl-events.h
new file mode 100644
index 0000000000..328f613350
--- /dev/null
+++ b/backends/events/ps3sdl/ps3sdl-events.h
@@ -0,0 +1,37 @@
+/* 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.
+ *
+ */
+
+#if !defined(BACKEND_EVENTS_PS3_H) && !defined(DISABLE_DEFAULT_EVENTMANAGER)
+#define BACKEND_EVENTS_PS3_H
+
+#include "backends/events/sdl/sdl-events.h"
+
+/**
+ * SDL Events manager for the PS3.
+ */
+class PS3SdlEventSource : public SdlEventSource {
+protected:
+ bool handleJoyButtonDown(SDL_Event &ev, Common::Event &event);
+ bool handleJoyButtonUp(SDL_Event &ev, Common::Event &event);
+};
+
+#endif /* BACKEND_EVENTS_PS3_H */