SKKで、変換キーを押して変換できるようにするには? 一部環境でできない問題の対処法も解説

僕はIMEにSKKを使用しているが、唯一不満な点として、デフォルトでは変換キーを押しての変換が出来ないという点がある。
他のIMEを使っていた頃からのクセで変換キーを押して変換したいし、スペースキーを押しすぎて壊すことのないようにしたかった。

そこで、SKKで変換キーを押して変換できるように設定してみる。

libskk 1.0.5以上であるか確認する

libskkとは、どうやらSKKのコアの部分で、変換作業や辞書の扱いなどを担当しているらしい。

これが変換キーを認識するようになったのは、libskkのバージョンが1.0.5以降からである。

一部のディストリビューションでは、libskkのバージョンが古いままの場合があり、例えばFedora 36では1.0.4しかインストールできない。
このような場合、手動で新しいバージョンのSKKをインストールする必要がある。

バージョンの正しい確認方法は、正直僕も分からないので(笑)、パッケージマネージャから利用できるバージョンを確認する。

#Debian系の場合
apt show libskk0

#Fedoraの場合
dnf info libskk

表示されたバージョンが、1.0.5以降であれば、更新手順を飛ばして、設定手順に行って欲しい。→設定手順へ

libskk 1.0.5より古い場合: libskkを更新する

先程の手順で、1.0.5より古いバージョンが表示された場合は、1.0.5以降に更新する必要がある。
おそらくFedora 36では1.0.4が表示されたはずだ。

libskkは既に更新が長期間に渡って停止しており、おそらく最新安定版もしばらくずっとは出ないだろうから、ここでは1.0.5へ更新する前提で解説する。

まず、https://github.com/ueno/libskk/releasesへ行き、1.0.5と書かれている項目から、「Source code」をダウンロードする。.tar.gzでも.zipでも内容は同一なので、好きな方をダウンロードすればよい。

アーカイブをダウンロードしたら、適当な場所に展開し、そこでターミナルを開く。
今回は、~/libskk-1.0.5に展開したものとする。

展開先のディレクトリでターミナルを開いたら、まずはビルドに必要なパッケージをインストールする。
Fedoraの場合は、次のコマンド一括インストールできる。
また、加えてlibxkbcommon-devel、libvala-develパッケージも必要になる。

sudo dnf build-dep libskk
sudo dnf install libxkbcommon-devel libvala-devel

依存パッケージのインストールが完了したら、ビルド作業に入っていく。

基本的には、以下のコマンドを順番に実行すればよい。

ビルド用サブディレクトリを作成する必要はない。むしろ、作成してそこで作業すると問題が発生する。

./configureでは、インストール先のオプションを追加している。多分、一部のユーザはこういうオプションを省きたいという衝動に駆られるだろうし、実際僕もこういうのは省くタイプだ。
なので、オプションをあえて指定する理由を説明しておくと、このオプションを指定しないと、make installした際に、おかしな場所にインストールされてしまい、折角ビルドした新しいlibskkが使用されないためである。

また、注意したいのが、makeの際に-jオプションで、マルチスレッドでビルドしようとするとビルドに失敗することがあるため、オプションは付けずにシングルスレッドで実行する必要がある。

./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
sudo make install

すべて終了したら、再起動する。

キーの設定

キーマップファイルの編集

SKKのキー設定は「~/.config/libskk/rules/」下に置かれる。

まずは、「/usr/share/libskk/rules/」下にある、「default」というフォルダーを、先程の「~/.config/libskk/rules/」下にコピーする。

コピーしたら、そのコピーしたフォルダを適当な名前に変更する。今回は、「Custom」というフォルダーに設定した。

そのフォルダ内部は、以下のような構成になっているはずだ。

  • keymap
  • rom-kana
  • metadata.json

「keymap」ファイルは、名前の通り、それぞれのキーがどのような挙動をするか記述したファイルを入れておく。
「rom-kana」ファイルは、ローマ字入力の変換先の仮名を記述したファイルを入れておく。
「metadata.json」には、設定の名前や説明などを記述する。

まず、「metadata.json」を編集する。
このファイルは、以下のような構成になっている。

{
    "name": "Default",
    "description": "Default typing rule"
}

「name」項目には、ルールの名前を設定する。
以下の画像での、「入力方式」の部分に表示される名前である。今回は、ここを「Custom」と設定したので、そう表示されている。

SKKの設定ウィンドウ。
上部に「入力方式」という項目があり、そこに"name"で指定した名前が表示されている。

「description」には、入力方式の説明を入力する。が、どこで表示されるのか分からない。おそらく適当で良い。

変更後の例として、以下のようになる。

{
    "name": "Custom",
    "description": "カスタムタイピングルール"
}

次に、変換キーを押して変換できるように、実際に設定ファイルを編集していく。

「keymap」フォルダーに移動すると、以下のような構成になっているはずだ。

  • default.json
  • hankaku-katakana.json
  • hiragana.json
  • katakana.json
  • latin.json
  • wide-latin.json

default.jsonを編集する。

変換キーは、「Henkan」という名前で指定でき、また、変換の動作は「next-candidate」で指定できる。

例えば、変更後は次のようになる。
ここでは、\を押すと入力され、IMEを終了する以外に元に戻す方法がないほどまで暴走してしまう、憎き謎の機能「区点([MM]KKTT)」を無効化してある。ちなみに、区点([MM]KKTT)の無効化は、「”\”: “kuten”」という行の削除によって実現出来る。


    "define": {
        "keymap": {
            "C-g": "abort",
            "\n": "commit-unhandled",
            "C-m": "commit-unhandled",
            "\b": "delete",
            "C-h": "delete",
            "/": "abbrev",
            " ": "next-candidate",
            "Henkan": "next-candidate",
            "\t": "complete",
            "C-i": "complete",
            ">": "special-midasi",
            "x": "previous-candidate",
            "X": "purge-candidate",
            "C-f": "expand-preedit",
            "C-b": "shrink-preedit",
            "Right": "expand-preedit",
            "Left": "shrink-preedit"
        }
    }
}

書き変えたら保存する。

ちなみに、無変換キーは「Muhenkan」、半角/全角キーは「Zenkaku_Hankaku」で指定する。
ところで、半角/全角なのにZenkaku_Hankakuで指定って、逆じゃないか…なんで…

次に、変更したキーマップ設定をSKKに読み込ませていく。

SKK上での設定

まず、SKKの設定ウィンドウを開く。

Fcitx 5の場合は、トレイ上のFcitxアイコンを右クリックし、「インプットメゾットの設定」を押し、出てきたFcitx 5設定ウィンドウ上で「SKK」を選択し、中央部の設定ボタンを押して開く。

IBusの場合は、同様にトレイ上のIBusアイコンを右クリックし、「設定」を押し、「入力メゾット」タブに移動し、SKKを選択して「設定」を押す。

IBusのSKKの場合は設定項目が「動作」タブにあるので、そこに移動する。

すると、上部に「入力方式」または「タイピング方式」という項目があるので、そこをクリックすると、利用可能な入力方式の一覧が表示される。
先程の例であれば、入力方式の名前を「Custom」としたので、「Custom」という項目が表示されているはずだ。

fcitx5-skkの場合の設定画面。
上部に「入力方式」という項目があり、これを変更する。
fcitx5-skkの場合の設定画面
ibus-skkの場合の設定画面。
上部に「タイピング方式」という項目があり、これを変更する。
ibus-skkの場合の設定画面

これで、変換キーによる変換操作が可能になった。

おまけ : 半角/全角キーの押下で半角英数/ひらがな入力が切り替わるようにする

Fcitx系であれば、半角/全角キーの動作はFcitx側で受け持つため、デフォルトでもワンタッチで半角英数とひらがな入力を切り替える事が可能だ。

しかし、IBusの場合は半角/全角キーの動作はIME側が受け持つ。
そのため、デフォルトではSKKはこのキーによる切り替えが行なえない。

SKKでは「l」キーを押して半角英数に、「Ctrl + j」でひらがな入力モードにするというのが通例だが、これでは日本語を入力しようとするたびにCtlr+jを押す必要があり、何かと面倒だ。

そこで、先程のように設定ファイルを変更して、半角/全角キーでモード切り替えが行なえるようにしてみる。

まずは、先程編集したキーマップ設定ファイルがあるフォルダに移動する。
先程の例であれば、「~/.config/libskk/rules/Custom/keymap」になるはずだ。

  • default.json
  • hankaku-katakana.json
  • hiragana.json
  • katakana.json
  • latin.json
  • wide-latin.json

これらのファイルのうち、今回編集するのは「latin.json」、「hiragana.json」だ。
latin.jsonには、半角英数入力モード時の挙動、hiragana.jsonには、全角ひらがな入力モード時の挙動を個別に記述できる。

まずは、latin.jsonの編集だ。
この設定が使われる時、半角英数入力モードであるから、ここで半角/全角キーが押された時、全角ひらがなモードに移行するように設定してあげる。

{
    "include": [
        "default"
    ],
    "define": {
        "keymap": {
            "C-j": "set-input-mode-hiragana",
            "Zenkaku_Hankaku": "set-input-mode-hiragana"
        }
    }
}

「Zenkaku_Hankaku」は半角/全角キーを指定し、「set-input-mode-hiragana」は、ひらがな入力モードへ移行させる指示である。
書き換えたら保存する。

次に、hiragana.jsonの編集を行なう。

{
    "include": [
        "default"
    ],
    "define": {
        "keymap": {
            "q": "set-input-mode-katakana",
            "Q": "start-preedit",
            "l": "set-input-mode-latin",
            "L": "set-input-mode-wide-latin",
            "C-q": "set-input-mode-hankaku-katakana",
            "C-j": "commit",
            "Zenkaku_Hankaku": "set-input-mode-latin"
        }
    }
}

これも同様だ。「set-input-mode-latin」は、半角英数入力モードに移行させる指示である。

書き換えたら保存する。

次に、設定ファイルを再読み込みさせる。

トレイに常駐しているIBusのアイコンを右クリックし、「再起動」を押すだけである。

これで、設定ファイルが再読み込みされた。

これによって、半角/全角キーを押すだけで、モードが切り換え可能になっているはずだ。

終わりに

今回は、SKKのちょっとしたカスタマイズについて解説した。

一部環境ではlibskkの更新が必要になるなど、面倒な手順もある。

SKKは設定ファイルを変更することで、自分好みのキー設定にする事が出来る。これはMozcのような他のIMEではあまり見られない利点だ。
この特徴を活かし、自分好みに様々に変更を加え、自分だけの使いやすいSKKを作り上げてみてはいかがだろうか。

…日本でSKK使っている人物、殆んど居ないだろうけど…笑

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください