Linux版Sublime Text 3で、日本語入力切り替えを変換・無変換・半角/全角キーで出来るようにする

Linux版のSublime Text 3で日本語入力できるようにする方法(ibus-mozc + emacs-mozc + SublimeMozcInput)については、検索すると有用なページがいくつか見つかります。

ただいずれのページも、半角/全角キーによる日本語入力切り替えはできない、との記述がありました。私はWindows環境では半角/全角キーではなく、変換・無変換でそれぞれ日本語入力オンオフを行っていたのですが、こちらも切り替えには使えないようでした。

これに対して、少々トリッキー?な方法を使うことによって、変換・無変換キーで日本語入力オンオフが出来るようになりました。半角/全角キーも同様の方法で出来るはずです。

具体的には以下の方法になります。

  1. 変換・無変換(または半角/全角)キーを、Sublime Text側でバインド可能なキーに割り当て直す
  2. 割り当てたキーで日本語オンオフ出来るようにSublime Textの設定を変更する

1. キー割り当て変更

Sublime Textでバインド可能なキーの一覧はここに記述があります。

この中から変換・無変換(または半角/全角)キーに割り当てるものを選びます。ただ普段使用するキーを割り当ててしまうと使い物にならなくなるので、使ってなさそうなものにします。私は変換キーをF13、無変換キーをF14にしました。

キー割り当てを変更する正しい方法は正直よくわからないのですが、以下のコマンド出力結果からキー割り当てに関する情報が記述されているファイルがわかります。

$ setxkbmap -print
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete+japan"    };
    xkb_symbols   { include "pc+jp+inet(evdev)+ctrl(swapcaps)"  };
    xkb_geometry  { include "pc(pc105)" };
};

この出力のうちxkb_symbolsの部分が割当てに関する部分で、それぞれ/usr/share/X11/xkb/symbols/ディレクトリ内のpcファイル・jpファイル・inetファイルのevdev部分・ctrlファイルのswapcaps部分の設定が適用されていることになるようです。

このうち変換・無変換・半角/全角キーの設定が書いてあるのは/usr/share/X11/xkb/symbols/inetファイルになるので、このファイルを編集します。変換キーが押された時の割当は<HENK>、無変換キーの方は<MUHE>のところに記述します。半角/全角キーの場合は<HZTG>コメントアウトを解除して同じように記述します。

@@ -105,8 +105,8 @@
 //    key <HZTG>   {      [ Zenkaku_Hankaku       ]       };
 
     key <HKTG>   {      [ Hiragana_Katakana     ]       };
-    key <HENK>   {      [ Henkan                ]       };
-    key <MUHE>   {      [ Muhenkan              ]       };
+    key <HENK>   {      [ F13                ]       };
+    key <MUHE>   {      [ F14              ]       };
     key <KATA>   {      [ Katakana              ]       };
     key <HIRA>   {      [ Hiragana              ]       };
     key <RO>     {      [ Romaji                ]       };

編集後ログインしなおせば設定が反映されるはずです。

設定内容確認

キー割り当てが正しく変更されて、それがSublime Textから認識可能かどうかは以下のようにして確認できます。

  1. Sublime Textを起動する
  2. [View]-[Show Console]でコンソールを表示する
  3. コンソール下部のコマンド入力欄にsublime.log_input(True)と入力しEnterを押下する

これを実行することによって、以後Sublime Textを終了するまで、入力したキーの情報がコンソールに表示されるようになります。

この状態で変換・無変換・半角/全角キーを押してみて、割り当てたキーが表示されれば成功です。

f:id:lizy:20170510005704p:plain

より良いキー割り当て変更方法

私は設定ファイルを直接変更してしまいましたが、これはあまり筋の良い方法ではないようで、割当を変更したい情報だけを記述したファイルを新たに作成して、それを読み込ませるほうがより望ましいようです。

そのような方法を説明したページもいくつか見つかりました。

ただ私の環境ではこの方法ではうまく行かなかったので、直接書き換えることにしました。

2. Sublime Textのキーバインド変更

Sublime Text側で変換・無変換・半角/全角キーを押した時のキーを拾えればあとは簡単で、それらに日本語入力のオンオフ、またはトグルを割り当てるだけです。

[Preferences]-[Key Bindings]に設定を追加します。

[
    {"keys": ["f13"], "command": "activate_mozc"},
    {"keys": ["f14"], "command": "deactivate_mozc"}
]