diff options
Diffstat (limited to 'backends/platform/sdl')
| -rw-r--r-- | backends/platform/sdl/events.cpp | 58 | ||||
| -rw-r--r-- | backends/platform/sdl/sdl.cpp | 5 | ||||
| -rw-r--r-- | backends/platform/sdl/sdl.h | 3 | 
3 files changed, 66 insertions, 0 deletions
| diff --git a/backends/platform/sdl/events.cpp b/backends/platform/sdl/events.cpp index a7a9251678..c2edcf78fb 100644 --- a/backends/platform/sdl/events.cpp +++ b/backends/platform/sdl/events.cpp @@ -24,6 +24,7 @@   */  #include "backends/platform/sdl/sdl.h" +#include "backends/keymapper/keymapper.h"  #include "common/util.h"  #include "common/events.h" @@ -522,3 +523,60 @@ bool OSystem_SDL::remapKey(SDL_Event &ev, Common::Event &event) {  	return false;  } +void OSystem_SDL::setupKeymapper() { +	using namespace Common; +	Keymapper *mapper = getEventManager()->getKeymapper(); + +	HardwareKeySet *keySet = new HardwareKeySet(); +	keySet->addHardwareKey(new HardwareKey( "a", KeyState(KEYCODE_a), "a", kActionKeyType )); +	keySet->addHardwareKey(new HardwareKey( "s", KeyState(KEYCODE_s), "s", kActionKeyType )); +	keySet->addHardwareKey(new HardwareKey( "d", KeyState(KEYCODE_d), "d", kActionKeyType )); +	keySet->addHardwareKey(new HardwareKey( "f", KeyState(KEYCODE_f), "f", kActionKeyType )); +	keySet->addHardwareKey(new HardwareKey( "n", KeyState(KEYCODE_n), "n (vk)", kTriggerLeftKeyType, kVirtualKeyboardActionType )); +	keySet->addHardwareKey(new HardwareKey( "m", KeyState(KEYCODE_m), "m (remap)", kTriggerRightKeyType, kKeyRemapActionType )); +	keySet->addHardwareKey(new HardwareKey( "[", KeyState(KEYCODE_LEFTBRACKET), "[ (select)", kSelectKeyType )); +	keySet->addHardwareKey(new HardwareKey( "]", KeyState(KEYCODE_RIGHTBRACKET), "] (start)", kStartKeyType )); +	mapper->registerHardwareKeySet(keySet); + +	Keymap *globalMap = new Keymap("global"); +	Keymap *guiMap = new Keymap("gui"); +	Action *act; +	Event evt ; + +	act = new Action(globalMap, "MENU", "Menu", kGenericActionType, kSelectKeyType); +	act->addKeyEvent(KeyState(KEYCODE_F5, ASCII_F5, 0)); +	 +	act = new Action(globalMap, "SKCT", "Skip", kGenericActionType, kActionKeyType); +	act->addKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE, 0)); + +	act = new Action(globalMap, "PAUS", "Pause", kGenericActionType, kStartKeyType); +	act->addKeyEvent(KeyState(KEYCODE_SPACE, ' ', 0)); +	 +	act = new Action(globalMap, "SKLI", "Skip line", kGenericActionType, kActionKeyType); +	act->addKeyEvent(KeyState(KEYCODE_PERIOD, '.', 0)); + +	act = new Action(globalMap, "VIRT", "Display keyboard", kVirtualKeyboardActionType); +	act->addKeyEvent(KeyState(KEYCODE_F6, ASCII_F6, 0)); + +	act = new Action(globalMap, "REMP", "Remap keys", kKeyRemapActionType); +	act->addKeyEvent(KeyState(KEYCODE_F7, ASCII_F7, 0)); + +	mapper->addGlobalKeymap(globalMap); + +	act = new Action(guiMap, "CLOS", "Close", kGenericActionType, kStartKeyType); +	act->addKeyEvent(KeyState(KEYCODE_ESCAPE, ASCII_ESCAPE, 0)); +	 +	act = new Action(guiMap, "CLIK", "Mouse click"); +	act->addLeftClickEvent(); + +	act = new Action(guiMap, "VIRT", "Display keyboard", kVirtualKeyboardActionType); +	act->addKeyEvent(KeyState(KEYCODE_F6, ASCII_F6, 0)); + +	act = new Action(guiMap, "REMP", "Remap keys", kKeyRemapActionType); +	act->addKeyEvent(KeyState(KEYCODE_F7, ASCII_F7, 0)); + +	mapper->addGlobalKeymap(guiMap); + +	mapper->pushKeymap("global"); +} + diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp index 9a6f294a55..fdc1ba97f6 100644 --- a/backends/platform/sdl/sdl.cpp +++ b/backends/platform/sdl/sdl.cpp @@ -159,6 +159,11 @@ void OSystem_SDL::initBackend() {  		setupMixer();  	} +	// Setup the keymapper with backend's set of keys +	// NOTE: must be done before creating TimerManager  +	// to avoid race conditions in creating EventManager +	setupKeymapper(); +  	// Create and hook up the timer manager, if none exists yet (we check for  	// this to allow subclasses to provide their own).  	if (_timer == 0) { diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h index 1cc0acbc29..3639d61c3a 100644 --- a/backends/platform/sdl/sdl.h +++ b/backends/platform/sdl/sdl.h @@ -142,6 +142,9 @@ public:  	// Returns true if an event was retrieved.  	virtual bool pollEvent(Common::Event &event); // overloaded by CE backend +	// Sets up the keymapper with the backends hardware key set +	virtual void setupKeymapper(); +  	// Set function that generates samples  	virtual void setupMixer();  	static void mixCallback(void *s, byte *samples, int len); | 
