diff options
author | bunnei <bunneidev@gmail.com> | 2021-03-11 11:00:44 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-11 11:00:44 -0800 |
commit | 827dcad26ea09fdf1926984cb6f8a0a4976996c6 (patch) | |
tree | 99955e9f688581d6850c2b6c968d1ccff9fc9672 /src/input_common/mouse/mouse_poller.cpp | |
parent | daf5c5060b4b2e4aa985fbfe9724eb99c51bbd71 (diff) | |
parent | 41e94b7b99f83a45633d555160b31b50f021c350 (diff) |
Merge pull request #6040 from german77/toggleKeyboard
Enable toggle buttons for keyboard and mouse
Diffstat (limited to 'src/input_common/mouse/mouse_poller.cpp')
-rw-r--r-- | src/input_common/mouse/mouse_poller.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/input_common/mouse/mouse_poller.cpp b/src/input_common/mouse/mouse_poller.cpp index bb56787ee3..0e1db54fbb 100644 --- a/src/input_common/mouse/mouse_poller.cpp +++ b/src/input_common/mouse/mouse_poller.cpp @@ -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 { |