# 右側の修飾キーをフル活用!Karabiner-ElementsでKeyboard Maestroのマクロを発火させる方法 URL: https://webrandum.net/keyboard-maestro-karabiner-elements/ 公開日: 2020-01-28 更新日: 2020-01-28 カテゴリー: 作業効率化 タグ: Karabiner-Elements, Keyboard Maestro 出典: Webrandum(著者: サイトウ マサカズ) Keyboard Maestroでショートカットキーを設定すると、修飾キーは左右どちらも反応してしまいます。 しかしKarabiner-Elementsだと、left_commandかright_commandどちらか一方でしか反応しないショートカットキーを作れます。 この特徴を利用して、今回はKarabiner-ElementsからKeyboard Maestroのマクロを発火させる方法をまとめておきます。 うまく利用すれば、あまり使わない右側の修飾キーをフル活用できます。 ## Keyboard Maestroの設定 まずはKeyboard Maestroで、発火させる用のマクロを作ります。 トリガー設定の「New Trigger」の下にある「Or by script」をクリックして「Or by Shell script」に変更します。 ![Keyboard Maestroで発火させるマクロ](https://webrandum.net/mskz/wp-content/uploads/2020/01/image_1-19.png) するとShellScriptのコードが表示されます。 このShellScriptを実行すれば、マクロが発火されるので、あとはKarabiner-ElementsでShellScriptが実行されるように設定しましょう。 ## Karabiner-Elementsの設定 Karabiner-Elementsを自分で設定する場合はJSONを書く必要がありますが、ほとんどコピペで問題ありません。 下記パスに新規JSONファイル`km.json`を作成します。 ``` ~/.config/karabiner/assets/complex_modifications/ ``` 作成したJSONファイルの内容は下記の通りです。 ``` { "title": "Run Keyboard Maestro Macro", "rules": [ { "description": "Run Keyboard Maestro Macro", "manipulators": [ { "type": "basic", "from": { "key_code": "N", "modifiers": { "mandatory": [ "right_command" ], "optional": [ "any" ] } }, "to": [ { "shell_command": osascript -e 'tell application "Keyboard Maestro Engine" to do script "23F62CCB-AB7E-4378-BB3A-66972D3ECC67"' } ] } ] } ] } ``` そして、ショートカットキーとAppleScriptの設定を書きかえます。 | 項目 | 内容 | | --- | --- | | key_code | 入力するキーの種類 | | --- | --- | | mandatory | 一緒に入力する修飾キーの種類 | | --- | --- | | shell_command | AppleScriptのコマンド | | --- | --- | ### key_codeとmandatoryの入力 `key_code`と`mandatory`に関してはKarabiner-EventViewerを使って調べます。 ![Karabiner-EventViewer](https://webrandum.net/mskz/wp-content/uploads/2020/01/image_3-13.png) Karabiner-EventViewerを起動してキーボードを押すと、押したキーと離れたキーの情報が表示されます。あとは該当のキーの「Name」の列をコピーしてJSONに書きかえます。 ### shell_command `shell_command`に関してはKeyboard MaestroのShellScriptコードをペーストします。 ちなみに、`#`のあとはコメントなので、最初の行だけペーストすればOKです。 ![Keyboard MaestroのShell scriptで選択する行](https://webrandum.net/mskz/wp-content/uploads/2020/01/image_2-17.png) そして少しややこしいのですが、下記の調整をします。 1. もともとあったダブルクオーテーション(`"`)の前にバックスラッシュ(`\`)を入力します 2. 入力したら、コマンド全体をダブルクオーテーションで囲みます ``` osascript -e 'tell application "Keyboard Maestro Engine" to do script "23F62CCB-AB7E-4378-BB3A-66972D3ECC67\"' ``` 上記のコードの場合は下記のようになります。 ``` "osascript -e 'tell application \"Keyboard Maestro Engine\" to do script \"23F62CCB-AB7E-4378-BB3A-66972D3ECC67\"'" ``` これで`shell_command`の設定は完了です。 ### 設定の反映 これでKarabiner-Elementsの設定ファイルの作成は完了したので、最後に設定を反映させます。 Karabiner-Elementsの[Complex modifications]にある「Add rule」から「Run Keyboard Maestro Macro」を「Enable」すれば設定完了です。 ![Karabiner-Elementsのルールを追加](https://webrandum.net/mskz/wp-content/uploads/2020/01/image_4-5.png) もし「Run Keyboard Maestro Macro」が見当たらなければ、Karabiner-Elementsを再起動するか、設定ファイルに問題があるので見直してみてください。 ## 実際の利用シーン このように、気軽にショートカットキーを変更できないので、全てのアプリケーションで使うようなグローバルなマクロを`right_command`や`right_shift`に設定しておくと良さそうです。 何より、`left_command`や`left_shift`を押せば普通のショートカットキーが発火するので、ショートカットキーのバッティングが起こらないのが魅力的です。