|
|
@@ -14,16 +14,25 @@ namespace InputCommon {
|
|
|
|
|
|
class MouseButton final : public Input::ButtonDevice {
|
|
|
public:
|
|
|
- explicit MouseButton(u32 button_, const MouseInput::Mouse* mouse_input_)
|
|
|
- : button(button_), mouse_input(mouse_input_) {}
|
|
|
+ explicit MouseButton(u32 button_, bool toggle_, MouseInput::Mouse* mouse_input_)
|
|
|
+ : button(button_), toggle(toggle_), mouse_input(mouse_input_) {}
|
|
|
|
|
|
bool GetStatus() const override {
|
|
|
- return mouse_input->GetMouseState(button).pressed;
|
|
|
+ const bool button_state = mouse_input->GetMouseState(button).pressed;
|
|
|
+ if (!toggle) {
|
|
|
+ return button_state;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (button_state) {
|
|
|
+ return mouse_input->ToggleButton(button);
|
|
|
+ }
|
|
|
+ return mouse_input->UnlockButton(button);
|
|
|
}
|
|
|
|
|
|
private:
|
|
|
const u32 button;
|
|
|
- const MouseInput::Mouse* mouse_input;
|
|
|
+ const bool toggle;
|
|
|
+ MouseInput::Mouse* mouse_input;
|
|
|
};
|
|
|
|
|
|
MouseButtonFactory::MouseButtonFactory(std::shared_ptr<MouseInput::Mouse> mouse_input_)
|
|
|
@@ -32,8 +41,9 @@ MouseButtonFactory::MouseButtonFactory(std::shared_ptr<MouseInput::Mouse> mouse_
|
|
|
std::unique_ptr<Input::ButtonDevice> MouseButtonFactory::Create(
|
|
|
const Common::ParamPackage& params) {
|
|
|
const auto button_id = params.Get("button", 0);
|
|
|
+ const auto toggle = params.Get("toggle", false);
|
|
|
|
|
|
- return std::make_unique<MouseButton>(button_id, mouse_input.get());
|
|
|
+ return std::make_unique<MouseButton>(button_id, toggle, mouse_input.get());
|
|
|
}
|
|
|
|
|
|
Common::ParamPackage MouseButtonFactory::GetNextInput() const {
|