AquaSKKとSlackでCtrl+jを取り合うのを制御する

ある日、Slack上でCtrl+jを押すとDownloadsウィンドウが開くようになってしまいました。

f:id:t-kashima:20200618004400p:plain:w240

普段からAquaSKKで文字を入力しているので、このままだと入力モード切り替えの度にウィンドウが出てきてかなり不便です。そこで、この記事では、Karabiner ElementsとAquaSKKの設定を変えることで、Ctrl + jで入力モード切り替えのみを行う方法を書きます。

1. Karabiner Elementsをインストールする

まずは下記のリンクからキーボードをカスタマイズするKarabiner Elementsをインストールします。

karabiner-elements.pqrs.org

2. Aqua SKKの設定を追加する

AquaSKKの入力モード切り替えは、デフォルトでCtrl+jが割り当てられています。このままでは、Slackのショートカットとバッティングしてしまうので、それとは別でCtrl+tでも入力切り替えができるように設定します。

まずは、下記のコマンドで keymap.conf をコピーして持ってきます。

cp /Library/Input\ Methods/AquaSKK.app/Contents/Resources/keymap.conf $HOME/Library/Application\ Support/AquaSKK

次にコピーしてきた keymap.conf を開いて、SKK_JMODEの部分に ||ctrl::t を追加します!これでCtrl+j、Ctrl+tどちらでも入力モードを切り替えることができるようになります。

SKK_JMODE        ctrl::j||ctrl::t

変更して保存した後に、メニューバーにあるAquaSKKの「設定ファイルの再読み込み」を押しておきます。

f:id:t-kashima:20200618005642p:plain:w240

3. Karabiner Elementsに設定を追加する

Karabiner Elementsは、Complex modificationsの項目を設定することで、開いているアプリに応じて、押したキーを別のキーに入れ替えることができます。今回は、Slackアプリを開いている時にCtrl+jが押されたら、Ctrl+tが押されたことにします。

まずは、下記の場所にある設定ファイルを開きます。

$HOME/config/karabiner/karabiner.json

次に complex_modifications の rules の部分に下記を追加します。

                "rules": [
                    {
                        "description": "Ctrl-J to Kana on Slack",
                        "manipulators": [
                            {
                                "conditions": [
                                    {
                                        "bundle_identifiers": [
                                            "^com\\.tinyspeck\\.slackmacgap$"
                                        ],
                                        "type": "frontmost_application_if"
                                    }
                                ],
                                "from": {
                                    "key_code": "j",
                                    "modifiers": {
                                        "mandatory": [
                                            "control"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "t",
                                        "modifiers": [
                                            "control"
                                        ]
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    }
                ]

bundle_identifersの部分で、どのアプリを開いている時かを指定することができます。fromは押されたキー、toがこのキーが押されたことにする指定になります。

捕捉ですが、同時にインストールされるKarabiner-EventViewerを使うと、どのアプリを開いているかやどのキーが押されているかが表示されるので、一度確認してからbundle_identifiersやtoを設定すると正確です。

最後に

これで、Slackアプリを開いて、Ctrl+jを押した時に、Ctrl+tが押されたことになるので、Downloadsウィンドウは出てこず、入力モードの切り替えだけを行えるようになりました!

この辺りの記事を参考して色々試しました。

medium.com