🦔

GokuRakuJoudoを使ったら、Karabiner-Elementsの設定が1/5になった

2024/08/23に公開

はじめに

はじめまして。WED でエンジニアをしているtakumi12311123です。
今日は、最近使ってみて便利だった、GokuRakuJoudo について紹介していこうと思います。

GokuRakuJoudo とは

Goku is a tool that lets you manage your Karabiner configuration with ease. - by Document

GokuRakuJoudo は、Karabiner-Elements の設定を簡単に管理できるようにするツールと公式ドキュメントでは説明されています。Karabiner-Elements では、JSON で設定ファイルを作成していますが、縦に長くなってしまい、行数が増えてしまうことがありますが、GokuRakuJoudo を利用すると、行数が一気に短くなります。

Install

brew install yqrashawn/goku/goku

で完了します。

次に、Karabiner-Elements で、Profile を新たに作成します。名前はDefaultで作成します。

GokuRakuJoudo は、karabiner.ednというファイルを読み込んでくれます。このファイルは、~/.config/配下にあるのが推奨されています。
もし、別の Path を設定したい場合は、.zshrcで、

GOKU_EDN_CONFIG_FILE='~/example/'

と設定しましょう。

karabiner.edn

ここからは、チュートリアルをなぞりつつ、設定していきたいと思います。

{:main [{:des "a to 1, b to 2, c to insert 1 2 3"
         :rules [[:a :1] [:b :2] [:c [:1 :2 :3]]]}]}

このように、rulesで囲んで、

:rules [[:from :to]]

の順で書いていきます。

特定の Application の時のみ発火させることもできます。

{:applications {:chrome ["^com\\.google\\.Chrome$"]
                :safari ["^com\\.apple\\.Safari$"]}
     :main [{:des "a to 1 only in chrome and safari"
             :rules [[:a :1 :chrome] [:a :1 :safari]]}]}

この時は、Google Chrome, Safari を利用しているときだけ、a を押した時に 1 になるわけです。

条件は、否定もできます。

{:applications {:chrome ["^com\\.google\\.Chrome$"]
                :safari ["^com\\.apple\\.Safari$"]}
     :main [{:des "a to 1 only outside chrome and safari"
             :rules [[:a :1 [:!chrome :!safari]]]}]}

この時は、Google Chrome, Safari 以外の時に、a を入力すると 1 になります。

次は複雑な設定に入ります。

{:main [{:des "command a to control 1" :rules [[:!Ca :!T1]]}]}

この設定は、Command+a が押された時には、Control+1 になります。

:rules の中で、:!から始めると、Prefix で設定することができます。

;; !  | means mandatory
;; #  | means optional
;; C  | left_command
;; T  | left_control
;; O  | left_option
;; S  | left_shift
;; F  | fn
;; Q  | right_command
;; W  | right_control
;; E  | right_option
;; R  | right_shift
;; P  | caps_lock
;; !! | mandatory command + control + optional + shift (hyper)
;; ## | optional any

Prefix を使った時の注意事項としては、最後のキーは、Prefix 以外で終わらなければいけません。

{:des "Chrome move tab key bind"
    :rules [
      [:!TOS :!Ttab :chrome]
]}

だと動きません。

{:des "Chrome move tab key bind"
    :rules [
      [:!TOleft_shift :!Ttab :chrome]
]}

だと動くようになります。

設定完了

karabiner.ednの設定が完了したら、

goku

と打って、Done!と表示されたら設定完了です!

Tips

スペースキー -> spacebar
タブキー -> tab
右矢印 -> right_arrow
左矢印 -> left_arrow
上矢印 -> up_arrow
下矢印 -> down_arrow
ファンクションキー -> f1, f2, ... f12

ここら辺は、Prefix もないので、参考にすると設定が楽になると思います!

おわりに

いかがでしたか。私の環境では、300 行の Karabiner の設定ファイルが、60 行程度になりました。約 1/5 です。
これで、追加の設定などもかなりやりやすくなったと思います。
これからも、自分の開発環境にはとことんこだわっていきたいです。

参照

GokuRakuJoudo GitHub

GitHubで編集を提案
WED Engineering Blog

Discussion