aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/gui/xcb/Keyboard.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform/gui/xcb/Keyboard.h')
-rw-r--r--include/cru/platform/gui/xcb/Keyboard.h26
1 files changed, 23 insertions, 3 deletions
diff --git a/include/cru/platform/gui/xcb/Keyboard.h b/include/cru/platform/gui/xcb/Keyboard.h
index 41b4abee..e1fc7fec 100644
--- a/include/cru/platform/gui/xcb/Keyboard.h
+++ b/include/cru/platform/gui/xcb/Keyboard.h
@@ -3,13 +3,33 @@
#include <cru/platform/gui/Keyboard.h>
#include <xcb/xcb.h>
+#include <xkbcommon/xkbcommon.h>
#include <unordered_map>
namespace cru::platform::gui::xcb {
struct XcbUiApplication;
-KeyCode XorgKeysymToKeyCode(xcb_keysym_t keysym);
-KeyCode XorgKeycodeToCruKeyCode(XcbUiApplication* application, xcb_keycode_t keycode);
-std::unordered_map<KeyCode, bool> GetKeyboardState(XcbUiApplication* application);
+KeyCode XorgKeysymToCruKeyCode(xcb_keysym_t keysym);
+std::vector<xcb_keysym_t> XorgKeycodeToKeysyms(XcbUiApplication* application,
+ xcb_keycode_t keycode);
+KeyCode XorgKeycodeToCruKeyCode(XcbUiApplication* application,
+ xcb_keycode_t keycode);
+std::unordered_map<KeyCode, bool> GetKeyboardState(
+ XcbUiApplication* application);
KeyModifier GetCurrentKeyModifiers(XcbUiApplication* application);
+
+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