Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorCampbell Barton <campbell@blender.org>2022-05-27 08:55:16 +0300
committerCampbell Barton <campbell@blender.org>2022-05-27 08:55:56 +0300
commit46456a59c44f228f763bee1bee9357648a208359 (patch)
treec1d29adddd23c17788f68d54969c9036f1cb6d7c /intern
parent7aad4d459e0811550ff239cec4f6a71a310e0286 (diff)
GHOST/Wayland: support mouse buttons 4-7
Diffstat (limited to 'intern')
-rw-r--r--intern/ghost/intern/GHOST_Buttons.cpp24
-rw-r--r--intern/ghost/intern/GHOST_Buttons.h4
-rw-r--r--intern/ghost/intern/GHOST_SystemWayland.cpp20
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.cpp2
4 files changed, 49 insertions, 1 deletions
diff --git a/intern/ghost/intern/GHOST_Buttons.cpp b/intern/ghost/intern/GHOST_Buttons.cpp
index c948c7beadb..3367d256325 100644
--- a/intern/ghost/intern/GHOST_Buttons.cpp
+++ b/intern/ghost/intern/GHOST_Buttons.cpp
@@ -21,6 +21,14 @@ bool GHOST_Buttons::get(GHOST_TButtonMask mask) const
return m_ButtonMiddle;
case GHOST_kButtonMaskRight:
return m_ButtonRight;
+ case GHOST_kButtonMaskButton4:
+ return m_Button4;
+ case GHOST_kButtonMaskButton5:
+ return m_Button5;
+ case GHOST_kButtonMaskButton6:
+ return m_Button6;
+ case GHOST_kButtonMaskButton7:
+ return m_Button7;
default:
return false;
}
@@ -38,6 +46,18 @@ void GHOST_Buttons::set(GHOST_TButtonMask mask, bool down)
case GHOST_kButtonMaskRight:
m_ButtonRight = down;
break;
+ case GHOST_kButtonMaskButton4:
+ m_Button4 = down;
+ break;
+ case GHOST_kButtonMaskButton5:
+ m_Button5 = down;
+ break;
+ case GHOST_kButtonMaskButton6:
+ m_Button6 = down;
+ break;
+ case GHOST_kButtonMaskButton7:
+ m_Button7 = down;
+ break;
default:
break;
}
@@ -48,6 +68,10 @@ void GHOST_Buttons::clear()
m_ButtonLeft = false;
m_ButtonMiddle = false;
m_ButtonRight = false;
+ m_Button4 = false;
+ m_Button5 = false;
+ m_Button6 = false;
+ m_Button7 = false;
}
GHOST_Buttons::~GHOST_Buttons()
diff --git a/intern/ghost/intern/GHOST_Buttons.h b/intern/ghost/intern/GHOST_Buttons.h
index 17f25f1e082..72cb17a3322 100644
--- a/intern/ghost/intern/GHOST_Buttons.h
+++ b/intern/ghost/intern/GHOST_Buttons.h
@@ -44,4 +44,8 @@ struct GHOST_Buttons {
uint8_t m_ButtonLeft : 1;
uint8_t m_ButtonMiddle : 1;
uint8_t m_ButtonRight : 1;
+ uint8_t m_Button4 : 1;
+ uint8_t m_Button5 : 1;
+ uint8_t m_Button6 : 1;
+ uint8_t m_Button7 : 1;
};
diff --git a/intern/ghost/intern/GHOST_SystemWayland.cpp b/intern/ghost/intern/GHOST_SystemWayland.cpp
index dae3d578fa0..4a25b8bb9bb 100644
--- a/intern/ghost/intern/GHOST_SystemWayland.cpp
+++ b/intern/ghost/intern/GHOST_SystemWayland.cpp
@@ -38,7 +38,8 @@
#include <cstring>
-/* selected input event code defines from 'linux/input-event-codes.h'
+/**
+ * Selected input event code defines from `linux/input-event-codes.h`
* We include some of the button input event codes here, since the header is
* only available in more recent kernel versions. The event codes are used to
* to differentiate from which mouse button an event comes from.
@@ -46,6 +47,11 @@
#define BTN_LEFT 0x110
#define BTN_RIGHT 0x111
#define BTN_MIDDLE 0x112
+#define BTN_SIDE 0x113
+#define BTN_EXTRA 0x114
+#define BTN_FORWARD 0x115
+#define BTN_BACK 0x116
+// #define BTN_TASK 0x117 /* UNUSED. */
struct buffer_t {
void *data;
@@ -974,6 +980,18 @@ static void pointer_button(void *data,
case BTN_RIGHT:
ebutton = GHOST_kButtonMaskRight;
break;
+ case BTN_SIDE:
+ ebutton = GHOST_kButtonMaskButton4;
+ break;
+ case BTN_EXTRA:
+ ebutton = GHOST_kButtonMaskButton5;
+ break;
+ case BTN_FORWARD:
+ ebutton = GHOST_kButtonMaskButton6;
+ break;
+ case BTN_BACK:
+ ebutton = GHOST_kButtonMaskButton7;
+ break;
}
input->data_source->source_serial = serial;
diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp
index 703fd1c44d9..54d38e1c0f3 100644
--- a/intern/ghost/intern/GHOST_SystemX11.cpp
+++ b/intern/ghost/intern/GHOST_SystemX11.cpp
@@ -1612,6 +1612,8 @@ GHOST_TSuccess GHOST_SystemX11::getButtons(GHOST_Buttons &buttons) const
buttons.set(GHOST_kButtonMaskLeft, (mask_return & Button1Mask) != 0);
buttons.set(GHOST_kButtonMaskMiddle, (mask_return & Button2Mask) != 0);
buttons.set(GHOST_kButtonMaskRight, (mask_return & Button3Mask) != 0);
+ buttons.set(GHOST_kButtonMaskButton4, (mask_return & Button4Mask) != 0);
+ buttons.set(GHOST_kButtonMaskButton5, (mask_return & Button5Mask) != 0);
}
else {
return GHOST_kFailure;