跳转至内容

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 应用程序中使用 #输入法模块。此外,请为旧版 X11 应用程序启用 #XIM[1]

注意 text-input 要求 Wayland 合成器和客户端使用相同版本的协议。如果某些应用程序的版本不匹配,您可能需要使用 #输入法模块。特别是,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

提示
  • 您可能希望禁用位于 /etc/xdg/autostart/org.fcitx.Fcitx5.desktop 的系统级自动启动桌面文件,以防止 Fcitx 5 被其他组件调用,否则登录后可能会收到 Fcitx should be launched by KWin under KDE Wayland ... 的错误信息。请参阅 XDG 自动启动#目录
  • 如果输入法消失,请检查“屏幕键盘”是否已禁用。
Wayfire

启用 input-method-v1 插件并将 fcitx5 添加到自动启动命令中。

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

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

输入法模块 (IM modules)

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

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
  • 追加 SDL_IM_MODULE=fcitx 以启用对某些使用特定版本 SDL2 库的游戏的支持。

或者,在 GTK#配置 的配置文件中写入 gtk-im-module=fcitx(针对 GTK3)和 gtk-im-module="fcitx"(针对 GTK2),以便在 X11/Xwayland 下运行的 GTK 应用程序使用输入法模块,且不会影响 Wayland 原生的 GTK 应用程序。

如果您的区域设置是 en_US.UTF-8,且 GTK2 应用程序无法激活 Fcitx5,您可以专门为该程序设置 GTK_IM_MODULE=xim

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

XIM

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

XMODIFIERS=@im=fcitx

自启动

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

请根据您的需要参阅 自动启动#在 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 并取消勾选 附加组件 (Addons) > XCB > 允许覆盖系统 XKB 设置 (Allow Overriding System XKB Settings)

主题与外观

Themes

默认主题数量有限,您可以在 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,则主题功能将无法工作。[4]

启用单行模式

在拼音输入法(或 Rime 输入法)的设置中,启用 在应用程序内显示预编辑 (Show preedit within application) 即可启用单行模式。

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

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

故障排除

诊断问题

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

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

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

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

单行模式不支持 WPS Office[5] 和 Sublime Text[6]

Fcitx5 在 JetBrains IDE 中不工作

请验证您的系统 区域设置 (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 大屏幕模式和 Dota 2 中激活输入法。[7]

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

请参阅 Chromium#原生 Wayland 支持

GTK 环境 HiDPI 模式下候选词弹出窗口位置偏移

如果候选词弹出窗口的位置没有锚定在光标位置,请安装 fcitx5-gtk

Fcitx5 右侧 Alt 键在 Electron 应用中不工作

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

  1. 点击 添加组 加号按钮。
  2. 在下拉菜单中选择该组,然后添加您的输入法(即键盘,例如 Keyboard - Polish)。
  3. 使用 选择系统键盘布局 来挑选与该输入法匹配的布局,并应用更改。

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

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

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

关于 Qt 和 GTK 软件对 Wayland 的支持,根据 Fcitx5 开发者的建议[9]

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)(这是默认值,可能不是您想要的)
  • tw2s - 繁转简(台湾标准转简体)
  • tw2sp - 繁转简(台湾标准转大陆惯用语)
  • t2hk - 繁转繁(香港)
  • t2tw - 繁转繁(台湾标准)
  • tw2t - 繁转繁(台湾标准转通用繁体)
  • hk2s - 繁转简(香港转简体)
  • hk2t - 繁转繁(香港转通用繁体)
  • t2jp - 繁体(旧字体)转日文新字体
  • jp2t - 日文新字体转繁体(旧字体)

最新列表请见:OpenCC

查看所选字符的 Unicode 编码

  • 如果您想查看文本编辑器中选中文字的 Unicode 编码,只需选中文字,然后使用快捷键 Ctrl+Alt+Shift+u 即可查看。
  • 如果您想查看非编辑区域(例如本维基)中某些文字的 Unicode 编码,需要先将文字复制到剪贴板,然后点击任何可编辑区域(例如搜索框),最后使用快捷键 Ctrl+Alt+Shift+u 查看剪贴板中文本的编码。

输入特殊字符

通常来说,对于 āá© 等简单符号,可以通过配置 Compose 键来输入;但对于 等特殊符号,要么需要自定义 ~/.XCompose,要么利用 Fcitx5 的 Unicode 功能。

为例:

将光标置于任意输入框,按下 Ctrl+Alt+Shift+u,输入 circle one,您会看到多种 ,其他特殊字符类似。

切换半角与全角标点

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

在 vim 中自动切换输入法

建议使用 fcitx.vim 插件。该插件会在各个 insert 模式下保留 buffer 专属的输入法状态。对于 neovim 用户,请使用 fcitx.nvim 插件,它通过直接的 DBus 调用使 neovim 和 fcitx5 保持同步。

简单的方案,可以将代码追加到 ~/.vimrc[10][11]

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

如果您使用的是 neovim,请将上述代码追加到 ~/.config/nvim/init.vim

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

~/.vimrc
# Only take effect after using vim9script syntax or keywords with `vim9script`
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 的全局设置中进行更改。提供的后端有 GoogleBaiduGoogleCN

笔画过滤

在拼音输入法设置中设置笔画过滤的快捷键(默认为 `)。输入文字后按下该快捷键,候选框会出现笔画过滤字样,即可通过笔画筛选。规则为: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 模块。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.