## Link to GitHub Issue or related Pull Request, if one exists Fixes #635 ## Description of change Adds optional **button modifiers**, allowing a binding to require one or more "modifier" buttons to be held before it activates. - New "Modifiers" controller page in the overlay config to bind the Modifier 1–4 source buttons. - Each binding gains a 4-bit modifier_mask (Modifier 1-4). It is persisted as an optional modifiers XML attribute on button nodes and controller-preset entries. The attribute is optional and defaults to 0, so existing config files and presets load unchanged and the feature is off unless the user opts in. - The button Edit properties popup gains a "Modifiers" dropdown to pick which modifiers a binding requires. Doesn't apply to MIDI though. - Input evaluation skips a binding whose required modifiers are not held, falling through to its alternatives; velocity reporting uses the same gated path. - Controller-preset templates gain a "Modifiers" group for importing and exporting. ## Testing
82 lines
2.2 KiB
C++
82 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include <vector>
|
|
#include "cfg/api.h"
|
|
|
|
namespace games {
|
|
|
|
namespace ModifierButtons {
|
|
enum {
|
|
Modifier1,
|
|
Modifier2,
|
|
Modifier3,
|
|
Modifier4,
|
|
Size,
|
|
};
|
|
}
|
|
|
|
namespace OverlayButtons {
|
|
enum {
|
|
Screenshot,
|
|
ToggleAllWindows,
|
|
ToggleMainMenu,
|
|
ToggleSubScreen,
|
|
InsertCoin,
|
|
ToggleIOPanel,
|
|
ToggleConfig,
|
|
ToggleVirtualKeypadP1,
|
|
ToggleVirtualKeypadP2,
|
|
ToggleCardManager,
|
|
ToggleLog,
|
|
ToggleControl,
|
|
TogglePatchManager,
|
|
ToggleScreenResize,
|
|
ToggleFps,
|
|
ToggleCameraControl,
|
|
ToggleOBSControl,
|
|
TriggerPinMacroP1,
|
|
TriggerPinMacroP2,
|
|
ScreenResize,
|
|
ScreenResizeScene1,
|
|
ScreenResizeScene2,
|
|
ScreenResizeScene3,
|
|
ScreenResizeScene4,
|
|
SuperExit,
|
|
HotkeyEnable1,
|
|
HotkeyEnable2,
|
|
HotkeyToggle,
|
|
};
|
|
}
|
|
|
|
namespace KeypadButtons {
|
|
enum {
|
|
Keypad0,
|
|
Keypad1,
|
|
Keypad2,
|
|
Keypad3,
|
|
Keypad4,
|
|
Keypad5,
|
|
Keypad6,
|
|
Keypad7,
|
|
Keypad8,
|
|
Keypad9,
|
|
Keypad00,
|
|
KeypadDecimal,
|
|
InsertCard,
|
|
Size,
|
|
};
|
|
}
|
|
|
|
const std::vector<std::string> &get_games();
|
|
std::vector<Button> *get_buttons(const std::string &game);
|
|
std::vector<Button> *get_buttons_modifiers(const std::string &game);
|
|
std::string get_buttons_help(const std::string &game);
|
|
std::string get_analogs_help(const std::string &game);
|
|
std::vector<Button> *get_buttons_keypads(const std::string &game);
|
|
std::vector<Button> *get_buttons_overlay(const std::string &game);
|
|
std::vector<Analog> *get_analogs(const std::string &game);
|
|
std::vector<Light> *get_lights(const std::string &game);
|
|
std::vector<Option> *get_options(const std::string &game);
|
|
std::vector<std::vector<std::string>> *get_game_file_hints(const std::string &game);
|
|
}
|