AquaSKKとSlackでCtrl+jを取り合うのを制御する
ある日、Slack上でCtrl+jを押すとDownloadsウィンドウが開くようになってしまいました。
普段からAquaSKKで文字を入力しているので、このままだと入力モード切り替えの度にウィンドウが出てきてかなり不便です。そこで、この記事では、Karabiner ElementsとAquaSKKの設定を変えることで、Ctrl + jで入力モード切り替えのみを行う方法を書きます。
1. Karabiner Elementsをインストールする
まずは下記のリンクからキーボードをカスタマイズするKarabiner Elementsをインストールします。
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の「設定ファイルの再読み込み」を押しておきます。
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ウィンドウは出てこず、入力モードの切り替えだけを行えるようになりました!
この辺りの記事を参考して色々試しました。