From 32aa6f116acc6e3e20a1ec76cef45b29f7005ad7 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 17 Oct 2025 12:06:14 +0800 Subject: Remove String stage 1. --- include/cru/platform/gui/xcb/Input.h | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 include/cru/platform/gui/xcb/Input.h (limited to 'include/cru/platform/gui/xcb/Input.h') diff --git a/include/cru/platform/gui/xcb/Input.h b/include/cru/platform/gui/xcb/Input.h new file mode 100644 index 00000000..77e213de --- /dev/null +++ b/include/cru/platform/gui/xcb/Input.h @@ -0,0 +1,41 @@ +#pragma once + +#include + +#include +#include +#include + +namespace cru::platform::gui::xcb { +struct XcbUiApplication; + +KeyCode XorgKeysymToCruKeyCode(xcb_keysym_t keysym); +std::vector XorgKeycodeToKeysyms(XcbUiApplication* application, + xcb_keycode_t keycode); +KeyCode XorgKeycodeToCruKeyCode(XcbUiApplication* application, + xcb_keycode_t keycode); +std::unordered_map GetKeyboardState( + XcbUiApplication* application); +KeyModifier GetCurrentKeyModifiers(XcbUiApplication* application); + +/** + * Used to convert state field of xcb_button_press_event_t, + * xcb_button_release_event_t, xcb_key_press_event_t, xcb_key_release_event_t. + */ +KeyModifier ConvertModifiersOfEvent(uint32_t mask); + +class XcbKeyboardManager { + public: + explicit XcbKeyboardManager(XcbUiApplication* application); + ~XcbKeyboardManager(); + + std::string KeysymToUtf8(xcb_keysym_t keysym); + std::string KeycodeToUtf8(xcb_keycode_t keycode); + + private: + XcbUiApplication* application_; + xkb_context* xkb_context_; + xkb_keymap* xkb_keymap_; + xkb_state* xkb_state_; +}; +} // namespace cru::platform::gui::xcb -- cgit v1.2.3