From 073a1e3e5af78fb0d220169009fd6a0939b432d2 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Sun, 12 Oct 2025 00:06:53 +0800 Subject: Extract ConvertModifiersOfEvent. --- src/platform/gui/xcb/Keyboard.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/platform/gui/xcb/Keyboard.cpp') 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( -- cgit v1.2.3