diff --git a/docs/graphics/eventmapping.png b/docs/graphics/eventmapping.png
index 5ae1268bc..0132387ba 100644
Binary files a/docs/graphics/eventmapping.png and b/docs/graphics/eventmapping.png differ
diff --git a/docs/graphics/eventmapping_devsports.png b/docs/graphics/eventmapping_devsports.png
index a77937203..f0e39fbee 100644
Binary files a/docs/graphics/eventmapping_devsports.png and b/docs/graphics/eventmapping_devsports.png differ
diff --git a/docs/graphics/eventmapping_mouse.png b/docs/graphics/eventmapping_mouse.png
index 0e8383c20..8d9770090 100644
Binary files a/docs/graphics/eventmapping_mouse.png and b/docs/graphics/eventmapping_mouse.png differ
diff --git a/docs/graphics/eventmapping_remap.png b/docs/graphics/eventmapping_remap.png
index 9382691b3..7b7594ac1 100644
Binary files a/docs/graphics/eventmapping_remap.png and b/docs/graphics/eventmapping_remap.png differ
diff --git a/docs/index.html b/docs/index.html
index de4817083..68fdbabc7 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -3898,16 +3898,13 @@
while in emulation mode, the left arrow could mean 'joystick 0 left', while in UI
mode it could mean 'move cursor left'. Emulation mode occurs whenever you're
actually playing a game. UI mode occurs whenever a user interface is present
- (ROM launcher, debugger, settings menu, etc.). Because of these different modes,
- there are two separate mapping areas.
+ (ROM launcher, debugger, settings menu, etc.).
To remap an event:
- Enter Options Menu and click the Input Settings button.
- - If you wish to remap emulation events, click the 'Emulation Events' tab. Here
- you can also filter for the type of events.
- Otherwise, click the 'UI Events' tab for user interface events.
- - Select event you want to remap and click the 'Map' button.
+ - Click the 'Event Mappings' tab. Here you can also filter the list of events by type.
+
- Select the event you want to remap and click the 'Map' button.
- Now define the input:
- Either press a key, a modifier key (Control, Shift...) or a modifier+key combination.
diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx
index 4a0349394..204009867 100644
--- a/src/emucore/EventHandler.cxx
+++ b/src/emucore/EventHandler.cxx
@@ -2535,7 +2535,7 @@ StringList EventHandler::getActionList(const Event::EventSet& events, EventMode
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-VariantList EventHandler::getComboList(EventMode /**/) const
+VariantList EventHandler::getComboList() const
{
// For now, this only works in emulation mode
VariantList l;
@@ -3436,8 +3436,3 @@ const Event::EventSet EventHandler::DebugEvents = {
Event::ToggleColorLoss,
Event::ToggleJitter,
};
-
-// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-const Event::EventSet EventHandler::EditEvents = {
-
-};
diff --git a/src/emucore/EventHandler.hxx b/src/emucore/EventHandler.hxx
index 645ef4a74..847d948aa 100644
--- a/src/emucore/EventHandler.hxx
+++ b/src/emucore/EventHandler.hxx
@@ -175,7 +175,7 @@ class EventHandler
bool frying() const { return myFryingFlag; }
StringList getActionList(Event::Group group) const;
- VariantList getComboList(EventMode mode) const;
+ VariantList getComboList() const;
/** Used to access the list of events assigned to a specific combo event. */
StringList getComboListForEvent(Event::Type event) const;
@@ -548,7 +548,6 @@ class EventHandler
static const Event::EventSet DevicesEvents;
static const Event::EventSet ComboEvents;
static const Event::EventSet DebugEvents;
- static const Event::EventSet EditEvents;
/**
The following methods take care of assigning action mappings.
diff --git a/src/gui/EventMappingWidget.cxx b/src/gui/EventMappingWidget.cxx
index 584365b58..50767b0b5 100644
--- a/src/gui/EventMappingWidget.cxx
+++ b/src/gui/EventMappingWidget.cxx
@@ -36,11 +36,9 @@
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EventMappingWidget::EventMappingWidget(GuiObject* boss, const GUI::Font& font,
- int x, int y, int w, int h,
- EventMode mode)
+ int x, int y, int w, int h)
: Widget(boss, font, x, y, w, h),
- CommandSender(boss),
- myEventMode{mode}
+ CommandSender(boss)
{
const int lineHeight = boss->dialog().lineHeight(),
fontWidth = boss->dialog().fontWidth(),
@@ -54,31 +52,29 @@ EventMappingWidget::EventMappingWidget(GuiObject* boss, const GUI::Font& font,
const int listWidth = _w - buttonWidth - HBORDER * 2 - fontWidth;
int listHeight = _h - (2 + ACTION_LINES) * lineHeight - VBORDER + 2;
- if(mode == EventMode::kEmulationMode)
- {
- VariantList items;
+ VariantList items;
- items.clear();
- VarList::push_back(items, "All", Event::Group::Emulation);
- VarList::push_back(items, "Miscellaneous", Event::Group::Misc);
- VarList::push_back(items, "Video & Audio", Event::Group::AudioVideo);
- VarList::push_back(items, "States", Event::Group::States);
- VarList::push_back(items, "Console", Event::Group::Console);
- VarList::push_back(items, "Joystick", Event::Group::Joystick);
- VarList::push_back(items, "Paddles", Event::Group::Paddles);
- VarList::push_back(items, "Keyboard", Event::Group::Keyboard);
- VarList::push_back(items, "Input Devices & Ports", Event::Group::Devices);
- VarList::push_back(items, "Combo", Event::Group::Combo);
- VarList::push_back(items, "Debug", Event::Group::Debug);
+ items.clear();
+ VarList::push_back(items, "Emulation", Event::Group::Emulation);
+ VarList::push_back(items, " Miscellaneous", Event::Group::Misc);
+ VarList::push_back(items, " Video & Audio", Event::Group::AudioVideo);
+ VarList::push_back(items, " States", Event::Group::States);
+ VarList::push_back(items, " Console", Event::Group::Console);
+ VarList::push_back(items, " Joystick", Event::Group::Joystick);
+ VarList::push_back(items, " Paddles", Event::Group::Paddles);
+ VarList::push_back(items, " Keyboard", Event::Group::Keyboard);
+ VarList::push_back(items, " Input Devices & Ports", Event::Group::Devices);
+ VarList::push_back(items, " Combo", Event::Group::Combo);
+ VarList::push_back(items, " Debug", Event::Group::Debug);
+ VarList::push_back(items, "User Interface", Event::Group::Menu);
- myFilterPopup = new PopUpWidget(boss, font, xpos, ypos,
- listWidth - font.getStringWidth("Events ") - PopUpWidget::dropDownWidth(font),
- lineHeight, items, "Events ", 0, kFilterCmd);
- myFilterPopup->setTarget(this);
- addFocusWidget(myFilterPopup);
- ypos += lineHeight * 1.5;
- listHeight -= lineHeight * 1.5;
- }
+ myFilterPopup = new PopUpWidget(boss, font, xpos, ypos,
+ listWidth - font.getStringWidth("Events ") - PopUpWidget::dropDownWidth(font),
+ lineHeight, items, "Events ", 0, kFilterCmd);
+ myFilterPopup->setTarget(this);
+ addFocusWidget(myFilterPopup);
+ ypos += lineHeight * 1.5;
+ listHeight -= lineHeight * 1.5;
myActionsList = new StringListWidget(boss, font, xpos, ypos, listWidth, listHeight);
myActionsList->setTarget(this);
@@ -118,18 +114,15 @@ EventMappingWidget::EventMappingWidget(GuiObject* boss, const GUI::Font& font,
myResetButton->setTarget(this);
addFocusWidget(myResetButton);
- if(mode == EventMode::kEmulationMode)
- {
- ypos += buttonHeight + VGAP * 2;
- myComboButton = new ButtonWidget(boss, font, xpos, ypos,
- buttonWidth, buttonHeight,
- "Combo" + ELLIPSIS, kComboCmd);
- myComboButton->setTarget(this);
- addFocusWidget(myComboButton);
+ ypos += buttonHeight + VGAP * 2;
+ myComboButton = new ButtonWidget(boss, font, xpos, ypos,
+ buttonWidth, buttonHeight,
+ "Combo" + ELLIPSIS, kComboCmd);
+ myComboButton->setTarget(this);
+ addFocusWidget(myComboButton);
- VariantList combolist = instance().eventHandler().getComboList(mode);
- myComboDialog = make_unique(boss, font, combolist);
- }
+ VariantList combolist = instance().eventHandler().getComboList();
+ myComboDialog = make_unique(boss, font, combolist);
// Show message for currently selected event
xpos = HBORDER;
@@ -149,9 +142,7 @@ void EventMappingWidget::loadConfig()
{
if(myFirstTime)
{
- if(myFilterPopup)
- myFilterPopup->setSelectedIndex(0);
-
+ myFilterPopup->setSelectedIndex(0);
myFirstTime = false;
}
@@ -171,10 +162,11 @@ void EventMappingWidget::saveConfig()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void EventMappingWidget::updateActions()
{
- if(myFilterPopup)
- myEventGroup = Event::Group(myFilterPopup->getSelectedTag().toInt());
- else
- myEventGroup = Event::Group::Menu;
+ myEventGroup = Event::Group(myFilterPopup->getSelectedTag().toInt());
+ myEventMode = myEventGroup == Event::Group::Menu
+ ? myEventMode = EventMode::kMenuMode
+ : myEventMode = EventMode::kEmulationMode;
+
StringList actions = instance().eventHandler().getActionList(myEventGroup);
myActionsList->setList(actions);
@@ -294,13 +286,11 @@ void EventMappingWidget::enableButtons(bool state)
myCancelMapButton->setEnabled(!state);
myEraseButton->setEnabled(state);
myResetButton->setEnabled(state);
- if(myComboButton)
- {
- Event::Type e =
- instance().eventHandler().eventAtIndex(myActionSelected, myEventGroup);
- myComboButton->setEnabled(state && e >= Event::Combo1 && e <= Event::Combo16);
- }
+ Event::Type e =
+ instance().eventHandler().eventAtIndex(myActionSelected, myEventGroup);
+
+ myComboButton->setEnabled(state && e >= Event::Combo1 && e <= Event::Combo16);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/src/gui/EventMappingWidget.hxx b/src/gui/EventMappingWidget.hxx
index fb7d8c603..117f0f061 100644
--- a/src/gui/EventMappingWidget.hxx
+++ b/src/gui/EventMappingWidget.hxx
@@ -39,8 +39,7 @@ class EventMappingWidget : public Widget, public CommandSender
public:
EventMappingWidget(GuiObject* boss, const GUI::Font& font,
- int x, int y, int w, int h,
- EventMode mode);
+ int x, int y, int w, int h);
~EventMappingWidget() override = default;
bool remapMode() { return myRemapStatus; }
diff --git a/src/gui/InputDialog.cxx b/src/gui/InputDialog.cxx
index d6784472d..ca18d5239 100644
--- a/src/gui/InputDialog.cxx
+++ b/src/gui/InputDialog.cxx
@@ -64,30 +64,19 @@ InputDialog::InputDialog(OSystem& osystem, DialogContainer& parent,
_h -_th - VGAP - buttonHeight - VBORDER * 2);
addTabWidget(myTab);
- // 1) Event mapper for emulation actions
- tabID = myTab->addTab(" Emul. Events ", TabWidget::AUTO_WIDTH);
- myEmulEventMapper = new EventMappingWidget(myTab, _font, 2, 2,
+ // 1) Event mapper
+ tabID = myTab->addTab(" Event Mappings ", TabWidget::AUTO_WIDTH);
+ myEventMapper = new EventMappingWidget(myTab, _font, 2, 2,
myTab->getWidth(),
- myTab->getHeight() - VGAP,
- EventMode::kEmulationMode);
- myTab->setParentWidget(tabID, myEmulEventMapper);
- addToFocusList(myEmulEventMapper->getFocusList(), myTab, tabID);
+ myTab->getHeight() - VGAP);
+ myTab->setParentWidget(tabID, myEventMapper);
+ addToFocusList(myEventMapper->getFocusList(), myTab, tabID);
myTab->parentWidget(tabID)->setHelpAnchor("Remapping");
- // 2) Event mapper for UI actions
- tabID = myTab->addTab(" UI Events ", TabWidget::AUTO_WIDTH);
- myMenuEventMapper = new EventMappingWidget(myTab, _font, 2, 2,
- myTab->getWidth(),
- myTab->getHeight() - VGAP,
- EventMode::kMenuMode);
- myTab->setParentWidget(tabID, myMenuEventMapper);
- addToFocusList(myMenuEventMapper->getFocusList(), myTab, tabID);
- myTab->parentWidget(tabID)->setHelpAnchor("Remapping");
-
- // 3) Devices & ports
+ // 2) Devices & ports
addDevicePortTab();
- // 4) Mouse
+ // 3) Mouse
addMouseTab();
// Finalize the tabs, and activate the first tab
@@ -120,7 +109,7 @@ void InputDialog::addDevicePortTab()
WidgetArray wid;
// Devices/ports
- tabID = myTab->addTab("Devices & Ports", TabWidget::AUTO_WIDTH);
+ tabID = myTab->addTab(" Devices & Ports ", TabWidget::AUTO_WIDTH);
ypos = VBORDER;
lwidth = _font.getStringWidth("Digital paddle sensitivity ");
@@ -255,7 +244,7 @@ void InputDialog::addMouseTab()
VariantList items;
// Mouse
- tabID = myTab->addTab(" Mouse ", TabWidget::AUTO_WIDTH);
+ tabID = myTab->addTab(" Mouse ", TabWidget::AUTO_WIDTH);
ypos = VBORDER;
lwidth = _font.getStringWidth("Use mouse as a controller ");
@@ -497,14 +486,10 @@ void InputDialog::setDefaults()
switch(myTab->getActiveTab())
{
case 0: // Emulation events
- myEmulEventMapper->setDefaults();
+ myEventMapper->setDefaults();
break;
- case 1: // UI events
- myMenuEventMapper->setDefaults();
- break;
-
- case 2: // Devices & Ports
+ case 1: // Devices & Ports
// Joystick deadzone
myDeadzone->setValue(0);
@@ -537,7 +522,7 @@ void InputDialog::setDefaults()
myAVoxPort->setSelectedIndex(0);
break;
- case 3: // Mouse
+ case 2: // Mouse
// Use mouse as a controller
myMouseControl->setSelected("analog");
@@ -564,17 +549,15 @@ void InputDialog::setDefaults()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool InputDialog::repeatEnabled()
{
- return !myEmulEventMapper->isRemapping() && !myMenuEventMapper->isRemapping();
+ return !myEventMapper->isRemapping();
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void InputDialog::handleKeyDown(StellaKey key, StellaMod mod, bool repeated)
{
// Remap key events in remap mode, otherwise pass to parent dialog
- if (myEmulEventMapper->remapMode())
- myEmulEventMapper->handleKeyDown(key, mod);
- else if (myMenuEventMapper->remapMode())
- myMenuEventMapper->handleKeyDown(key, mod);
+ if (myEventMapper->remapMode())
+ myEventMapper->handleKeyDown(key, mod);
else
Dialog::handleKeyDown(key, mod);
}
@@ -583,10 +566,8 @@ void InputDialog::handleKeyDown(StellaKey key, StellaMod mod, bool repeated)
void InputDialog::handleKeyUp(StellaKey key, StellaMod mod)
{
// Remap key events in remap mode, otherwise pass to parent dialog
- if (myEmulEventMapper->remapMode())
- myEmulEventMapper->handleKeyUp(key, mod);
- else if (myMenuEventMapper->remapMode())
- myMenuEventMapper->handleKeyUp(key, mod);
+ if (myEventMapper->remapMode())
+ myEventMapper->handleKeyUp(key, mod);
else
Dialog::handleKeyUp(key, mod);
}
@@ -595,10 +576,8 @@ void InputDialog::handleKeyUp(StellaKey key, StellaMod mod)
void InputDialog::handleJoyDown(int stick, int button, bool longPress)
{
// Remap joystick buttons in remap mode, otherwise pass to parent dialog
- if(myEmulEventMapper->remapMode())
- myEmulEventMapper->handleJoyDown(stick, button);
- else if(myMenuEventMapper->remapMode())
- myMenuEventMapper->handleJoyDown(stick, button);
+ if(myEventMapper->remapMode())
+ myEventMapper->handleJoyDown(stick, button);
else
Dialog::handleJoyDown(stick, button);
}
@@ -607,10 +586,8 @@ void InputDialog::handleJoyDown(int stick, int button, bool longPress)
void InputDialog::handleJoyUp(int stick, int button)
{
// Remap joystick buttons in remap mode, otherwise pass to parent dialog
- if (myEmulEventMapper->remapMode())
- myEmulEventMapper->handleJoyUp(stick, button);
- else if (myMenuEventMapper->remapMode())
- myMenuEventMapper->handleJoyUp(stick, button);
+ if (myEventMapper->remapMode())
+ myEventMapper->handleJoyUp(stick, button);
else
Dialog::handleJoyUp(stick, button);
}
@@ -619,10 +596,8 @@ void InputDialog::handleJoyUp(int stick, int button)
void InputDialog::handleJoyAxis(int stick, JoyAxis axis, JoyDir adir, int button)
{
// Remap joystick axis in remap mode, otherwise pass to parent dialog
- if(myEmulEventMapper->remapMode())
- myEmulEventMapper->handleJoyAxis(stick, axis, adir, button);
- else if(myMenuEventMapper->remapMode())
- myMenuEventMapper->handleJoyAxis(stick, axis, adir, button);
+ if(myEventMapper->remapMode())
+ myEventMapper->handleJoyAxis(stick, axis, adir, button);
else
Dialog::handleJoyAxis(stick, axis, adir, button);
}
@@ -631,10 +606,8 @@ void InputDialog::handleJoyAxis(int stick, JoyAxis axis, JoyDir adir, int button
bool InputDialog::handleJoyHat(int stick, int hat, JoyHatDir hdir, int button)
{
// Remap joystick hat in remap mode, otherwise pass to parent dialog
- if(myEmulEventMapper->remapMode())
- return myEmulEventMapper->handleJoyHat(stick, hat, hdir, button);
- else if(myMenuEventMapper->remapMode())
- return myMenuEventMapper->handleJoyHat(stick, hat, hdir, button);
+ if(myEventMapper->remapMode())
+ return myEventMapper->handleJoyHat(stick, hat, hdir, button);
else
return Dialog::handleJoyHat(stick, hat, hdir, button);
}
diff --git a/src/gui/InputDialog.hxx b/src/gui/InputDialog.hxx
index 7faf9d0e8..e2faeca0f 100644
--- a/src/gui/InputDialog.hxx
+++ b/src/gui/InputDialog.hxx
@@ -89,8 +89,8 @@ class InputDialog : public Dialog
TabWidget* myTab{nullptr};
- EventMappingWidget* myEmulEventMapper{nullptr};
- EventMappingWidget* myMenuEventMapper{nullptr};
+ EventMappingWidget* myEventMapper{nullptr};
+// EventMappingWidget* myMenuEventMapper{nullptr};
CheckboxWidget* mySAPort{nullptr};