Fcitx
Fcitx 是一个轻量级的输入法框架,旨在为 Linux 提供独立于环境的语言支持。它支持许多不同的语言,并提供了许多有用的非 CJK 功能。
安装
输入法引擎
Fcitx 提供了中文 拼音 和基于表格的输入法(例如 五笔)的内置输入法。
根据您希望输入的语言,可以使用其他输入法引擎
中文
- fcitx-baidupinyinAUR,百度拼音输入法引擎的 Fcitx 封装。
- fcitx-chewing 是一款流行的正体中文注音输入法引擎,基于 libchewing。
- fcitx-cloudpinyin 使用互联网资源来提供候选词。选定的云结果将被添加到本地词典。它支持除 fcitx-rime 之外的所有 Fcitx 拼音输入法。
- fcitx-googlepinyin,Google 拼音的 Fcitx 封装。
- fcitx-libpinyin,基于 libpinyin。它比 fcitx-sunpinyin 具有更好的算法。
- fcitx-rime,基于 Rime 输入法 项目的方案。
- fcitx-sogoupinyinAUR,搜狗输入法 支持简拼、模糊音、云输入、英文输入和混合皮肤。
- fcitx-sunpinyin,基于 sunpinyin。它在速度和准确性之间取得了良好的平衡。
日语
- fcitx-anthy,一款流行的日语输入法引擎。但是,它已不再积极开发。
- fcitx-mozc,基于 Mozc,Google 日语输入法的开源版本。
- fcitx-kkc,一款日语假名汉字输入法引擎,基于 libkkc。
- fcitx-skk,一款日语假名汉字输入法引擎,基于 libskk。
其他语言
- fcitx-hangul,用于输入韩文,基于 libhangul。
- fcitx-m17n,用于输入 M17n 提供的其他语言。
- fcitx-sayura,用于输入僧伽罗语。
- fcitx-unikey,用于输入越南语字符。
输入法模块
为了在 Qt 程序中获得更好的体验,请根据需要安装 fcitx-qt4AUR、fcitx-qt5 或 fcitx-qt6 输入法模块,或者安装 fcitx-im 组来安装 fcitx、fcitx-qt5 和 fcitx-qt6。如果没有这些模块,输入法可能在大多数应用程序上都能工作,但您可能会遇到输入法挂起、预览窗口屏幕位置错误或没有预览错误的问题。
以下应用程序不使用 GTK/Qt 输入模块
- 使用 Tk、motif 或 xlib 的应用程序
- Emacs、Opera、OpenOffice、LibreOffice、Skype、Wine、Java、Xterm、urxvt、WPS
其他
- fcitx-ui-light,Fcitx 的轻量级 UI。
- fcitx-table-extra 添加了 仓颉、郑码、 boshiamy 支持。
- fcitx-table-other,Latex、Emoji 和其他表格。
- #GUI 配置工具
其他软件包(包括 git 版本)也在 AUR 中提供。Fcitx 的所有组件在安装后都需要重启 Fcitx。
用法
桌面环境自动启动
如果您正在使用任何 XDG 兼容的桌面环境,例如 KDE、GNOME、Xfce、LXDE,重新登录后,自动启动应该可以正常工作。如果不起作用,请运行 fcitx 可执行文件。要查看 Fcitx 是否正常工作,请打开一个应用程序并按 Ctrl+Space
(切换输入法的默认快捷键)来调用 Fcitx 并输入一些文字。
如果 Fcitx 未能随您的桌面自动启动,或者您想更改启动 Fcitx 的参数,请配置自动启动或编辑 ~/.config/autostart/
目录中的 fcitx-autostart.desktop
文件(如果尚不存在,请从 /etc/xdg/autostart/
复制它)。
当其他支持 xim 的输入法也在运行时,Fcitx 可能由于 xim 错误而无法启动。在启动 Fcitx 之前,请确保没有其他输入法正在运行。
另请设置以下环境变量,以便 GTK/Qt 应用程序优先使用 IM 模块。
对于 i3 和 Sway 用户,请在您的配置文件中添加 exec --no-startup-id fcitx -d
。 fcitx5 用户应改为添加 exec --no-startup-id fcitx5 -d
。
为输入法模块设置环境变量
设置以下环境变量以注册输入法模块。
GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx
如果没有这些变量,应用程序可能会回退到 XIM 协议,但 Qt5 应用程序除外,Qt5 应用程序不支持 XIM,并且需要 IM 模块才能工作。
如果 fcitx 进程未自动启动,您可能需要在 ~/.xinitrc
中添加 fcitx &
。如果 fcitx &
未启动,请在其后键入 sleep 2
。
- 避免为此使用
.bashrc
,请参阅 GregsWiki:DotFiles。 - 如果所有 Qt 应用程序在使用 Fcitx 时都遇到问题,请运行 qtconfig (qtconfig-qt4),然后转到第三个选项卡,确保 Fcitx 在默认输入法组合框中。
XIM
或者,您可以在您的 GTK 和/或 Qt 程序中使用 X 输入法 (XIM),而无需安装上述模块,在这种情况下,您需要将上面的相应行更改为如下所示
GTK_IM_MODULE=xim QT_IM_MODULE=xim
如果您在 ~/.xprofile
或 ~/.xinitrc
中更改它,请添加 export
。
- 自 2.24.20 起,Gtk2 使用
/usr/lib/gtk-2.0/2.10.0/immodules.cache
作为 immodule 缓存文件。如果您已设置GTM_IM_MODULE_FILE
环境变量,或者不使用官方软件包的安装脚本来更新缓存,请更改/清除环境变量并使用/usr/bin/gtk-query-immodules-2.0 --update-cache
来更新 immodule 缓存。 - Qt5 应用程序不再像 Qt4 那样支持 XIM 协议,而是完全依赖 IM 模块与 Fcitx 通信。
配置
GUI 配置工具
Fcitx 提供了 KDE 配置模块 (kcm-fcitx) 和 GTK3 配置工具 (fcitx-configtool)。
安装 fcitx-configtool 后运行 fcitx-config-gtk3。如果您想启用其他语言的输入法,请取消选中仅显示当前语言。
在更改配置之前手动停止 Fcitx,否则更改可能会丢失。
为了启用拼写检查,当 Fcitx 处于 fcitx-keyboard 提供的输入法时,请按 Ctrl+Alt+h
。
输入法配置
您可以在 GUI 工具中添加/删除输入法。请注意,搜索区分大小写。
第一个设置的输入法是非活动状态,而所有其余的都是活动状态。您通常希望非活动状态是键盘选项之一(例如“键盘 - 英语(美国)”)。这些选项仅根据名称中的键盘布局进行输入。
在全局配置下,触发输入法快捷键将仅在非活动状态和上次使用的活动状态之间切换。在输入法之间滚动默认情况下只会滚动不同的活动状态,但也可以在高级设置中设置为包括非活动状态。此外,必须按顺序按下在输入法之间滚动快捷键,例如 ALT_SHIFT
仅在 alt
在 shift
之前按下时才会激活。
IME 的配置设置可以通过将键盘设置为所需的 IME 并右键单击托盘图标来找到。
更改默认 UI
Fcitx 支持 kimpanel 协议以提供更好的桌面集成。
- Gnome-Shell:您可以从 extensions.gnome.org 或 gnome-shell-extension-kimpanel-gitAUR 安装 kimpanel,它提供了类似于 ibus-gjs 的用户体验。
扩展拼音词库
拼音词库位于 ~/.config/fcitx/pinyin
。文件 pybase.mb
用于单字,文件 pyphrase.mb
定义拼音短语。要扩展它们,请将您的文件放入 /usr/share/fcitx/pinyin
并重启 Fcitx。
皮肤
您可以下载皮肤并将它们解压到以下目录之一,如果该目录不存在,您可以创建它
/usr/share/fcitx/skin #Global settings ~/.config/fcitx/skin #User settings
云拼音配置
安装 fcitx-cloudpinyin 输入法后,重启 Fcitx。如果您在配置 GUI 中找不到它,请启用高级设置。云查询结果将自动添加到当前输入法词典中。
如果您的网络阻止您访问 Google,请将云拼音源更改为百度。
来自云的查询结果默认将作为二级候选词列出,并且是可配置的。如果结果已存在,则仅显示一项。
技巧与提示
快捷键
一些常用的默认快捷键
Ctrl+Space
- 激活输入法Left Shift
- 临时切换到英文Ctrl+Shift
- 在输入法之间切换-
/=
- 向前/向后翻页Shift+Space
- 全角/半角切换
Vim
如果您经常在 Vim 下使用 Fcitx,您可以安装 vim-fcitxAUR 插件,或将以下代码添加到 ~/.vimrc
。退出插入模式时,Fcitx 会自动关闭,否则相反
"##### auto fcitx ########### let g:input_toggle = 1 function! Fcitx2en() let s:input_status = system("fcitx-remote") if s:input_status == 2 let g:input_toggle = 1 let l:a = system("fcitx-remote -c") endif endfunction function! Fcitx2zh() let s:input_status = system("fcitx-remote") if s:input_status != 2 && g:input_toggle == 1 let l:a = system("fcitx-remote -o") let g:input_toggle = 0 endif endfunction set ttimeoutlen=150 "Exit insert mode autocmd InsertLeave * call Fcitx2en() "Enter insert mode autocmd InsertEnter * call Fcitx2zh() "##### auto fcitx end ######
特殊符号
创建 ~/.config/fcitx/data/pySym.mb
,文件内容如下
#The first line with "#" is a comment #Format: coding symbol #Code can only be lowercase letters, after pinyin analysis, the longest is 10 (such as py is 2, pinyin is also 2) #Mathematics symbols sxfh + sxfh - sxfh < sxfh = sxfh > sxfh ± sxfh × sxfh ÷ sxfh ∈ sxfh ∏ sxfh ∑ sxfh ∕ sxfh √ sxfh ∝
直接输入代码以匹配相应的特殊符号。
剪贴板访问
您可以使用 Fcitx 输入剪贴板中的文本(以及简短的剪贴板历史记录和主选择)。默认触发键是 Ctrl-;
。您可以在“剪贴板”附加组件配置页面中更改触发键以及其他选项。
fcitx-remote
fcitx-remote 是一个命令行工具,可用于控制 Fcitx 状态。它与 fcitx 软件包一起安装。
此处值得详细说明的一个选项是 fcitx-remote -s imname
,它切换到由 imname
标识的输入法。可以通过执行 fcitx-diagnose 并在“## 输入法:”部分下查找来找到正在使用的输入法的正确 imname
。
输入特殊字符
参见 Fcitx5#输入特殊字符,此内容也适用于 Fcitx。
故障排除
禁用或更改“触发输入法的附加键” [原文如此]
此设置位于全局配置选项卡下,默认设置为SHIFT Both,这意味着单独按任一 Shift 键将立即更改输入法。虽然它应该仅在单独按下 Shift 键时应用,但它往往会在使用标准键盘输入时随机中断键入大写字母、使用键盘选择文本等操作。
此外,此设置可能会在没有任何警告的情况下恢复为默认设置。为确保无法修改 Fcitx 的配置,您必须使该文件不可变:chattr +i ~/.config/fcitx/config
(以 root 用户身份)。
诊断问题
如果您在使用 Fcitx 时遇到问题,例如 Ctrl+Space 在所有应用程序中都无法工作,那么您应该尝试的第一件事是使用 fcitx-diagnose
进行诊断。 fcitx-diagnose
的输出应包含大多数常见问题的线索。当您咨询其他人(例如,在 IRC 或论坛中)时,提供其输出也将有所帮助。
Emacs
如果您的 LC_CTYPE
是英语,则您可能无法在 Emacs 中使用输入法,这是因为旧的 Emacs 错误。您可以在 Emacs 启动之前将您的 LC_CTYPE
设置为其他内容,例如 zh_CN.UTF-8
,以消除此问题。
默认字体集将使用 `-*-*-*-r-normal--14-*-*-*-*-*-*-*` 作为基本字体(在 src/xfns.c
中),如果您没有匹配的字体(例如 terminus 或 75dpi 的字体,您可以查看 `xlsfonts` 的输出),则无法激活 XIM。根据 FAQ 和 字体,xorg-fonts-misc-otbAUR 可能是应该安装的软件包,因为 xorg-fonts-misc 不再提供所需的字体集。
Emacs 守护进程
如果您正在使用 Emacs 守护进程/客户端模式,则应在启动守护进程时设置 LC_CTYPE
。例如,通过使用 LC_CTYPE=zh_CN.UTF-8 emacs --daemon
运行 Emacs 守护进程。
如果从 systemd 启动 Emacs 守护进程,请在单元文件中设置 Environment="LC_CTYPE=zh_CN.UTF-8" "XMODIFIERS=@im=fcitx"
。
(XMODIFIERS
可能需要在此处显式设置,因为 systemd 不会加载 .xprofile
。检查 Emacs 中的 initial-environment
变量以验证两个变量都已正确设置。)
Ctrl+空格键在 GTK 程序中无法工作
此问题有时会发生,尤其是在区域设置设置为英语时。请确保您的 GTK_IM_MODULE
设置正确。
另请参阅 FAQ
如果您已将 *_IM_MODULE
环境变量设置为 fcitx 但无法激活 fcitx,请检查您是否已安装相应的输入法模块。
某些程序只能使用 xim,如果您正在使用这些程序,请确保您的 XMODIFIERS
设置正确,并注意您可能遇到的问题。这些程序包括所有不使用 GTK 或 Qt 的程序(例如,直接使用 tk、motif 或 xlib 的程序)、Emacs、Opera、OpenOffice、LibreOffice、Skype。
如果您无法在 Gnome 下的 gnome-terminal 中启用 fcitx,并且上述方法不起作用,请尝试
$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx'>}"
内置中文拼音默认未激活
如果您的区域设置是 en_US.UTF-8
,则 fcitx 默认情况下未启用内置中文拼音输入法。仅启用了 fcitx-keyboard-us
输入法。您可以通过 fcitx-diagnose
命令获得如下通知
## Input Methods: 1. Found 1 enabled input methods: fcitx-keyboard-us 2. Default input methods: **You only have one input method enabled, please add a keyboard input method as the first one and your main input method as the second one.**
然后,您应该通过 GUI 配置工具将 Pinyin
或 Shuangpin
输入法添加到已激活的输入法中。
fcitx 和 KDE
由于某些原因,KDE 无法正确处理键盘布局。例如,如果您从美国(英语)切换到 LT(立陶宛语),键盘上的所有数字都应产生立陶宛字母,但它们仍然产生数字作为输出。这可以通过以下步骤修复
- 如果 fcitx 在后台运行,请将其关闭。
- 禁用与 KDE 相关的内容
- 在系统设置 > 输入设备 > 布局(选项卡)中,确保配置布局未选中。
- 在系统设置 > 输入设备 > 高级(选项卡)中,确保配置键盘选项未选中。
- 启动 fcitx 以启动它。您可以关闭终端 - fcitx 仍将在后台运行。
- 设置您需要的布局(右键单击系统托盘图标,然后单击配置)。
- 右键单击系统托盘图标,然后单击退出
此时,您应该拥有可用的布局,应显示本机 KDE 布局切换图标,您可以通过鼠标滚轮或单击它来切换它们。
输入法意外切换到英文
例如,在 XMind 中,当用户按 Enter
创建节点时,输入法始终切换为英文,并且必须手动切换回中文。
要解决此问题,请打开 Fcitx GUI 配置工具(由 fcitx-configtool 提供),切换到全局配置选项卡,在下拉菜单窗口间共享状态中,选择按程序或全部。
xmodmap 设置被覆盖
Fcitx 控制键盘布局,因此您的 xmodmap 设置将被覆盖。自 4.2.7 起,如果 ~/.Xmodmap
存在,Fcitx 将尝试加载它。
有关如何保存 xmodmap 更改的更多详细信息,请参阅 FAQ
Fcitx 和 setxkbmap
如果您正在为另一种语言使用 setxkbmap,那么(如上所述)Fcitx 可能会覆盖它们,甚至阻止在某些应用程序(例如 QuteBrowser)中切换到该语言。
如果您想防止这种情况并独立于 Fcitx 管理您的 xmodmap 布局,请按照以下步骤操作
- 打开 Fcitx GUI 配置工具(由 fcitx-configtool 提供)
- 切换到附加组件选项卡
- 选择高级
- 搜索 xkb#
- 选择X 键盘集成
- 单击配置
- 取消选择允许覆盖系统 XKB 设置
- 单击确定
HiDPI 下 Fcitx 预编辑框太小
参见 HiDPI#Fcitx