Fcitx5

出自 Arch Linux 中文维基

Fcitx5 是一個輸入法框架,它具有輕量級內核,並通過 addon 提供各種語言和輸入法的支持。Fcitx5 接替 Fcitx

安裝[編輯 | 編輯原始碼]

安裝 fcitx5 軟件包。

fcitx5-im包組 包組提供 fcitx5 本體、#配置工具#輸入法模塊

注意: fcitx5 僅提供基本框架,且僅支持英文。如果要輸入其他語言(例如中文或日文),則需要安裝輸入法引擎(IME)。

中文[編輯 | 編輯原始碼]

日文[編輯 | 編輯原始碼]

  • fcitx5-anthy 是流行的日文輸入引擎。但是,它已不再受到積極開發。
  • fcitx5-kkc 是日文假名輸入引擎,它基於 libkkc
  • fcitx5-mozc 基於 Mozc英語Mozc(Google 日文輸入法的開源版本)。
  • fcitx5-skk 是日文假名輸入引擎,它基於 libskk

其他語言[編輯 | 編輯原始碼]

輸入法模塊[編輯 | 編輯原始碼]

要獲取更好的體驗,你可以根據需要安裝以下模塊。即使不安裝,輸入法在大部分的應用程式中仍可能正常工作,但你可能會遇到輸入法掛起、預覽窗口位置錯誤或沒有預覽的問題。

提示:通常,只需安裝 fcitx5-qtfcitx5-gtk 就足夠了。

卸載[編輯 | 編輯原始碼]

使用以下命令卸載fcitx5相關組件

sudo pacman -Rns $(pacman -Qsq fcitx5)

配置[編輯 | 編輯原始碼]

X11(以及 Xwayland)和 Wayland 環境的配置方式並不相同。

Fcitx5 支持多種與要使用輸入法的應用程式進行通信的方式:

  • Wayland 輸入法協議
    • input-method-v1: 用於 KDE 和 Wayfire 等 Wayland 混成器。
    • input-method-v2: 用於 Sway 等 Wayland 混成器。
    • GNOME Shell: 用於與 GNOME Wayland 桌面環境。它是通過 D-Bus 進行的。
  • 輸入法模塊。這些通常用於 X11 環境,或者尚未良好支持 Wayland 輸入法協議的應用程式。它是通過 D-Bus 進行的。需要額外注意的是,當在原生 Wayland 模式下使用輸入法模塊時,為了將輸入法窗口放置到正確的位置,輸入法窗口是由使用輸入法的應用程式自己繪製的,因此不同的應用程式的狀況不太一樣。比如 GTK3 的輸入法窗口可能會閃爍,Qt 的輸入法窗口可能無法顯示部分 GTK 能顯示的文字。
    • fcitx: 用於 GTKQt 的輸入法模塊。
    • fcitx5: 同上,但是不兼容 fcitx4 的輸入法模塊。不建議使用。
    • ibus: 兼容 IBus 的協議。
  • XIM: 用於其它 X11 應用程式。有一些缺點,建議儘量不用。

X11[編輯 | 編輯原始碼]

X11 下,輸入法可使用 GTKQt 的輸入法模塊通過 D-Bus 與輸入法通信。某些非 GTKQt 的應用程式(或者框架)也實現了 fcitx 或者 ibus 的 D-Bus 通信協議。其它程序可以通過 X11 的 XIM 協議進行通信。

為了告訴程序使用 fcitx5 輸入法,需要設置相應的環境變量。編輯 /etc/environment 並添加以下幾行,然後重新登錄[1]

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus

如果使用 en_US.UTF-8 時,遇到 GTK2 無法激活 fcitx5,可專門為該 GTK2 應用程式設置輸入法為 xim,如

$ env GTK_IM_MODULE=xim <your_gtk2_application>

請勿將 GTK_IM_MODULE 全局設置為 xim,因為它也會影響 GTK3 程序。XIM 有各種問題(比如輸入法重啟之後再無法輸入),儘可能不要使用。

注意:
  • SDL_IM_MODULE 是為了讓一些使用特定版本 SDL2 庫的遊戲能正常使用輸入法。
  • GLFW_IM_MODULE 是為了讓 kitty 啟用輸入法支持。此環境變量的值為ibus為了保證所有的kitty均可啟用該功能,在基於x11的桌面環境和窗口管理器中此屬性設置為fcitx5或fcitx會導致無法啟用輸入法設置,wayland桌面不受此影響。
  • 按 fcitx5 上游推薦,環境變量的值設置為fcitx。部分並非由 Arch 從源碼編譯打包的應用程式因兼容性的需求而需要將之設置為fcitx5

Wayland[編輯 | 編輯原始碼]

不同 Wayland 混成器的情況有所不同。

KDE Wayland[編輯 | 編輯原始碼]

根據 Fcitx 5 Wiki,Plasma 5.27+ 支持 Wayland text-input-v1、text-input-v2 和 text-input-v3, 分別被 Chromium、Qt 和 GTK 使用)。

要使用 Wayland 輸入法協議,首先退出正在運行的 Fcitx 5 進程,前往系統設置 > 輸入設備 > 虛擬鍵盤,選擇 Fcitx 5

對於 Xwayland 程序, 設置 XMODIFIERS 環境變量。

警告: 勿加 GTK_IM_MODULEQT_IM_MODULE.

GNOME Wayland[編輯 | 編輯原始碼]

安裝 gnome-shell-extension-kimpanel-gitAUR 並啟用 Kimpanel GNOME Shell 拓展。

設置環境變量 XMODIFIERS QT_IM_MODULE, 註銷並重新登錄。

根據 Fcitx 5 Wiki, GNOME 支持 Wayland text-input-v3 協議,因此 GTK 應用的輸入法支持應當開箱即用, QT 與 Chromium 因不支持 text-input-v3 需要添加環境變量.

根據 Fcitx5 Wiki, 在GNOME Wayland 環境中的fcitx,可能出現彈出候選窗口無法在 gnome-shell UI 上顯示。一個解決方案是使用Kimpanel擴展,此為擴展連接

Wayfire[編輯 | 編輯原始碼]

啟用 input-method-v1 插件。設置 XMODIFIERSQT_IM_MODULE 環境變量。然後運行 Fcitx5 即可。

Wayfire 支持 text-input-v1,但是不會顯示輸入法窗口[2]。所以需要設置 QT_IM_MODULE 讓 Qt 使用輸入法模塊以避免使用到 text-input-v1。運行於原生 Wayland 模式下的 Chromium 會用到。

Chromium[編輯 | 編輯原始碼]

參閱 Chromium#原生Wayland上運行

Xwayland[編輯 | 編輯原始碼]

Xwayland 的情況和 X11 上相同,但是為了不影響 Wayland 部分,設置方式有所不同。

對於運行於 Xwayland GTK 程序,你可以單獨為軟件設置環境變量GTK_IM_MODULE=fcitx,或者在~/.config/gtk-3.0/settings.ini中添加:

[Settings]
gtk-im-module = fcitx

基於 Electron英語Electron 開發的軟件,若無法使用原生 Wayland 模式運行,則需要進行以上設置。如果使用到 XIM,則會出現輸入過程中部分編碼上屏的現象,俗稱「漏字」。

隨桌面環境自動啟動[編輯 | 編輯原始碼]

注意:
  • 如果您使用的桌面環境是兼容 XDG 的(例如 KDEGNOMEXfceLXDE等),則 無需 此步驟。
  • 如果使用i3awesome等窗口管理器,需要在其腳本中添加 Fcitx5 以實現自啟動。例如,如果您使用 i3 或 sway ,可以在配置文件中添加exec --no-startup-id fcitx5 -d
  • 如果使用dwm,則需要添加 autostart 補丁。在 ~/.dwm/autostart.sh 中添加fcitx5 -d

想要 fcitx5 開機自啟,執行

$ cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/

如果使用 xinit 啟動,則可以在~/.xinitrc中,在exec前添加fcitx5 &

詞庫[編輯 | 編輯原始碼]

對於 Fcitx5 的中文輸入法, 目前在倉庫裡提供了數個詞庫:

注意:
  • 詞典文件存在的目錄為 ~/.local/share/fcitx5/pinyin/dictionaries
  • .dict類型的詞典文件可以直接手動移動到詞典目錄,使用搜狗細胞詞庫下載的.scel文件無法被fcitx識別
  • 可在fcitx5-configtool中選在導入來自搜狗細胞詞庫文件,或使用scel2org5指令手動轉換

自定義詞庫[編輯 | 編輯原始碼]

一般而言,由於 fcitx5 支持導入搜狗詞庫,因此很大程度上不需要自定義詞庫,但是 fcitx5 依然提供了相關工具。

原始詞庫文件是一個文本文件,其格式為: 漢字 拼音 頻率

在得到原始詞庫文件後,調用 libime_pinyindict "詞庫文件.txt" "詞庫文件.dict" 即可。

自定義詞庫文件放置在 ~/.local/share/fcitx5/pinyin/dictionaries

注意: 以下內容或許能提供幫助:

配置工具[編輯 | 編輯原始碼]

fcitx5 的配置文件位於 ~/.config/fcitx5,儘管您可以使用文本編輯器編輯配置文件,但是使用 GUI 配置顯然更方便。安裝 fcitx5-configtool 軟件包並運行 fcitx5-configtool,或者從輸入法托盤的菜單裏選擇「配置」。

KDE 用戶請安裝 kcm-fcitx,然後在 KDE 的「設置」程序裡找到並設置。

主題和外觀[編輯 | 編輯原始碼]

主題[編輯 | 編輯原始碼]

倉庫內的主題數量有限,如果需要更多主題,可以去 GitHub 發現更多主題。

然後前往 Fcitx5設置 -> 配置附加組件 -> 經典用戶界面 -> 主題 設置主題。

注意: 如果您在 GNOME 環境下使用了 gnome-shell-extension-kimpanel-gitAUR,那麼主題設置對於 Fcitx5 不起作用。[2]

設置單行模式[編輯 | 編輯原始碼]

在拼音輸入法(或者 Rime 輸入法)的設置中,啟用「在程序中顯示預編輯文本」即可啟用單行模式

故障處理[編輯 | 編輯原始碼]

診斷問題[編輯 | 編輯原始碼]

當你遇到任何 Fcitx 5 有關的問題,比如 Ctrl+Space 快捷鍵在有的程序中不能工作,首先應該用 fcitx5-diagnose 命令診斷問題的原因。 fcitx5-diagnose 會列出所有 Fcitx 5 正常運行所需的前提條件,從輸出結果中通常可以找到問題的原因。

部分應用中 Fcitx 5 的單行默認無效[編輯 | 編輯原始碼]

1. 如果是 Firefox 等 gtk 應用中單行模式不生效,請安裝 fcitx5-gtk

2. 在 WPS 和 Sublime 中單行模式無效,這是 WPS 和 Sublime 自身的問題,而不是 fcitx5 的問題。[3]

WPS 無法正常呼出輸入法[編輯 | 編輯原始碼]

請參閱 WPS Office#Fcitx5 無法輸入中文

emoji 在候選框中顯示為空白[編輯 | 編輯原始碼]

首先確保電腦上已經安裝了帶有 Emoji 的字體(例如 noto-fonts-emoji)。然後對該 emoji 字體禁用反鋸齒。編輯 fontconfig 的配置文件並加入:

<match target="font">
  <test name="family" qual="first">
    <string>Noto Color Emoji</string>
  </test>
  <edit mode="assign" name="antialias">
    <bool>false</bool>
  </edit>
</match>

RStudio 中無法調出輸入法[編輯 | 編輯原始碼]

運行以下命令:

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

找出 Qt 庫的版本,使用該版本重新編譯 fcitx5-qt 中的 libfcitx5platforminputcontextplugin.so ,再放到 /usr/lib/rstudio/plugins/platforminputcontexts/ 目錄中。

如果使用的是 rstudio-desktop-binAUR ,可直接安裝 rstudio-fcitx5AUR

在 Steam 和 Dota2 中無法使用[編輯 | 編輯原始碼]

事實上,Fcitx5 能夠在 Steam 大屏模式和 Dota2 中使用。但是需要使用 Ctrl + Space 激活輸入法而不是 Ctrl + Shift [4]

目前最新的 steam Beta 版本已經支持 fcitx5 輸入,如需使用 fcitx5 ,「設置」 -> 「界面」 -> 「參與客戶端測試」 -> 「Steam Beta Update」,等待 steam 重啟更新即可。但是fcitx5 輸入支持要求電腦語言環境為 LANG=zh_CN.UTF-8。如果本身電腦的語言環境不是中文,則需要在 steam.desktop 中需要添加這個環境變量,例如Exec=env LANG=zh_CN.UTF-8 /usr/bin/steam-runtime %U -forcedesktopscaling 1.5 --gtk-version=4

輸入法窗口不顯示[編輯 | 編輯原始碼]

Sway[編輯 | 編輯原始碼]

sway 已經合併了實現 text-input-v3 協議的分支,但是仍然沒有完全實現 input-method-v2 協議,因此仍然無法顯示彈出窗口。目前有一個開啟的拉取請求可以修復此問題。可以從 AUR 安裝 sway-imAUR

GNOME[編輯 | 編輯原始碼]

Gnome 可以選擇安裝 kimpanel 插件。

在 Wine 中無法使用輸入法[編輯 | 編輯原始碼]

對於運行於 Xorg 或者 Xwayland 下的 Wine,記得在環境變量中加入

XMODIFIERS=@im=fcitx

運行於 Wayland 下的 Wine 尚無法使用輸入法。

提示和技巧[編輯 | 編輯原始碼]

查看選中字符的 Unicode 編碼[編輯 | 編輯原始碼]

  • 如果你需要查看文本編輯器中選中文字的 Unicode 編碼,那麼直接選中文字,然後使用快捷鍵 ctrl + alt + shift + u 可以查看選中文字的編碼
  • 如果你需要查看非編輯區域(比如本 wiki)中文字的 Unicode 編碼,那麼需要首先將該段文字複製到剪貼板,然後點擊任意一個可編輯區域(比如搜索框),然後使用快捷鍵 ctrl + alt + shift + u 可以查看剪貼板中文字的編碼

通過 Fcitx5 輸入特殊字符[編輯 | 編輯原始碼]

要輸入特殊符號,有兩種方式:

為例:

將光標定位到任意一個輸入框內,然後按下 Ctrl + Alt + Shift + U,然後輸入 circle one,您將會看到多種形式的 。alpha, beta, sigma 等同理。

在 vim 中自動切換輸入法[編輯 | 編輯原始碼]

推薦使用 fcitx.vim 插件。此插件會為不同緩衝區保持各自的插入模式輸入法狀態。

簡單的方案,可以向 ~/.vimrc 追加代碼:[3][4]

let fcitx5state=system("fcitx5-remote")
" 退出插入模式时禁用输入法,并保存状态
autocmd InsertLeave * :silent let fcitx5state=system("fcitx5-remote")[0] | silent !fcitx5-remote -c
" 2 表示之前状态打开了输入法,则进入插入模式时启动输入法
autocmd InsertEnter * :silent if fcitx5state == 2 | call system("fcitx5-remote -o") | endif

如果使用的是 neovim ,則追加上述代碼到 ~/.config/nvim/init.vim

注意: 如果您在 vim.cmd 中添加此代碼,可能需要將註釋去掉。

拼音輸入法[編輯 | 編輯原始碼]

注意: 以下功能只對 fcitx5-chinese-addons 中的拼音輸入法有效,其他輸入法請自行探索。

導入搜狗詞庫[編輯 | 編輯原始碼]

  • 對於 KDE 用戶來說,可以通過 設置 -> 區域設置 -> 輸入法 -> 拼音 -> 詞典 -> 導入 來導入搜狗詞庫
  • 對於使用 fcitx5-configtool 的用戶來說,需要手動打開 「Fcitx5 配置」 這個軟件,並在拼音輸入法中手動配置。

既可以導入本地詞庫也可以在線瀏覽詞庫並自動導入

雲拼音[編輯 | 編輯原始碼]

在拼音輸入法的設置頁面,你可以啟用雲拼音。但是如果你需要更改雲拼音默認的後端,則需要在 fcitx5 的全局設置裡進行更改。提供的後端有 Google, Baidu, GoogleCN

筆畫過濾[編輯 | 編輯原始碼]

在設置的拼音輸入法的「筆畫過濾」後設置快捷鍵(默認為 `) 然後在輸入文字後,按下快捷鍵,輸入法的候選框將會出現筆畫過濾字樣,可以對詞語進行筆畫過濾,具體規則為:h 橫、s 豎、p 撇、n 捺、z 折

默認情況下,筆畫過濾是對一個句子的第一個字進行篩選,但是使用以詞定字可以在一個句子之間的不同字之間進行切換。

例如對句子「中華人民共和國」中的第三個字進行筆畫篩選,你可以在啟用筆畫過濾後連續按兩次 ]fcitx5 對其進行筆畫過濾。

注意: 默認情況下,以詞定字的快捷鍵為 [],該快捷鍵在拼音輸入法的設置中可以查看

將輸入錯誤的單詞從輸入歷史中刪除[編輯 | 編輯原始碼]

輸入過程中有可能因為誤操作寫入錯誤單詞, 此時可以通過重新輸入錯誤單詞拼音 -> 使用忘記詞彙快捷鍵(默認為 Ctrl + 7) -> 選擇錯誤單詞的對應數字刪除.

快捷鍵可以由Fcitx 配置 > "附加組件"標籤頁 > "輸入法"部分 > "拼音"齒輪圖標 > "忘記詞彙" 快捷鍵指定.

輸入自定義時間[編輯 | 編輯原始碼]

在按照前文安裝 fcitx5-lua之後, 在輸入;進入快速輸入模式後可使用如下指令:

  • ;fh可輸入特殊符號
  • ;sj可輸入當前時間, 格式默認提供3種: [15:52],[15時52分],[十五時五十三分];如果輸入;sj後按照時:分的格式輸入,可以格式化指定時間。
  • ;rq可輸入當前日期, 格式默認提供3種: [2023-07-21],[2023年7月21日],[二〇二三年七月二十一日];如果輸入;rq後按照年-月-日的格式輸入,可以格式化指定日期。

可通過修改pinyin.lua甚至imeapi.lua腳本擴展功能(注意備份).[5]

RIME/中州韻[編輯 | 編輯原始碼]

提示:所有更改皆需重新部署方可生效

導入詞庫[編輯 | 編輯原始碼]

以導入詞庫fcitx5-pinyin-zhwiki-rimeAURfcitx5-pinyin-moegirl-rimeAUR為例.

提示:將自定義詞庫放入~/.local/share/fcitx5/rime/亦可,文件名(文件名.dict.yaml)應與詞庫名統一(詞庫格式)

1.更改~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml文件(以luna_pinyin為例,其餘輸入方案修改方案名即可)

~/.local/share/fcitx5/rime/luna_pinyin.custom.yaml
# 文件中「patch:」應只存在一個,若已存在只需粘貼後面的代碼
# 此文件用於修改特定輸入方案,把上方的luna_pinyin改為其它輸入方案名即可完成對其它輸入方案的修改
patch:
    "translator/dictionary": extended #詞典名字可自定義,與下方文件名保持一致即可

2.新建~/.local/share/fcitx5/rime/extended.dict.yaml文件

提示:導入自定義詞庫只需將詞庫名添加到「import_tables:」之後
~/.local/share/fcitx5/rime/extended.dict.yaml
# 以下禁用了默認詞庫同時不啟用默認的「八股文」詞庫及詞頻系統,如果您不希望候選詞中的出現繁體字、方框字的話
---
name: extended
version: "2021.02.19"
sort: by_weight
use_preset_vocabulary: false #是否啟用默認的「八股文」詞庫及詞頻系統,如需啟用請設為 true 。
import_tables:
  # - luna_pinyin #默認詞庫,如需啟用請取消註釋
  - zhwiki
  - moegirl
  # - 自定義詞庫名
...

模糊音設置[編輯 | 編輯原始碼]

請根據需要註釋(#)或刪除不需要的模糊音,若需增加其它模糊音,請參考明月拼音模糊音定製模板

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/ #簡拼支持
        - abbrev/^([zcs]h).+$/$1/ #模糊音的簡拼支持
        delimiter: " '" #分隔符

如果文件存在,則粘貼patch:以下的部分到文件末尾(luna_pinyin.custom.yaml中有且只有一個patch:)

特殊符號[編輯 | 編輯原始碼]

注意: Fcitx5 已經內置了對特殊符號的支持。參閱#通過 Fcitx5 輸入特殊字符

導入rime-dict項目中symbols.dict.yaml詞庫即可在拼音中輸入希臘字母、部分數學符號及Emoji表情

示例:

希臘字母:輸入alpha即可輸出α

數學符號:輸入jifen即可輸出

特殊符號:輸入cha可輸出✕,✖

序號:輸入qi可輸出Ⅶ,⑦

Emoji表情:輸入haha可輸出😃,😆

加載 librime-lua 插件[編輯 | 編輯原始碼]

若想加載 librime-lua 插件,須在 fcitx 配置工具的 Rime 輸入法設置中添加 lua 模塊。

參考來源[編輯 | 編輯原始碼]