diff --git a/src/common/PJoystickHandler.cxx b/src/common/PJoystickHandler.cxx index 06e21d3b7..a2bfb94db 100644 --- a/src/common/PJoystickHandler.cxx +++ b/src/common/PJoystickHandler.cxx @@ -259,20 +259,12 @@ void PhysicalJoystickHandler::setDefaultAction(const PhysicalJoystickPtr& j, else if (eraseAll || map.event == event) { // TODO: allow for multiple defaults - j->joyMap.eraseEvent(map.event, mode); + //j->joyMap.eraseEvent(map.event, mode); j->joyMap.add(map.event, mode, map.button, map.axis, map.adir, map.hat, map.hdir); } } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void PhysicalJoystickHandler::setDefaultMapping(Event::Type event, EventMode mode) -{ - eraseMapping(event, mode); - for(auto& i: mySticks) - setStickDefaultMapping(i.first, event, mode); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void PhysicalJoystickHandler::setStickDefaultMapping(int stick, Event::Type event, EventMode mode, bool updateDefaults) @@ -317,6 +309,14 @@ void PhysicalJoystickHandler::setStickDefaultMapping(int stick, Event::Type even } } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void PhysicalJoystickHandler::setDefaultMapping(Event::Type event, EventMode mode) +{ + eraseMapping(event, mode); + for (auto& i : mySticks) + setStickDefaultMapping(i.first, event, mode); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void PhysicalJoystickHandler::defineControllerMappings(const string& controllerName, Controller::Jack port) { @@ -485,7 +485,13 @@ void PhysicalJoystickHandler::eraseMapping(Event::Type event, EventMode mode) for (auto& stick : mySticks) { stick.second->eraseMap(mode); // erase all events - stick.second->eraseMap(getEventMode(event, mode)); + if (mode == kEmulationMode) + { + stick.second->eraseMap(kCommonMode); + stick.second->eraseMap(kJoystickMode); + stick.second->eraseMap(kPaddlesMode); + stick.second->eraseMap(kKeypadMode); + } } } else @@ -774,11 +780,11 @@ PhysicalJoystickHandler::EventMappingArray PhysicalJoystickHandler::DefaultLeftJ {Event::JoystickZeroUp, JOY_CTRL_NONE, JoyAxis::Y, JoyDir::NEG}, {Event::JoystickZeroDown, JOY_CTRL_NONE, JoyAxis::Y, JoyDir::POS}, // Left joystick left/right directions (assume hat 0) - /*{Event::JoystickZeroLeft, JOY_CTRL_NONE, JoyAxis::NONE, JoyDir::NONE, 0, JoyHat::LEFT}, + {Event::JoystickZeroLeft, JOY_CTRL_NONE, JoyAxis::NONE, JoyDir::NONE, 0, JoyHat::LEFT}, {Event::JoystickZeroRight, JOY_CTRL_NONE, JoyAxis::NONE, JoyDir::NONE, 0, JoyHat::RIGHT}, // Left joystick up/down directions (assume hat 0) {Event::JoystickZeroUp, JOY_CTRL_NONE, JoyAxis::NONE, JoyDir::NONE, 0, JoyHat::UP}, - {Event::JoystickZeroDown, JOY_CTRL_NONE, JoyAxis::NONE, JoyDir::NONE, 0, JoyHat::DOWN},*/ + {Event::JoystickZeroDown, JOY_CTRL_NONE, JoyAxis::NONE, JoyDir::NONE, 0, JoyHat::DOWN}, }; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/common/PKeyboardHandler.cxx b/src/common/PKeyboardHandler.cxx index ce0342a1a..39b3c47d3 100644 --- a/src/common/PKeyboardHandler.cxx +++ b/src/common/PKeyboardHandler.cxx @@ -94,7 +94,7 @@ void PhysicalKeyboardHandler::setDefaultKey(EventMapping map, Event::Type event, } else if (eraseAll || map.event == event) { - myKeyMap.eraseEvent(map.event, mode); + //myKeyMap.eraseEvent(map.event, mode); myKeyMap.add(map.event, mode, map.key, map.mod); } } @@ -107,6 +107,12 @@ void PhysicalKeyboardHandler::setDefaultKey(EventMapping map, Event::Type event, void PhysicalKeyboardHandler::setDefaultMapping(Event::Type event, EventMode mode, bool updateDefaults) { + if (!updateDefaults) + { + myKeyMap.eraseEvent(event, mode); + myKeyMap.eraseEvent(event, getEventMode(event, mode)); + } + switch(mode) { case kEmulationMode: