aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-09-30 00:16:13 +0800
committerYuqian Yang <crupest@crupest.life>2025-10-03 00:13:54 +0800
commite903083732b0d4638ac066fc85b030b121d8e7e6 (patch)
treee9a871e71705fa83242e75cca6d9431390b8f755 /include
parent44487b61e5c2b89318f9a4a85c67df9aad7884e1 (diff)
downloadcru-e903083732b0d4638ac066fc85b030b121d8e7e6.tar.gz
cru-e903083732b0d4638ac066fc85b030b121d8e7e6.tar.bz2
cru-e903083732b0d4638ac066fc85b030b121d8e7e6.zip
Impl input method for xim 2.
Diffstat (limited to 'include')
-rw-r--r--include/cru/platform/gui/xcb/InputMethod.h5
-rw-r--r--include/cru/platform/gui/xcb/Keyboard.h2
-rw-r--r--include/cru/platform/gui/xcb/Window.h3
3 files changed, 10 insertions, 0 deletions
diff --git a/include/cru/platform/gui/xcb/InputMethod.h b/include/cru/platform/gui/xcb/InputMethod.h
index 286f3158..a325c1da 100644
--- a/include/cru/platform/gui/xcb/InputMethod.h
+++ b/include/cru/platform/gui/xcb/InputMethod.h
@@ -2,6 +2,7 @@
#include "../InputMethod.h"
#include "Base.h"
+#include <cru/base/Base.h>
#include <xcb-imdkit/imclient.h>
#include <xcb/xcb.h>
@@ -12,6 +13,8 @@ class XcbUiApplication;
class XcbWindow;
class XcbXimInputMethodManager : public XcbResource {
+ CRU_DEFINE_CLASS_LOG_TAG("cru::platform::gui::xcb::XcbXimInputMethodManager")
+
friend XcbUiApplication;
public:
@@ -33,6 +36,8 @@ class XcbXimInputMethodManager : public XcbResource {
class XcbXimInputMethodContext : public XcbResource,
public virtual IInputMethodContext {
+ CRU_DEFINE_CLASS_LOG_TAG("cru::platform::gui::xcb::XcbXimInputMethodContext")
+
friend XcbXimInputMethodManager;
public:
diff --git a/include/cru/platform/gui/xcb/Keyboard.h b/include/cru/platform/gui/xcb/Keyboard.h
index 41b4abee..f3650900 100644
--- a/include/cru/platform/gui/xcb/Keyboard.h
+++ b/include/cru/platform/gui/xcb/Keyboard.h
@@ -9,7 +9,9 @@ namespace cru::platform::gui::xcb {
struct XcbUiApplication;
KeyCode XorgKeysymToKeyCode(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::string XorgKeysymToUtf8(xcb_keysym_t keysym);
std::unordered_map<KeyCode, bool> GetKeyboardState(XcbUiApplication* application);
KeyModifier GetCurrentKeyModifiers(XcbUiApplication* application);
} // namespace cru::platform::gui::xcb
diff --git a/include/cru/platform/gui/xcb/Window.h b/include/cru/platform/gui/xcb/Window.h
index e330ba7c..d9bef0c3 100644
--- a/include/cru/platform/gui/xcb/Window.h
+++ b/include/cru/platform/gui/xcb/Window.h
@@ -2,6 +2,7 @@
#pragma once
#include "../../GraphicsBase.h"
#include "../Window.h"
+#include "../TimerHelper.h"
#include "Base.h"
#include <cairo.h>
@@ -117,6 +118,8 @@ class XcbWindow : public XcbResource, public virtual INativeWindow {
XcbWindow* parent_;
XcbXimInputMethodContext* input_method_;
+ TimerAutoCanceler repaint_canceler_;
+
Event<std::nullptr_t> create_event_;
Event<std::nullptr_t> destroy_event_;
Event<std::nullptr_t> paint_event_;