PS3: Map joypad buttons to features. Enable the virtual keyboard.
This commit is contained in:
parent
8bd78b6325
commit
6633a06519
6 changed files with 171 additions and 1 deletions
124
backends/events/ps3sdl/ps3sdl-events.cpp
Normal file
124
backends/events/ps3sdl/ps3sdl-events.cpp
Normal file
|
@ -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
|
37
backends/events/ps3sdl/ps3sdl-events.h
Normal file
37
backends/events/ps3sdl/ps3sdl-events.h
Normal file
|
@ -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 */
|
|
@ -109,6 +109,7 @@ MODULE_OBJS += \
|
|||
fs/posix/posix-fs.o \
|
||||
fs/posix/posix-fs-factory.o \
|
||||
fs/ps3/ps3-fs-factory.o \
|
||||
events/ps3sdl/ps3sdl-events.o \
|
||||
mixer/sdl13/sdl13-mixer.o
|
||||
endif
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include "backends/graphics/surfacesdl/surfacesdl-graphics.h"
|
||||
#include "backends/saves/default/default-saves.h"
|
||||
#include "backends/fs/ps3/ps3-fs-factory.h"
|
||||
#include "backends/events/ps3sdl/ps3sdl-events.h"
|
||||
#include "backends/mixer/sdl13/sdl13-mixer.h"
|
||||
|
||||
#include <dirent.h>
|
||||
|
@ -58,7 +59,8 @@ void OSystem_PS3::init() {
|
|||
}
|
||||
|
||||
void OSystem_PS3::initBackend() {
|
||||
ConfMan.registerDefault("joystick_num", 0);
|
||||
ConfMan.set("joystick_num", 0);
|
||||
ConfMan.set("vkeybdpath", PREFIX "/data");
|
||||
ConfMan.registerDefault("fullscreen", true);
|
||||
ConfMan.registerDefault("aspect_ratio", true);
|
||||
|
||||
|
@ -74,6 +76,10 @@ void OSystem_PS3::initBackend() {
|
|||
_mixerManager->init();
|
||||
}
|
||||
|
||||
// Event source
|
||||
if (_eventSource == 0)
|
||||
_eventSource = new PS3SdlEventSource();
|
||||
|
||||
// Invoke parent implementation of this method
|
||||
OSystem_SDL::initBackend();
|
||||
}
|
||||
|
|
1
configure
vendored
1
configure
vendored
|
@ -2232,6 +2232,7 @@ if test -n "$_host"; then
|
|||
ps3)
|
||||
_mt32emu=no
|
||||
_timidity=no
|
||||
_vkeybd=yes
|
||||
;;
|
||||
psp)
|
||||
_backend="psp"
|
||||
|
|
1
ports.mk
1
ports.mk
|
@ -227,6 +227,7 @@ ifdef DIST_FILES_ENGINEDATA
|
|||
cp $(DIST_FILES_ENGINEDATA) ps3pkg/USRDIR/data/
|
||||
endif
|
||||
cp $(DIST_FILES_DOCS) ps3pkg/USRDIR/doc/
|
||||
cp $(srcdir)/backends/vkeybd/packs/vkeybd_default.zip ps3pkg/USRDIR/data/
|
||||
cp dists/ps3/ICON0.PNG ps3pkg/
|
||||
cp dists/ps3/PIC1.PNG ps3pkg/
|
||||
sfo.py -f dists/ps3/sfo.xml ps3pkg/PARAM.SFO
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue