Fcitx
Fcitx (Flexible Input Method Framework) は Linux に環境非依存の言語サポートを提供する軽量の インプットメソッドフレームワーク です。多くの言語をサポートし便利な non-CJK 機能が含まれています。
インストール
fcitx は公式リポジトリから Pacman でインストールできます。
インプットメソッドエンジン
入力したい言語にあわせて、インプットメソッドエンジンをインストールしてください:
中国語
- fcitx-baidupinyinAUR: Baidu Pinyin インプットメソッドがベース。
- fcitx-chewing: libchewing がベースの繁体字の注音入力エンジン。
- fcitx-cloudpinyin: クラウドによる中国語入力をサポート。
- fcitx-googlepinyin: libgooglepinyin がベース。Android 用の Google ピンイン IME。
- fcitx-libpinyin: libpinyin がベース。fcitx-sunpinyin よりも優れたアルゴリズムが使われています。
- fcitx-rime: Rime IME プロジェクトのスキーマがベース。
- fcitx-sogoupinyinAUR: Linux 向けの捜狗インプットメソッド。同音異字、クラウド入力、英語入力、混合入力をサポート。
- fcitx-sunpinyin: sunpinyin がベース。速度と正確性のバランスが良い。
日本語
- fcitx-anthy: 人気の日本語入力エンジン。開発は停止しています。
- fcitx-mozc: Google 日本語入力のオープンソース版である Mozc がベース。
- fcitx-kkc: libkkc がベースの新しい日本語仮名漢字入力エンジン。
- fcitx-skk: libskk がベースの日本語仮名漢字入力エンジン。
他の言語
- fcitx-hangul: libhangul がベースの韓国語のハングル入力エンジン。
- fcitx-m17n: M17n によって提供されている他の言語の入力エンジン。
- fcitx-sayura: シンハラ文字入力エンジン。
- fcitx-unikey: ベトナム文字入力エンジン。
インプットメソッドモジュール
GTK+ や Qt プログラムでより良い動作を得るには、必要に応じて fcitx-qt4AUR, fcitx-qt5 パッケージをインストールしてください。もしくは fcitx-im グループで全てのパッケージをインストールできます。モジュールをインストールしなくてもアプリケーション上でインプットメソッドは動作しますが、フリーズしたりプレビューウィンドウの位置がおかしくなったり、プレビューが表示されなくなったりします。
以下のアプリケーションは GTK+/Qt インプットモジュールを使用しません:
- Tk, motif, xlib などを使用するアプリケーション
- Emacs, Opera, OpenOffice, LibreOffice, Skype, Wine, Java, Xterm, urxvt, WPS
その他
- fcitx-ui-light: fcitx の軽量 UI。
- fcitx-table-extra: 倉頡, 郑码, 嘸蝦米サポートを追加。
- fcitx-table-other: LaTeX, 絵文字など。
- fcitx-tabletAUR: 手書きのタブレットサポート。
- fcitx-tsundereAUR: 文字を入力した後に何某かを追加するモジュール。
- kcm-fcitx: fcitx の KDE 設定モジュール。
- #設定ツール
fcitx のコンポーネントをインストールした後は fcitx の再起動が必要です。
使用方法
デスクトップ環境での自動起動
KDE, GNOME (X 上で動作している場合), Xfce, LXDE などの XDG 互換のデスクトップ環境を使っている場合は、再ログインで自動的に起動するようになるはずです。起動しないときは、ターミナルを開いて次のように入力してください:
$ fcitx-autostart
fcitx が正しく動作しているか確認するために、leafpad といったアプリケーションを開いて Ctrl+Space
(インプットメソッドの切り替えのデフォルトのショートカット) を押して FCITX を呼び出しなにか文字を入力してみて下さい。
Fcitx があなたの環境で自動で起動しない場合や fcitx を起動するパラメータを変更したい場合は、デスクトップ環境によって提供されているツールを使って xdg の自動起動を設定するか ~/.config/autostart/
ディレクトリ内の fcitx-autostart.desktop
ファイルを編集してください (存在しないときは /etc/xdg/autostart/
からコピーしてください)。
デスクトップ環境が xdg 自動起動をサポートしていない場合は、(環境変数を正しく設定した後に) 次の行をスタートアップスクリプトに追加してください:
$ fcitx-autostart
xim サポートのある他のインプットメソッドが動作していると、Fcitx は xim エラーで起動できません。Fcitx を起動する前に他のインプットメソッドが動いていないことを確認してください。
インプットメソッドモジュールの環境変数の設定
Set the following environment variables to register the input method modules.
GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx
Without these variables, applications may fallback to XIM protocol, except for Qt5 applications which do not have XIM support and require an IM module in place.
If fcitx process does not start automatically, you might need to add fcitx &
in your ~/.xinitrc
.
If fcitx &
does not start, type sleep 2
after it
Xim
任意で、上記のモジュールをインストールせずに、GTK や Qt のプログラム、あるいはその両方で X Input Method (XIM) を使用するように設定することも可能です。この場合、上記の対応する行を以下のように変更してください:
GTK_IM_MODULE DEFAULT = xim QT_IM_MODULE DEFAULT = xim
~/.xprofile
または ~/.xinitrc
を変更する場合は、export
を追加します。
変更を適用するためにログインしなおしてください。
設定
設定ツール
Fcitx は GUI の設定ツールを提供しています。kcm-fcitx (KDE) または fcitx-configtool (GTK+3 ベース) がインストールできます。fcitx-configtool をインストールしたら fcitx-config-gtk3 を起動してください。別の言語のインプットメソッドを使用したいときは Only Show Current Language の設定を解除してください。
設定を変更する前に fcitx は停止してください。停止しないと変更が反映されません。
スペルチェックを有効にするには、fcitx が fcitx-keyboard によるインプットメソッドを使っている時に ctrl + alt + h を押して下さい。長い単語を入力すれば、動いているかどうか確認できます。
入力メソッドの設定
GUI ツールで入力メソッドの追加/削除が可能です。大文字と小文字を区別して検索することに注意してください。
最初に設定された入力メソッドは非アクティブ状態、それ以外はすべてアクティブ状態になります。一般に、非アクティブ状態は キーボード オプションの1つです(例:"キーボード - 英語(US)") これらのオプションは、名前にあるキーボードレイアウトに基づいて入力するだけです。
グローバル設定では、トリガー入力メソッドのショートカットは非アクティブ状態と最後に使用したアクティブ状態の間でしか切り替わりません。Scroll between Input Methods はデフォルトでは異なるアクティブ状態間のスクロールのみですが、詳細設定で非アクティブ状態を含むように設定することもできます。さらに、Scroll between Input Methods のショートカットは順番に押さなければなりません。例えば ALT_SHIFT
は alt
が shift
より前に押されたときのみ有効になります。
IME の設定は、キーボードを任意の IME に設定し、トレイアイコンを右クリックすることで確認できます。
デフォルト UI の変更
Fcitx は kimpanel プロトコルによるデスクトップの統合をサポートしています。
- Gnome-Shell: extensions.gnome.org や gnome-shell-extension-kimpanel-gitAUR パッケージから kimpanel をインストールでき、ibus-gjs と同じように使うことができます。
- KDE: kimtoy は Sogou や fcitx のスキンを使えます。
ピンイン辞書の拡張
ピンイン辞書は ~/.config/fcitx/pinyin
に存在します。pybase.mb
ファイルには単一文字が pyphrase.mb
ファイルにはピンインのフレーズが定義されています。拡張するには /usr/share/fcitx/pinyin
にファイルを保存して fcitx を再起動してください。
スキン
スキンをダウンロードし、以下のディレクトリのいずれかに解凍します。ディレクトリが存在しない場合は、作成することができます。
/usr/share/fcitx/skin #Global settings ~/.config/fcitx/skin #User settings
cloud ピンインの設定
fcitx-cloudpinyin 入力メソッドをインストールした後、fcitx を再起動してください。コンフィギュレーション GUI で見つからない場合は、advanced settingsを有効にしてください。クラウドクエリの結果は自動的に現在の入力メソッドの辞書に追加されます。
Google にアクセスできない場合は、cloud ピンインのソースを Baidu に変更します。
cloud のクエリ結果は、デフォルトでは二次候補としてリストアップされますが、設定可能です。既に結果が存在する場合は、1件のみ表示されます。
ヒントとテクニック
ショートカットキー
よく使われるデフォルトのショートカットキーをいくつか紹介します。
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 ######
クリップボード
Fcitx にはクリップボードが付属しています、ショートカットキーは Ctrl+;
です。
特殊記号
~/.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 を使ってクリップボード (とクリップボード履歴) にある文章を入力することが可能です。デフォルトのトリガーキーは Control-; です。このトリガーキーはクリップボードのアドオンの設定ページにある他のオプションと同じように設定することが可能です。
fcitx-remote(リモート)
fcitx-remote は fcitx の状態を制御するために使用することができるコマンドラインツールです。fcitx パッケージと一緒にインストールされます。
ここで詳しく説明する価値のあるオプションは fcitx-remote -s imname
で、これは imname
で特定される入力メソッドに切り替わります。使用中の入力メソッドに対する正しい imname
は、 fcitx-diagnose を実行し、 "## インプットメソッド:" セクションで確認することができます。
特殊文字入力
Fcitx5#特殊文字を入力 を参照してください。この内容は Fcitx にも適用されます。
トラブルシューティング
トリガー入力方法の追加キー を無効化または変更する [sic]
この設定は Global Config タブにあり、デフォルトは SHIFT 左右 です。つまり、どちらかのシフトキーを押せばすぐに入力方法が変わるということです。本来はシフトキーを個別に押した場合にのみ適用されるはずですが、標準的なキーボード入力を使用しているときに大文字の入力やキーボードによるテキスト選択などがランダムに中断される傾向があります。
また、この設定は、いつでも警告なしにデフォルトに戻る可能性があります。fcitx の設定を変更できないようにするためには、fcitx の設定ファイルを ”不変" にする必要があります。chattr +i ~/.config/fcitx/config
(rootユーザで)
問題の診断
fcitx を使っていて問題が発生する場合、例えばどのアプリケーションでも Ctrl+Space が使えないときは、fcitx-diagnose
を使ってまず問題を診断してみてください。fcitx-diagnose
はよくある問題についての手がかりを提供してくれます。また、(IRC やフォーラムなどで) 他の人に相談するときはコマンドの出力を貼り付けると役に立つはずです。
Emacs
LC_CTYPE
が英語の場合、emacs のバグによって emacs でインプットメソッドが使えなくなることがあります。emacs を起動する前に ja_JP.UTF-8
など LC_CTYPE
を他の値に設定することで問題を回避できます。
使用するロケールは有効である必要があります。/etc/locale.gen
を編集して適当な行 (例: ja_JP.UTF-8
) をアンコメントし、locale-gen
を実行してください。
デフォルトのフォントセットはベースフォントとして -*-*-*-r-normal--14-*-*-*-*-*-*-*
を使います (src/xfns.c)。マッチするフォント (terminus や 75dpi など、xlsfonts
の出力を見て下さい) がない場合、XIM は有効になりません。
Emacs デーモン
emacs デーモン/クライアントモードを使う場合、デーモンの起動時に LC_CTYPE
を設定してください。例えば LC_CTYPE=ja_JP.UTF-8 emacs --daemon
というコマンドを使って emacs デーモンを起動します。
systemd から emacs デーモンを起動している場合、ユニットファイルで以下のように Environment を設定してください:
Environment="LC_CTYPE=ja_JP.UTF-8" "XMODIFIERS=@im=fcitx"
systemd は .xprofile
をロードしないため XMODIFIERS は明示的に設定する必要があります。emacs で initial-environment
変数をチェックして変数が両方とも正しく設定されていることを確認してください。
Ctrl+Space が GTK のプログラムで機能しない
ロケールを英語に設定しているとこの問題が発生することがあります。GTK_IM_MODULE が正しく設定されているか確認してください。
参照: FAQ
- _IM_MODULE 環境変数を設定していても 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'>}"
内蔵の Chinese Pinyin がデフォルトで有効にならない
ロケールが en_US.UTF-8
である場合、fcitx は内蔵の Chinese Pinyin インプットメソッドをデフォルトで有効にしません。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 がキーボードレイアウトを適切に扱えないことがあります。例えば、US (English) から LT (Lithuanian) に切り替えた場合、キーボードの数字キーは全てリトアニア文字になるはずですが、数字が出力されてしまいます。以下の手順で修正することが可能です:
- 上のセクションで書かれているパッケージをインストールしてください。
- バックグラウンドで
fcitx
を動かしている場合は終了してください。 - KDE に関連することを無効にします:
- System settings --> Input devices --> Layouts (tab) から "Configure layouts" のチェックを外して下さい。
- System settings --> Input devices --> Advanced (tab) から "Configure keyboard options" のチェックを外して下さい。
- ターミナルを開いて
fcitx
と入力して fcitx を起動します。ターミナルは閉じてもかまいません。fcitx
はバックグラウンドで動作し続けます。 - 必要なレイアウトを設定してください (システムトレイアイコンを右クリックして "Configure" をクリック)。
- システムトレイアイコンを右クリックして、"Exit" をクリック。
これでレイアウトがちゃんと使えるようになるはずです。KDE のレイアウト切り替えrアイコンが表示され、マウススクロールしたりアイコンをクリックすることでレイアウトを切り替えられます。
勝手にインプットメソッドが英語に切り替わってしまう
XMind でエンターを押してノードを作成したときなど、インプットメソッドが勝手に英語に切り替わってしまって、元のインプットメソッドに手動で戻さなくてはならないことがあります。
この問題を修正するには、fcitx の GUI 設定ツール (fcitx-configtool に含まれています) を開いて、"Global Config" タブの "Share State Among Window" ドロップダウンメニューから、"PerProgram" または "All" を選択してください。
GNOME/Wayland 上での Fcitx の利用
Wayland は ~/.xprofile
に保管された環境変数を読み込むことができないため、Wayland 上で Fcitx を使うときは /etc/environment
で環境変数を設定してください。
xmodmap の設定が上書きされる
Fcitx はキーボードレイアウトを制御するため、xmodmap の設定は上書きされてしまいます。4.2.7 から、Fcitx は ~/.Xmodmap
のロードを行うようになります。
xmodmap の変更を保存する方法については FAQ を参照してください。
HiDPI 環境では Fcitx の preedit box が小さすぎる
こちらを参照 HiDPI#Fcitx