AlfredでKarabiner-Elementsのプロファイルを切り替えるWorkflowの作り方

自分のMacBook Proのキーボード配列はJIS配列なのですが、普段は外付けキーボードでUS配列を使用しています。
できればずっとUS配列にしたいのですが、出先にまで外付けキーボードを持ち運びするのも面倒なので、出先ではJIS配列になってしまいます。
そんな状況で、JIS配列の設定とUS配列の設定が一緒になると困るので、Karabiner-Elementsで「JIS」「US」とそれぞれのプロファイルを登録しておいて、切り替えて使うようにしています。

プロファイルはメニューバーから切り替えることもできるのですが、わざわざメニューバーを開くのも面倒です。

というわけで今回は、このKarabiner-Elementsのプロファイル切り替えをAlfredから行えるWorkflowを作成してみます。
ちなみに、Karabiner-Elementsを知らない方は過去に記事にしているので、そちらもご覧ください。
Workflowの作成
まずはAlfredの環境設定の[Workflows]のサイドバー下の「+」ボタンを押し、「Blank Workflow」をクリックして必要情報を入力します。
今回の場合はプロファイルを切り替えるWorkflowなので、名前は「Change Profile」としておきます。

キーワード部分の設定
黒い背景部分を右クリックして、[Inputs]→[List Filter]を選択します。
キーワードに関しては「Karabiner-Elements」の略でkeにします。
あとは下の「+」ボタンから選択項目を追加していきます。

今回は自分が登録している、「JIS」と「US」の2通りを登録しておきました。
条件分岐の設定
List Filterの右横にあるポッチをクリックして、[Utilities]→[Conditional]を選択します。
左から3つ目と、1番右の入力欄に、先ほどの「Arg」の値(「jis」と「us」)を入力ます。

プロファイル切り替え処理の設定
これで選択した項目に応じて、処理を分けられるようになったので、それぞれの条件分岐先で、[Actions]→[Terminal Command]をクリックします。
このWorkflow Objectではターミナルを開いてコマンドを実行できます(実行されるターミナルアプリは、[Features]→[Terminal]で設定してあるアプリが開きます)。

入力するコマンドは下記の通りです。最後にプロファイル名を入力する場所があるので、そこにはそれぞれ切り替えたいプロファイル名を入力します。
'/Library/Application Support/org.pqrs/Karabiner-Elements/bin/karabiner_cli' --select-profile 'プロファイル名'遅延処理とターミナル終了処理の設定
いまのままではターミナルが開きっぱなしになってしまうので、最後にターミナルを隠す処理を追加したいです(不要な方はスキップして構いません)。
まず、少し時間を空けてから実行しないと、ターミナルの処理中に隠されてしまうので、[Utilities]→[Delay]で遅延処理の設定をはさみます。
そのあと、[Actions]→[Launch Apps / Files]を選択して、実行されるターミナルアプリをドラッグして追加します。
このWorkflow Objectは本来、アプリを起動したりするものなのですが、右下の「Toggle visibility for apps」と書かれたチェックボックスがあるので、それにチェックを入れると、すでに開かれているアプリは非表示にしてくれます。

最終的に下記のようになっていれば完成です。

まとめ
今回は、Karabiner-Elementsの操作をAlfredで行うという少し変わったことをしましたが、ターミナルのコマンドでできることや、AppleScriptでできることはWorkflowでも比較的簡単に実行ができてしまいます。
また、List Filterを使えばAlfredっぽい「選択して実行」も簡単に作れます。
毎回やっている面倒なことが、もしターミナルコマンドで実行できるのであれば、Workflowを作ってみると良さそうです。


Macのクリックやスクロールをキーボードで操作する「Homerow」と「Mouseless」の比較
Keyboard Maestroでウインドウのリサイズや移動をするときに使う「SCREENVISIBLE」についてのまとめ
AirPodsで片耳を外しても再生が止まらないようにする方法
Google Chromeで「パスワードを保存しますか?」ポップアップを非表示にする方法
1Passwordのアカウントを持っていない人にもログイン情報を共有する方法
Googleの検索結果をカスタマイズするChrome拡張機能まとめ
JavaScriptパッケージマネージャーをnpmからYarnへ移行しました
Orbital 2と修飾キーの同時押しで、別のショートカットキーを発火させる方法
BetterTouchToolでトラックパッドの端っこのクリックを無効化して、手が軽く触れることによる誤操作を防止する
AlfredのCustom Web SearchにDeepL翻訳を追加する方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Illustratorの「埋め込み」を行うスクリプトで、画像の埋め込みをショートカットで行う!
Dashの環境設定やスニペットのバックアップ・同期方法
Path Finderで設定しておくと便利なショートカットキー一覧
Googleアナリティクスのタグが二重で設定されていないか見分ける方法
テキストエディタのAtomをインストールしたら最低限設定しておきたいアレコレ
自分で撮影した写真を投稿していくギャラリーサイトをTumblrで作成してみました
iStat Menusの「メモリ」アイコン表示と設定
Abstractを使っている場合は、Default Folder Xの「今開いている書類のある場所をファイルダイアログで開く」をオフにする
Path Finder 9をインストールしたらとりあえず行う初期設定
Ulyssesで目標や締め切りを決めて特定のプロジェクトの文章を管理できる機能