日本語入力設定 on elementary OS (0.4.1 Loki) + fcitx-mozc

設定環境

  • ハードウェアはApple Magic Keyboard (US) + Mac
  • elementary OS (0.4.1 Loki)はVMware Fusion上で動いていて、Fusionのキーボード設定はデフォルトからほぼいじっていない。

Macでは、Karabiner-Elementsで「コマンドキーを単体で押したときに、英数・かなキーを送信する。」ルールを有効にしているが、いろいろうまくいかないことがあったので、VMware Fusionではこのルールを適用しないようにした。具体的には~/.config/karabiner/assets/complex_modifications/1520611597.jsonの当該ルールの2箇所に下記コードを追加。

          "conditions": [
            {
              "type": "frontmost_application_unless",
              "bundle_identifiers": [
                 "^com\\.vmware\\.fusion$"
              ]
            }
          ]

右⌘でIME ON、左⌘でIME OFF

xkeysnail

xkeysnailを使わせていただいて、右⌘単体で変換キーに、左⌘単体で無変換キーにリマップする。xkeysnailはroot権限がいるのでsudoでパスワードを聞かれないように設定。最終行の<USER>には自分のログインIDをいれます。ただ、sudoの設定ファイルの編集を間違うと、rootでログインしているウィンドウが開いていいない限り、どうしようもなくなる可能性があるので、これだけは手作業でやった方がいいと思います。慎重に。

sudo apt install python3-pip
git clone --depth 1 https://github.com/mooz/xkeysnail.git
cd xkeysnail
sudo pip install --upgrade .
#sudo sh -c "echo '<USER> ALL=(ALL) NOPASSWD: /usr/local/bin/xkeysnail' > /etc/sudoers.d/xkeysnail"

~/.config/xkeysnail/config.pyに設定ファイルを配置。

import re
from xkeysnail.transform import *
define_multipurpose_modmap({
Key.LEFT_META: [Key.MUHENKAN, Key.LEFT_META],
Key.RIGHT_META: [Key.HENKAN, Key.RIGHT_META],
})

デスクトップ起動時に自動的にxkeysnailが実行されるよう、~/.config/autostart/xkeysnail.desktopを配置。こんなところで設定するのはおかしい気がするが、どうせ自分しか使わないし、動けばいいということで。上記と同じく、最終行の<USER>には自分のログインIDをいれます。

[Desktop Entry]
Type=Application
Version=1.0
Name=Xkeysnail
GenericName=Keymapper
Exec=sudo xkeysnail /home/<USER>/.config/xkeysnail/config.py --devices /dev/input/event1 --quiet

fictx-mozc

fcitx-configtoolの、全体の設定>ホットキーで、拡張オプションの表示をすれば、トグルではなく、ONとOFFで別々のキーが設定できるので、右⌘にIME ON、左⌘にIME OFFを割り当て。 また、fcitx-configtoolのアドオンタブで拡張をチェックし、Provides XIM SupportをONにした。

Emacs

Emacsでも、というよりEmacsでこそmozcを使いたいので、emacs-mozc-binをインストールし、mozcのオン・オフを自前でやるように設定。

sudo apt install emacs-mozc-bin
echo 'emacs24.useXIM: false' > ~/.Xresources

init.elの適当なところで、下記のような感じでキー割り当て。

(bind-keys ([henkan] .
            (lambda ()
              (interactive)
              (activate-input-method default-input-method)))
           ([muhenkan] .
            (lambda ()
              (interactive)
              (deactivate-input-method))))