ククログ

株式会社クリアコード > ククログ > Fcitxで「直接入力」する入力メソッドを簡単に切り替える方法

Fcitxで「直接入力」する入力メソッドを簡単に切り替える方法

はじめに

インプットメソッドフレームワークの一つに Fcitx 1 があります。 複数の入力メソッドをあらかじめ設定しておくことができますが、入力メソッド自体を切り替えるのに比べて、入力メソッドの順番を変更するのはちょっと面倒です。 今回は Fcitx で「直接入力」する入力メソッドを簡単に切り替える方法を紹介します。

直接入力、切り替えていますか?

そもそも、「直接入力」って切り替えたりするものなのでしょうか。 通常、一度キーボードレイアウトとそれに対応する日本語のための入力メソッドを設定してしまえば、その後めったに変更することはありません。

切り替えが必要になるのは、レイアウトの異なるキーボードを接続して使う場合です。 典型的なのは、ノートPCにUSBキーボードを接続して使うといったケースでしょう。

例えば、ノートPCは日本語キーボードで、それに接続して使うUSBキーボードが英語キーボードだと、そのままではレイアウトの違いから打てない文字がでてしまい問題になります。 2

そのため、fcitx-configtool を使って「直接入力」に用いるレイアウトを日本語から英語に変更します。

英語-Mozc-日本語キーボード

あるいは、Fcitx のアドオンとして提供されている Input method selector を利用して、グローバル入力メソッドを英語に変更するという回避策もあります。

ただし、その方法には直接入力を再設定する場合と違って落し穴があります。

  • 直接入力を再設定する場合

    • fcitx-configtool による変更が必要

    • 日本語入力(Mozc)に影響を与えない

  • グローバル入力メソッドを変更する場合

    • ホットキーで簡単に切り替えられる

    • 英語入力だけなら問題なし

    • 日本語入力(Mozc)に影響する

上記の日本語入力(Mozc)に影響するとはどういうことでしょうか。 これは、Mozcがグローバル入力メソッド関係なしに、「既定の入力メソッド」つまり「直接入力」として設定されている入力メソッドを利用することによります。

したがって、グローバル入力メソッドを変更する場合だと、英語キーボードを使っているのに、日本語入力にはなぜか日本語キーボードレイアウトで入力しているという中途半端なことになります。 また、その際には、ローカル入力メソッドをMozcに設定しておかないと、入力メソッドのオンオフが正しく機能しません。 3

英語キーボードの接続のたびに、fcitx-configtool でいちいち設定を変更するのは面倒です。 そこで次に紹介するのが、fcitx-imlist です。

fcitx-imlistとは

fcitx-configtool と異なり、コマンドラインで入力メソッドの設定を変更するためのツールです。

パッケージは提供していないので、ソースコードをビルドする必要があります。 ビルドのために、Fcitxの開発用のヘッダファイルが必要なので、そのためのパッケージを事前にインストールします。 4

% sudo apt-get install build-essential fcitx-libs-dev

インストールできたら、次に fcitx-imlist をビルドします。

% git clone https://github.com/kenhys/fcitx-imlist
% cd fcitx-imlist
% ./autogen.sh
% ./configure
% make
% sudo make install

これで、 /usr/local/bin/fcitx-imlist としてコマンドをインストールできました。

fcitx-imlist はキーボードのユニーク名をもとに、入力メソッドを指定順に変更できます。 キーボードごとのユニーク名については -l オプションを指定することで取得できます。

% fcitx-imlist -l
fcitx-keyboard-jp (キーボード - 日本語) [enabled]
mozc (Mozc) [enabled]
fcitx-keyboard-us (キーボード - 英語 (US)) [enabled]
入力メソッド ユニーク名
キーボード - 日本語 fcitx-keyboard-jp
Mozc mozc
キーボード - 英語(US) fcitx-keyboard-us

日本語キーボードのかわりに、英語キーボードを直接入力のために使うには、 -s オプションにユニーク名を指定します。 5

% fcitx-imlist -s us
fcitx-keyboard-us (キーボード - 英語 (US)) [enabled]
fcitx-keyboard-jp (キーボード - 日本語) [enabled]
mozc (Mozc) [enabled]

これで、キーボードに対応したレイアウトを「直接入力」として正しく設定しなおすことができました。

Fcitx 5.xではどうなる?

ちなみに、Fcitxの次のメジャーバージョンである Fcitx 5.x 6 では、このあたりが改善されて入力メソッドのグループ化がサポートされる見込み 7 です。

そのため、使用するキーボードに応じてあらかじめ設定したグループを切り替えて使うことになるでしょう。また、グループ自体の切り替えもハードウェアを認識して自動的に行えるようになるらしいです。つまり以下のように、英語用キーボード用のグループと日本語キーボード用の設定をしておけば、あとはいい感じに自動で切り替えてくれるということですね。

グループ インプットメソッド
英語キーボード用 fcitx-keyboard-us,mozc
日本語キーボード用 fcitx-keyboard-jp,mozc

まとめ

Fcitx で「直接入力」に使用する入力メソッドを簡単に切り替える方法を紹介しました。Fcitx でレイアウトの異なるキーボードを切り替えて使っている人は参考にしてみてください。

  1. https://fcitx-im.org/wiki/Fcitx

  2. 例えば、「_」 (アンダースコア)とか。

  3. Mozcの場合はそうなっている。他の入力メソッドは未確認。

  4. CentOSやFedoraの場合はfcitx-develをインストールします。

  5. 「fcitx-keyboard-」については省略できる。

  6. ちなみに、5.xはまだドラフトの段階です。

  7. 具体的には、fcitx-ngリポジトリの https://github.com/fcitx/fcitx-ng/blob/master/src/lib/fcitx/ime.h#L54 のあたりのコメント参照。