Fcitx5

出自 ArchWiki

Fcitx5 是一个输入法框架,核心轻量,通过插件提供额外的语言支持。它是 Fcitx 的继任者。

安装

安装 fcitx5 软件包。

fcitx5-im 组会拉取主要的 fcitx5 软件包,一些 #输入法模块,以及 #配置工具

注意: fcitx5 本身只有一个基本的框架,仅提供英语支持。 如果您想输入其他语言,例如中文或日语,则需要输入法引擎 (IME)。 请参阅输入法#可用输入法编辑器列表 以获取可用 IME 的列表。

输入法模块

一些 GUI 工具包为应用程序中的输入法集成提供了输入法模块支持。 但是,它们并非总是必需的,并且 #Wayland 原生协议可能会显示更好的性能。 有关详细信息,请参阅 #集成

插件

为了使用 fcitx5-chinese-addons 支持日期和时间,请安装 fcitx5-lua;sj 将输入当前时间,而 ;rq 将输入当前日期。

使用

集成

应用程序需要将输入事件重定向到输入法,以便实际使用它。 用于此目的的协议可以由显示服务器(即 Waylandtext-inputXorgXIM),或由 GUI 工具包的输入法模块提供。

Wayland

Wayland 的原生 text-input 协议通常比输入法模块产生更好的结果。 fcitx5 的 Wayland 前端默认启用,并且如果没有明确指定其他 IM 模块,GTK/Qt 会使用 text-input。 因此,通常建议仅在 Xwayland 应用程序中使用 #IM 模块。 此外,为传统的 X11 应用程序启用 #XIM[1]

注意: text-input 要求 Wayland 合成器和客户端使用相同版本的协议。 如果某些应用程序的版本不匹配,您可能需要使用 #IM 模块。 特别是,GNOMESway 仅支持 text-input-v3,而 Chromium 默认使用 text-input-v1(可以通过 --wayland-text-input-version=3 覆盖)。
GNOME

GNOME 不支持 Wayland 的 input-method 协议,fcitx5 的 Wayland 前端需要该协议才能与合成器通信并显示弹出窗口。 gnome-shell-extension-kimpanel-gitAUR 通过 Kimpanel 提供 GNOME Wayland 中弹出窗口的支持。

KDE Plasma

Wayland 上的 Plasma 要求输入法进程由 KWin 调用。[2] 为实现此目的,请退出任何正在运行的 Fcitx 5 进程,前往系统设置 > 输入设备 > 虚拟键盘,然后选择Fcitx 5

Wayfire

启用 input-method-v1 插件,并将 fcitx5 添加到 autostart 命令。

由于 Wayfire 部分支持 text-input-v1,对于支持 text-input-v1 但不支持 text-input-v3 的软件,请参阅 #使用 Wayland 输入协议的软件无法获得 Wayland 弹出窗口

对于 Qt6 软件,它目前默认为 text-input-v1 但支持 text-input-v3,另一种解决方法是使用 QT_WAYLAND_TEXT_INPUT_PROTOCOL=zwp_text_input_v3,但您可能会遇到其他错误。

IM 模块

设置以下环境变量[3],如果使用 X11,则全局设置;如果使用支持 text-input 的 Wayland 合成器,则为每个 Xwayland 应用程序设置

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
注意

或者,将 gtk-im-module=fcitx 用于 GTK3,将 gtk-im-module="fcitx" 用于 GTK2 写入 GTK#配置 中的配置文件,以使在 X11/Xwayland 下运行的 GTK 应用程序使用 IM 模块,而不会影响 Wayland 原生 GTK 应用程序。

如果您的 locale 是 en_US.UTF-8,并且您的 GTK2 应用程序无法激活 fcitx5,您可以专门为其设置 GTK_IM_MODULE=xim

注意: 不要全局设置 GTK_IM_MODULE 为 xim,因为它也会影响 GTK3 程序。 XIM 存在各种问题(例如,输入法在重启后无法输入),因此尽量不要使用它。

XIM

对于通用的 X11 应用程序,通过以下环境变量启用 XIM 支持

XMODIFIERS=@im=fcitx

自动启动

如果您的桌面环境实现了 XDG Autostart,请参阅 自动启动#在桌面环境启动时

根据您的需要,参阅自动启动#在 Xorg 启动时自动启动#在窗口管理器启动时

提示: 要查看 Fcitx5 是否正常工作,请打开一个应用程序并按 Ctrl+Space 以切换输入法(配置后),并输入一些文字。
注意: 要在 KDE Wayland 中使用 Wayland text-input 协议,还需要按照 #KDE Plasma 中的步骤操作。

词典

中文

对于 Fcitx5 的中文输入法,目前有几个可用的词典

注意
  • 手动下载的词典文件可以放在 ~/.local/share/fcitx5/pinyin/dictionaries
  • 词典文件的后缀应为 .dict
  • 来自搜狗的 .scel 文件不能直接使用,但可以导入

自定义词典

一般来说,由于 fcitx5 支持导入搜狗词库,因此在很大程度上不需要自定义词典,但 fcitx5 仍然提供相关工具(即 libime)。

原始词典文件是文本文件,其格式为:字符 拼音 频率。 要转换它

$ libime_pinyindict dictionary.txt dictionary.dict

自定义词典文件可以放在 ~/.local/share/fcitx5/pinyin/dictionaries

注意: 以下项目可能会有所帮助

配置

配置工具

fcitx5 的配置文件位于 ~/.config/fcitx5。 虽然您可以使用文本编辑器编辑配置文件,但您可能会发现 GUI 配置工具更加方便,因此请安装 fcitx5-configtool 软件包。

禁用覆盖 XKB 设置

默认情况下,Fcitx5 会覆盖 X 键盘设置。(您可以使用 setxkbmap 命令或 桌面环境 提供的图形工具设置的那些。)如果您不希望这样做,请运行 fcitx5-configtool 并取消选中附加组件 > XCB > 允许覆盖系统 XKB 设置

主题和外观

主题

默认主题的数量有限,您可以在 GitHub 上找到更多主题。

  • Breeze — 与 KDE Breeze 风格匹配的 Fcitx5 主题。
https://gitlab.com/scratch-er/fcitx5-breeze || fcitx5-breeze
  • Nord — 基于 Nord 配色主题的 Fcitx5 主题。
https://github.com/tonyfettes/fcitx5-nord || fcitx5-nord
  • Material — Fcitx5 的 Material 配色主题。
https://github.com/hosxy/Fcitx5-Material-Color || fcitx5-material-color
  • Solarized — Fcitx5 的 Solarized 配色主题。
https://github.com/mingyech/fcitx5-solarized || fcitx5-solarizedAUR
  • Fluent — 具有模糊效果和阴影的 Fluent-Design 深色主题。
https://github.com/Reverier-Xu/Fluent-fcitx5 || fcitx5-skin-fluentdark-gitAUR
提示: 如果您在 KDE Plasma 上使用 KCM,则可以使用以下方式切换主题:设置 > 区域设置 > 输入法 > 配置附加组件 > 经典用户界面 > 主题
注意: 如果您在 GNOME 中使用 gnome-shell-extension-kimpanel-gitAUR,则主题不起作用。 [5]

启用单行模式

在拼音输入法(或 Rime 输入法)的设置中,启用在应用程序中显示预编辑以启用单行模式。

在拉丁字母或数字后使用全角标点

默认情况下,Fcitx5 在拉丁字母或数字后使用半角标点。 如果您想改用全角标点,请运行 fcitx5-configtool 并取消选中配置附加组件 > 标点 > 拉丁字母或数字后半角标点

故障排除

诊断问题

如果您在使用 fcitx5 时遇到问题,例如 Ctrl+Space 无法在某些应用程序中激活输入法,请尝试使用 fcitx5-diagnose 诊断当前环境,其输出应包含最常见问题的线索。

注意: 这些提示不应盲目遵循。 例如,对于实现原生 Wayland text-input 协议的应用程序,不需要 GTK_IM_MODULEQT_IM_MODULE。 有关详细信息,请参阅 #集成

Fcitx5 单行模式在某些应用程序中无法工作

如果单行模式在 GTK 应用程序(如 Firefox)中不起作用,请安装 fcitx5-gtk

单行模式不受 WPS Office[6] 和 Sublime Text[7] 支持。

Fcitx5 在 JetBrains IDE 中无法工作

请验证您的系统locale 是否正确且生成良好,因为不正确的 locale 会阻止 Fcitx5 在 JetBrains IDE 中正常工作。

Emoji 在候选框中显示异常

确认您已安装支持 emoji 的字体(例如 noto-fonts-emoji)。 禁用所选 emoji 字体(例如Noto Color Emoji)的抗锯齿,如 字体配置#抗锯齿字体配置#某些字体或字体样式的自定义设置 中所述。

Fcitx5 在 RStudio 中不可用

运行以下命令

$ strings /usr/lib/rstudio/lib/libQt5Core.so.5 | grep "Qt 5"

找出 Qt 库的版本,使用此版本重新编译 fcitx5-qt 中的 libfcitx5platforminputcontextplugin.so,并将其放入 /usr/lib/rstudio/plugins/platforminputcontexts/ 目录中。

Fcitx5 在 Steam 和 Dota 2 中不可用

可以通过使用 Ctrl+Space 而不是 Ctrl+Shift 在 Steam Big Screen 模式和 Dota 2 上激活 IME。 [8]

Fcitx5 在 Wayland 上运行的 Chromium 中不可用

请参阅 Chromium#原生 Wayland 支持

候选框弹出窗口在 GTK 环境的 HiDPI 模式下错位

如果您的候选框弹出窗口的位置未锚定在光标位置,请安装 fcitx5-gtk

Fcitx5 右 Alt 键在 Electron 应用程序中无法工作

如果应用程序使用非系统键盘(例如 Discord、Element 等),则应用程序可能会在输入法之前处理 ISO_Level3_Shift。 这会导致某些输入法在特定应用程序中失败。 一种解决方案是添加另一个输入法组,将系统布局设置为与此键盘对应。 例如,要在 QWERTY 键盘上使用英语作为主要系统键盘输入波兰字母(如 ąćęłńóśźż),您可以使用 Fcitx5 配置 GUI 执行以下操作

  1. 点击添加组加号按钮。
  2. 在下拉列表中选择此组,然后添加您的输入法(键盘,例如键盘 - 波兰语)。
  3. 使用选择系统键盘布局来选择与此输入法匹配的布局,并应用更改。

如果您需要其他解决方案,请参阅 Fcitx5 开发人员的评论。 [9]

使用 Wayland 输入协议的软件无法获得 Wayland 弹出窗口

使用 Wayland 输入协议的软件(例如 wezterm 和 GTK 软件,如果环境变量设置为 GTK_IM_MODULE=wayland)可能在 text-input-v3 支持方面存在问题。

关于 Qt 和 GTK 软件对 Wayland 的支持,根据 fcitx5 开发人员[10]

Qt 具有 text-input-v2 支持。 如果 QT_IM_MODULE 为空,则可以使用它,但是预编辑存在一些小问题。 此外,对于当前版本的 Wayland 输入法协议,Wayland 只能有一个全局输入上下文。 因此,现在如果您想使用 Fcitx 5 支持的“每个应用程序”输入状态,可能会出现问题。 但是,使用 Qt 的文本输入协议有一个好处,即输入窗口不会在视觉上闪烁。
Gtk 具有 text-input-v3 支持,但其预编辑样式较差,粗体字体突出显示。 此外,其文本支持较弱。 因此,现在,如果您想拥有所有 Fcitx 功能,使用 GTK_IM_MODULE=fcitx 仍然是一个不错的选择。

总而言之,对于 GTK3/GTK4Qt5/Qt6,如果您在没有它们的情况下遇到问题,您可能仍然希望设置相应的环境变量

技巧与诀窍

自定义繁简中文转换

某些 IME 默认假定为简体中文,导致在使用繁体输入时显示不正确的字符,例如 爲什麼 而不是 為什麼。 要解决此问题,可以自定义 Simplified and Traditional Chinese Translation 的用法。

要配置转换,请将 OpenCC profile for Simplified to Traditional 设置为以下值之一

  • s2t - 简体到繁体 (OpenCC)(这是默认值,可能不是您想要的)
  • s2tw - 简体到繁体(台湾)
  • s2twp - 简体到繁体(台湾),带台湾习语
  • s2hk - 简体到繁体(香港)

要配置反向转换,请将 OpenCC profile for Traditional to Simplified 设置为以下值之一

  • t2s - 繁体 (OpenCC) 到简体 (OpenCC)(这是默认值,可能不是您想要的)
  • tw2s - 繁体(台湾)到简体 (OpenCC)
  • tw2sp - 繁体(台湾)到简体 (OpenCC),带中国大陆习语
  • t2hk - 繁体 (OpenCC) 到香港变体
  • t2tw - 繁体 (OpenCC) 到台湾标准
  • tw2t - 繁体(台湾)到繁体 (OpenCC)
  • hk2s - 繁体(香港)到简体 (OpenCC)
  • hk2t - 繁体(香港)到繁体中文 (OpenCC)
  • t2jp - 繁体(旧字体)到新日语汉字(新字体)
  • jp2t - 新日语汉字(新字体)到繁体(旧字体)

最新的列表在这里: OpenCC

查看所选字符的 Unicode 编码

  • 如果您想在文本编辑器中查看所选文本的 Unicode 编码,请直接选择文本,然后使用快捷键 Ctrl+Alt+Shift+u 查看所选文本的编码。
  • 如果您想在不可编辑区域(例如此 wiki)中查看某些文本的 Unicode 编码,您需要先将文本复制到剪贴板,然后单击任何可编辑区域(例如搜索框),然后使用快捷键 Ctrl+Alt+Shift+u 查看剪贴板中文本的编码。

输入特殊字符

一般来说,对于一些简单的符号,例如 āá© 等,您可以通过配置 Compose 键输入它们,但对于更特殊的符号,例如 等,您要么自定义 ~/.XCompose,要么使用 Fcitx5 的 Unicode 功能来实现。

为例

将光标放在任何输入框中,然后按 Ctrl+Alt+Shift+u,然后输入 circle one,您将看到各种 ,其他特殊字符也类似。

切换半角和全角标点

对于 fcitx5-chinese-addons,默认使用全角标点,可以使用 Ctrl+. 在半角和全角标点之间切换。

在 vim 中自动切换输入法

建议使用 fcitx.vim 插件。 此插件将在各自的插入模式中保留不同的缓冲区特定输入法状态。

对于一个简单的解决方案,您可以将代码附加到 ~/.vimrc[11][死链 2024-12-15 ⓘ][12]

~/.vimrc
let fcitx5state=system("fcitx5-remote")
autocmd InsertLeave * :silent let fcitx5state=system("fcitx5-remote")[0] | silent !fcitx5-remote -c " Disable the input method when exiting insert mode and save the state
autocmd InsertEnter * :silent if fcitx5state == 2 | call system("fcitx5-remote -o") | endif " 2 means that the input method was opened in the previous state, and the input method is started when entering the insert mode

如果您使用的是 neovim,则将以上代码附加到 ~/.config/nvim/init.vim

如果您使用的是 Vim9,则代码应为

~/.vimrc
# Only taking affect after using vim9script grammar or has `vim9script` keyword.
var fcitx5state = system("fcitx5-remote")
autocmd InsertLeave * :silent fcitx5state = system("fcitx5-remote")[0] | silent !fcitx5-remote -c
autocmd InsertEnter * :silent if fcitx5state == '2' | call system("fcitx5-remote -o") | endif
注意: 如果您在 vim.cmd 中添加此代码,您可能需要取消注释。

如果您使用的是 VSCodeVim,请将以下代码段添加到您的配置文件中

"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "1",
"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/bin/fcitx5-remote",
"vim.autoSwitchInputMethod.switchIMCmd": "/usr/bin/fcitx5-remote -t {im}",

拼音输入法

注意: 以下功能仅对 fcitx5-chinese-addons 中的拼音输入法有效,请自行探索其他输入法。

导入搜狗词库

  • 对于 KDE 用户,您可以通过设置 > 区域设置 > 输入法 > 拼音 > 词典 > 导入导入搜狗词库。
  • 对于使用 fcitx5-configtool 的用户,您需要手动打开 “Fcitx5 配置” 软件,并在拼音输入法中手动进行配置。
  • 或者,scel2org5 (来自 fcitx5-chinese-addons) 允许进行转换。

您可以导入本地词典,或者浏览并导入在线词典。

云拼音

在拼音输入法的设置页面,您可以启用云拼音。但是如果您需要更改云拼音的默认后端,您需要在 fcitx5 的全局设置中进行更改。提供的后端有 Google, Baidu, GoogleCN

笔画过滤

设置您所设置的拼音输入法“笔画过滤”后的快捷键(默认为 `)。然后在输入文本后,按下快捷键,候选框中将出现笔画过滤,并且可以通过笔画过滤文字。具体规则为:h 横,s 竖,p 撇,n 捺,z 折。

默认情况下,笔画过滤是对句子中的第一个字进行过滤,但是您可以使用以词定字来切换句子中不同的字。

例如,要在“中华人民共和国”这个词的第三个字上进行笔画过滤,您可以在启用笔画过滤后连续按两次 ],以让 fcitx5 对其进行笔画过滤。

注意: 默认情况下,以词定字的快捷键是 [],快捷键可以在拼音输入法的设置中查看。

RIME/中州韵

提示: 所有更改都需要重新部署才能生效。

导入词典

以导入词典 rime-pinyin-zhwikirime-pinyin-moegirlAUR 为例。

提示: 也可以将自定义词典放入 ~/.local/share/fcitx5/rime/ 中,并且文件名 (filename.dict.yaml) 应与词典名称 (词典格式) 相同。

1. 更改 ~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml 文件(以 luna_pinyin 为例,修改其他输入方案的名称)

~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml
# There should only be one "patch:" in the file, if it already exists, just paste the following code
# This file is used to modify a specific input scheme, change the above luna_pinyin to other input scheme names to complete the modification of other input schemes
patch:
    "translator/dictionary": extended #The dictionary name can be customized, just keep the same as the file name below

2. 创建一个新的 ~/.local/share/fcitx5/rime/extended.dict.yaml 文件

提示: 导入自定义词典只需在 "import_tables:" 后添加词典名称。
~/.local/share/fcitx5/rime/extended.dict.yaml
# The following disables the default dictionary and does not enable the default "Baguwen" dictionary and word frequency system, if you do not want traditional characters and box characters to appear in candidate words
---
name: extended
version: "2021.02.19"
sort: by_weight
use_preset_vocabulary: false #Whether to enable the default "Baguwen" dictionary and word frequency system, if you want to enable it, please set it to true.
import_tables:
  # - luna_pinyin #Default dictionary, please uncomment if you want to enable it
  - zhwiki
  - moegirl
  # - custom dictionary name
...

模糊音设置

请根据需要注释 (#) 或删除不需要的模糊音。如果您需要添加其他模糊音,请参考 明月拼音模糊音自定义模板

如果 luna_pinyin.custom.yaml 文件不存在

~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml
patch:
    "speller/algebra":
        - derive/^([zcs])h/$1/ #zh,ch,sh->z,c,s
        - derive/^([zcs])([^h])/$1h$2/ #z,c,s->zh,ch,sh
        - derive/^n/l #n->l
        - derive/^l/n #l->n
        - derive/([ei])n$/$1ng/  # en -> eng, in -> ing
        - derive/([ei])ng$/$1n/ # eng->en, ing -> in
        - abbrev/^([a-z]).+$/$1/ #Jianpin support
        - abbrev/^([zcs]h).+$/$1/ #fuzzy sounds support for Jianpin
        delimiter: " '" #delimiter

如果文件存在,请将 patch: 下面的部分粘贴到文件末尾(luna_pinyin.custom.yaml 中只有一个 patch:

特殊符号

注意: Fcitx5 内置支持特殊符号。请参阅 #输入特殊字符

导入 rime-dict 项目中的 symbols.dict.yaml 词典,可以在拼音中输入希腊字母、一些数学符号和 Emoji 表情。

示例

  • 希腊字母:输入 alpha 输出 α
  • 数学符号:输入 jifen 输出
  • 特殊符号:输入 cha 输出 ✕,✖
  • 序号:输入 qi 输出 Ⅶ,⑦
  • Emoji 表情:输入 haha 输出 😃,😆

加载 librime-lua 插件

如果您想加载 librime-lua 插件,您必须在 fcitx 配置工具的 Rime 输入法设置中添加 lua 模块。