# uesdl **Repository Path**: startechnology1994/uesdl ## Basic Information - **Project Name**: uesdl - **Description**: Resolve the issue where the Linux version packaged with UE51-5.8 cannot submit Chinese input and wake up the IME input method - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-08 - **Last Updated**: 2026-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UESDL > **推荐:** [UE Web Browser](https://github.com/starTechnology1994/uewebbrowser) — 为企业和组织提供高性能解决方案,专注于虚幻引擎驱动的数字孪生和人工智能驱动的快速开发。我们帮助企业将复杂的需求转化为生产就绪的交互式3D应用程序,涵盖智能城市、工业控制平台、数据可视化和沉浸式体验。 修复 UE5.1 ~ UE5.8 Linux 打包版本无法使用中文输入法(Fcitx5 / IBus)的问题。 ## 问题现象 在 Linux 上运行 UE5 打包的应用时,中文输入法完全不可用: - 输入法候选框闪烁后打一个字符就消失 - 无法组成拼音,每次只能打一个字符 - WebNativeBrowser 输入框和 UMG 原生输入框均受影响 ## 根因 SDL 同时维护了两条 IME 通路(XIM 和 D-Bus),两者存在按键路由冲突,导致 Fcitx5/IBus(通过 D-Bus 通信)无法正常接收按键事件。 ## 解决方案 修改 SDL 源码,当 D-Bus IME 后端(Fcitx5/IBus)激活时,跳过 XIM 的按键拦截,让所有按键事件直接通过 D-Bus 发送给输入法。同时修复了 IME 候选框位置跟随焦点的功能。 ## Linux 环境要求 目标 Linux 系统需安装以下输入法框架之一: ### Fcitx5(推荐) ```bash # Deepin / Debian / Ubuntu sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk2 fcitx5-frontend-gtk3 fcitx5-frontend-qt5 ``` ### IBus ```bash # Deepin / Debian / Ubuntu sudo apt install ibus ibus-libpinyin ``` > 安装后需在系统设置中将输入法框架设为 Fcitx5 或 IBus,并确保 `fcitx5` 或 `ibus-daemon` 进程已启动。 ## 使用方式 直接替换 UE 引擎安装目录下对应的 SDL 静态库文件,替换前请**先备份原文件**。 ### 1. 根据 UE 版本找到对应的库 ``` 本仓库目录结构: ├── UE5.1_SDL2_2.0.20/ │ ├── x86_64/libSDL2_fPIC.a │ └── arm64/libSDL2_fPIC.a ├── UE5.2_SDL2_2.24.0/ ├── UE5.3_SDL2_2.24.0/ ├── UE5.4_SDL2_2.24.0/ ├── UE5.5_SDL2_2.30.6/ ├── UE5.6_SDL2_2.30.6/ ├── UE5.7_SDL3_3.2.10/ │ ├── x86_64/libSDL3_fPIC.a │ └── arm64/libSDL3_fPIC.a └── UE5.8_SDL3_3.4.4/ ├── x86_64/libSDL3_fPIC.a └── arm64/libSDL3_fPIC.a ``` ### 2. 替换到引擎安装目录 #### UE5.1 ~ UE5.6(SDL2) | 架构 | 替换路径 | | ---- | -------- | | x86_64 | `{UE安装目录}\Engine\Source\ThirdParty\SDL2\SDL-gui-backend\lib\Unix\x86_64-unknown-linux-gnu\libSDL2_fPIC.a` | | arm64 | `{UE安装目录}\Engine\Source\ThirdParty\SDL2\SDL-gui-backend\lib\Unix\aarch64-unknown-linux-gnueabi\libSDL2_fPIC.a` | **示例:** ```powershell # x86_64 Copy-Item ".\UE5.1_SDL2_2.0.20\x86_64\libSDL2_fPIC.a" ` "E:\Program Files\Epic Games\UE_5.1\Engine\Source\ThirdParty\SDL2\SDL-gui-backend\lib\Unix\x86_64-unknown-linux-gnu\libSDL2_fPIC.a" # arm64 Copy-Item ".\UE5.1_SDL2_2.0.20\arm64\libSDL2_fPIC.a" ` "E:\Program Files\Epic Games\UE_5.1\Engine\Source\ThirdParty\SDL2\SDL-gui-backend\lib\Unix\aarch64-unknown-linux-gnueabi\libSDL2_fPIC.a" ``` #### UE5.7 ~ UE5.8(SDL3) | 架构 | 替换路径 | | ---- | -------- | | x86_64 | `{UE安装目录}\Engine\Source\ThirdParty\SDL3\SDL-gui-backend\lib\Unix\x86_64-unknown-linux-gnu\libSDL3_fPIC.a` | | arm64 | `{UE安装目录}\Engine\Source\ThirdParty\SDL3\SDL-gui-backend\lib\Unix\aarch64-unknown-linux-gnu\libSDL3_fPIC.a` | **示例:** ```powershell # x86_64 Copy-Item ".\UE5.7_SDL3_3.2.10\x86_64\libSDL3_fPIC.a" ` "E:\Program Files\Epic Games\UE_5.7\Engine\Source\ThirdParty\SDL3\SDL-gui-backend\lib\Unix\x86_64-unknown-linux-gnu\libSDL3_fPIC.a" # arm64 Copy-Item ".\UE5.7_SDL3_3.2.10\arm64\libSDL3_fPIC.a" ` "E:\Program Files\Epic Games\UE_5.7\Engine\Source\ThirdParty\SDL3\SDL-gui-backend\lib\Unix\aarch64-unknown-linux-gnu\libSDL3_fPIC.a" ``` > **注意:** UE5.7 和 UE5.8 使用的是 SDL3,替换目录是 `SDL3` 而非 `SDL2`。 ### 3. 重新打包 替换后重新打包 Linux 版本即可,中文输入法将正常工作。 ## 兼容性 - **Fcitx5**:正常输入中文 - **IBus**:正常输入中文 - **纯 XIM 环境**(无 D-Bus IME):回退原有逻辑,不受影响 - **Windows / macOS**:不经过此代码路径,不受影响