hamacoの日記

どうでもいい日常をたれながす日記だと思う

PhpStorm で AquaSKK をちゃんと動かすまでの長い道のり

はじめに

macOSSKK といえば AquaSKK なんですが、Java アプリケーションとの相性が悪かったり、外国人との相性が悪かったり?するようで、時々ちゃんと動かないアプリケーションに遭遇します。

有名所だと、確か LINE とか PowerPoint とか iTerm2 とかがダメだったりします。
使ってないから分からないけど、LINE とか PowerPointAquaSKK 側に互換性設定があり、そこの設定で対応しているらしいですが、そうじゃないものは頑張ってどうにかしないといけません。

最近使ってるアプリの中で、頑張ってどうにかしないといけないものの筆頭が個人的には PhpStorm なんですが、これ AquaSKK の互換性設定にデフォルトで設定が入っているにもかかわらずこれだけだとちゃんと動かないので頑張って動く所までやったので、次回の自分のためにも記録を残しておきます*1

設定

PhpStorm の設定

まずは PhpStorm 側で C-j のキーボードショートカットを削除しましょう。邪魔なので。
それだけやれば PhpStorm 側の設定は完了です。

Karabiner-Elements の設定

Karabiner-Elements には completx_modifications というのがあり、アプリ毎にキーバインドを変えたり、ちょっと特殊なキーの入れ替えをしたりといったことができるようになっています。
このルールを管理している公式のサイトがあり、そこに AquaSKK の設定もあるのでそれをインポートします。

ke-complex-modifications.pqrs.org

インポートしたら、AquaSKK for Terminal/iTerm2 のルールを有効化してください(AquaSKK for JetBrains は使えないので有効化しません)。
そうしたら $HOME/.config/karabiner/karabiner.json をエディタで開き、AquaSKK for Terminal/iTerm2 の設定を丸っとコピーして、conditions 部分を書き換えて下記のような設定を追加します。

                    {
                        "description": "Ctrl-J to Kana for JetBrains",
                        "manipulators": [
                            {
                                "conditions": [
                                    {
                                        "bundle_identifiers": [
                                            "^com\\.jetbrains\\."
                                        ],
                                        "type": "frontmost_application_if"
                                    }
                                ],
                                "from": {
                                    "key_code": "j",
                                    "modifiers": {
                                        "mandatory": [
                                            "control"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "japanese_kana"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },

めんどくさかったら、Terminal/iTerm2 の設定の bundle_identifiers の所に1行足すだけでもよいです。

AquaSKK のキーマップ変更

Karabiner-Elements の設定だけだと、全角英数モードからひらがなモードに戻れないので、今度は AquaSKK のキーマップを変更します。

/Library/Input Methods/AquaSKK.app/Contents/Resources/keymap.conf$HOME/Library/Application Support/AquaSKK/keymap.conf にコピーし、SKK_JMODE に keybode::0x68 を追加して、かなキーでひらがなモードに遷移できるようにします。

SKK_JMODE              ctrl::j||keycode::0x68

AquaSKK の互換性設定

まだこれだけだと、日本語入力した後に l を押して ASCIIモードに遷移する時に l が入力されてしまうので、互換性設定で「空文字挿入」にチェックを入れます。

f:id:hamaco:20200608125947p:plain
互換性の設定

おわり

多分これで、PhpStorm 上で AquaSKK がまともに使えるようになっているはずです。
めちゃくちゃめんどくさいですが、SKK よりまともな日本語入力が世の中に存在しないので仕方ないね。

*1:ちなみに前回の自分は丁度 Karabiner が死んだタイミングで HammerSpoon とか色んなものを使用していてよく分からない状態になっていました