Keymapper:
- Introduced new OSystem method getHardwareKeySet() with default implementation - Moved global keymap creation to base/main.cpp - Moved GUI keymap creation to gui/GuiManager.cpp - Added various safeguard checks to various keymapper methods Now it is really possible to add keymapper to all backends. svn-id: r40439
This commit is contained in:
parent
7604301c30
commit
665e472ef0
8 changed files with 109 additions and 53 deletions
|
@ -50,8 +50,7 @@
|
|||
|
||||
|
||||
|
||||
static int mapKey(SDLKey key, SDLMod mod, Uint16 unicode)
|
||||
{
|
||||
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) {
|
||||
|
@ -522,10 +521,9 @@ bool OSystem_SDL::remapKey(SDL_Event &ev, Common::Event &event) {
|
|||
return false;
|
||||
}
|
||||
|
||||
void OSystem_SDL::setupKeymapper() {
|
||||
Common::HardwareKeySet *OSystem_SDL::getHardwareKeySet() {
|
||||
#ifdef ENABLE_KEYMAPPER
|
||||
using namespace Common;
|
||||
Keymapper *mapper = getEventManager()->getKeymapper();
|
||||
|
||||
HardwareKeySet *keySet = new HardwareKeySet();
|
||||
keySet->addHardwareKey(new HardwareKey( "a", KeyState(KEYCODE_a), "a", kActionKeyType ));
|
||||
|
@ -536,49 +534,10 @@ void OSystem_SDL::setupKeymapper() {
|
|||
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");
|
||||
Action *act;
|
||||
return keySet;
|
||||
|
||||
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_F7, ASCII_F7, 0));
|
||||
|
||||
act = new Action(globalMap, "REMP", "Remap keys", kKeyRemapActionType);
|
||||
act->addKeyEvent(KeyState(KEYCODE_F8, ASCII_F8, 0));
|
||||
|
||||
mapper->addGlobalKeymap(globalMap);
|
||||
|
||||
|
||||
Keymap *guiMap = new Keymap("gui");
|
||||
|
||||
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_F7, ASCII_F7, 0));
|
||||
|
||||
act = new Action(guiMap, "REMP", "Remap keys", kKeyRemapActionType);
|
||||
act->addKeyEvent(KeyState(KEYCODE_F8, ASCII_F8, 0));
|
||||
|
||||
mapper->addGlobalKeymap(guiMap);
|
||||
|
||||
mapper->pushKeymap("global");
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -170,11 +170,6 @@ 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) {
|
||||
|
|
|
@ -136,8 +136,7 @@ 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();
|
||||
Common::HardwareKeySet *getHardwareKeySet();
|
||||
|
||||
// Set function that generates samples
|
||||
virtual void setupMixer();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue