QT6开发高性能企业视频会议-7 Linux中文输入法的支持
Linux桌面环境输入法框架介绍
在Linux桌面环境中,使用各种语言(包括中文)的输入法需要输入法框架的支持,下面介绍两个主流的输入法框架ibus和fcitx。
ibus(Intelligent Input Bus)
-
简介: ibus 是一个为多语言输入设计的输入法框架。它最初由 Google 开发,旨在提供一个跨平台的输入法框架,支持多种语言和输入法引擎。ibus 采用 client-server 架构,ibus-daemon 作为服务器运行,输入法引擎作为客户端连接到服务器。
-
特点:
- 跨平台: ibus 的设计目标是跨平台,虽然主要在 Linux 上使用,但也支持其他操作系统。
- 多语言支持: ibus 支持多种语言的输入,包括中文、日文、韩文等。
- 插件式架构: ibus 使用插件式架构,允许用户安装和使用不同的输入法引擎。
- 与 GNOME 集成: ibus 与 GNOME 桌面环境集成度很高,配置界面通常集成在 GNOME 的系统设置中。
- Client-Server 架构: ibus 使用 client-server 架构,ibus-daemon 作为服务器运行,输入法引擎作为客户端连接到服务器。
-
优点:
- 与 GNOME 桌面环境集成度高。
- 支持多种语言和输入法引擎。
- 跨平台设计。
-
缺点:
- 依赖于 GNOME 桌面环境。
- Client-Server 架构可能增加一些系统开销。
fcitx (Free Chinese Input Tool eXtension or Flexible Context-aware Input Tool with eXtension)
-
简介: fcitx 是一个主要为中文输入设计的输入法框架。它最初由Yuking开发,旨在提供一个灵活、高效的中文输入解决方案。fcitx 采用模块化架构,输入法引擎作为插件加载到 fcitx 框架中。
-
特点:
- 轻量级: fcitx 相对轻量级,资源占用较少,适合在各种桌面环境中使用。
- 模块化架构: fcitx 采用模块化架构,输入法引擎作为插件加载到 fcitx 框架中。
- 独立性: fcitx 相对独立,对桌面环境的依赖较小,可以在多种桌面环境中使用,例如 KDE, XFCE, LXDE 等。
- 配置灵活: fcitx 有独立的配置工具,例如
fcitx-configtool
,允许用户自定义各种选项。
-
优点:
- 轻量级,资源占用少。
- 模块化架构,易于扩展。
- 独立性强,可在多种桌面环境中使用。
-
缺点:
- 对 GNOME 桌面环境的集成度不如ibus。
不同的输入法可能支持不同的输入法框架. 搜狗输入法和百度输入法在Linux系统中是基于fcitx输入法框架的, 因此在安装和使用搜狗或者百度输入法时,需要确保系统安装和使用的是fcitx框架.
QT6 已经默认支持ibus输入法框架, 但是默认不支持fcitx输入法框架.
目前使用较多的中文桌面系统为统信或者麒麟Linux,默认安装和使用fcitx作为输入法框架。 QT6开发的app要支持fcitx输入法,需要手动编译一份新版本fcitx4 or fcitx5 Qt6插件直接打包进App,以下为编译fcitx的步骤。
1. 安装编译依赖(以ubuntu为例,根据需要):
sudo apt update
sudo apt install build-essential cmake gettext intltool libx11-dev libxft-dev libxext-dev libxrender-dev libgtk2.0-dev libgtk-3-dev libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libgsettings-glib-1.0-dev libpcre3-dev libtool automake autoconf
2. 下载 Fcitx 源代码:
https://github.com/fcitx/fcitx5-qt.git
或者从fcitx的Git页面下载源代码包:
GitHub - fcitx/fcitx5-qt: Qt library and IM module for fcitx5
3. 编译和安装 Fcitx:
cd fcitx
mkdir build
cd build
cmake ..
make
sudo make install
fcitx的CMakeList默认enable qt5和qt6, 编译好的 libfcitxplatforminputcontextplugin-qt6.so 动态库在 /build/qt6/platforminputcontext/目录下,
将生成的libfcitxplatforminputcontextplugin-qt6.so 拷贝到qt6/plugins/platforminputcontexts/
这样Qt6开发的Linux app,就可以支持基于fcitx框架的中文输入法,比如搜狗输入法或者百度输入法.
神旗视讯开源地址:
国内: https://gitee.com/sqmeeting
神旗视讯 -- 免费高性能的私有化音视频系统