summaryrefslogtreecommitdiffstats
path: root/src/input_common/mouse/mouse_input.cpp
diff options
context:
space:
mode:
authorgerman77 <juangerman-13@hotmail.com>2021-03-06 20:27:02 +0100
committergerman77 <juangerman-13@hotmail.com>2021-03-06 20:27:02 +0100
commit41e94b7b99f83a45633d555160b31b50f021c350 (patch)
tree3383b74713144712144eeb5cb6a247ba4be9da42 /src/input_common/mouse/mouse_input.cpp
parentAdd toggle button option for normal buttons (diff)
downloadyuzu-41e94b7b99f83a45633d555160b31b50f021c350.tar
yuzu-41e94b7b99f83a45633d555160b31b50f021c350.tar.gz
yuzu-41e94b7b99f83a45633d555160b31b50f021c350.tar.bz2
yuzu-41e94b7b99f83a45633d555160b31b50f021c350.tar.lz
yuzu-41e94b7b99f83a45633d555160b31b50f021c350.tar.xz
yuzu-41e94b7b99f83a45633d555160b31b50f021c350.tar.zst
yuzu-41e94b7b99f83a45633d555160b31b50f021c350.zip
Diffstat (limited to '')
-rw-r--r--src/input_common/mouse/mouse_input.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/input_common/mouse/mouse_input.cpp b/src/input_common/mouse/mouse_input.cpp
index b864d26f2..6818d5eee 100644
--- a/src/input_common/mouse/mouse_input.cpp
+++ b/src/input_common/mouse/mouse_input.cpp
@@ -157,6 +157,42 @@ void Mouse::EndConfiguration() {
configuring = false;
}
+bool Mouse::ToggleButton(std::size_t button_) {
+ if (button_ >= mouse_info.size()) {
+ return false;
+ }
+ const auto button = 1U << button_;
+ const bool button_state = (toggle_buttons & button) != 0;
+ const bool button_lock = (lock_buttons & button) != 0;
+
+ if (button_lock) {
+ return button_state;
+ }
+
+ lock_buttons |= static_cast<u16>(button);
+
+ if (button_state) {
+ toggle_buttons &= static_cast<u16>(0xFF - button);
+ } else {
+ toggle_buttons |= static_cast<u16>(button);
+ }
+
+ return !button_state;
+}
+
+bool Mouse::UnlockButton(std::size_t button_) {
+ if (button_ >= mouse_info.size()) {
+ return false;
+ }
+
+ const auto button = 1U << button_;
+ const bool button_state = (toggle_buttons & button) != 0;
+
+ lock_buttons &= static_cast<u16>(0xFF - button);
+
+ return button_state;
+}
+
Common::SPSCQueue<MouseStatus>& Mouse::GetMouseQueue() {
return mouse_queue;
}