aboutsummaryrefslogtreecommitdiff
path: root/src/platform/gui/xcb/Keyboard.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-10-12 00:06:53 +0800
committerYuqian Yang <crupest@crupest.life>2025-10-12 00:06:53 +0800
commit073a1e3e5af78fb0d220169009fd6a0939b432d2 (patch)
tree3e47dfa6539b1260d50d5b7487d8a9ff93780331 /src/platform/gui/xcb/Keyboard.cpp
parent3d7fde8886f906274ff1b0f3bea1aeef0e59f73e (diff)
downloadcru-073a1e3e5af78fb0d220169009fd6a0939b432d2.tar.gz
cru-073a1e3e5af78fb0d220169009fd6a0939b432d2.tar.bz2
cru-073a1e3e5af78fb0d220169009fd6a0939b432d2.zip
Extract ConvertModifiersOfEvent.
Diffstat (limited to 'src/platform/gui/xcb/Keyboard.cpp')
-rw-r--r--src/platform/gui/xcb/Keyboard.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/platform/gui/xcb/Keyboard.cpp b/src/platform/gui/xcb/Keyboard.cpp
index 2e02bcd1..4bfc448c 100644
--- a/src/platform/gui/xcb/Keyboard.cpp
+++ b/src/platform/gui/xcb/Keyboard.cpp
@@ -195,6 +195,27 @@ KeyModifier GetCurrentKeyModifiers(XcbUiApplication *application) {
return result;
}
+KeyModifier ConvertModifiersOfEvent(uint32_t mask) {
+ // const char *MODIFIERS[] = {
+ // "Shift", "Lock", "Ctrl", "Alt", "Mod2", "Mod3", "Mod4",
+ // "Mod5", "Button1", "Button2", "Button3", "Button4", "Button5"};
+ constexpr KeyModifier MODIFIERS[] = {
+ KeyModifiers::Shift, KeyModifiers::none, KeyModifiers::Ctrl,
+ KeyModifiers::Alt, KeyModifiers::none, KeyModifiers::none,
+ KeyModifiers::none, KeyModifiers::none, KeyModifiers::none,
+ KeyModifiers::none, KeyModifiers::none, KeyModifiers::none,
+ KeyModifiers::none,
+ };
+
+ KeyModifier result;
+ for (auto iter = std::begin(MODIFIERS); mask; mask >>= 1, ++iter) {
+ if (mask & 1) {
+ result |= *iter;
+ }
+ }
+ return result;
+}
+
XcbKeyboardManager::XcbKeyboardManager(XcbUiApplication *application)
: application_(application) {
xkb_x11_setup_xkb_extension(