QMKのキーマップを管理する。手順は下記の通り:
- YAMLで書いたkeymapをGit管理しておく。
- yq cliにより、YAMLをJSONに変換する。
# shell scriptでまとめて生成
bash ./bin/create_json.sh
# 個別に生成
yq e ./ergodash_keymap.yaml --output-format=json > ./ergodash_keymap.json
- QMK ConfiguratorでJSONからhexに変換する。
- QMK toolboxでファームウェアを書き込む。
- 左右のキーボードを片方ずつ焼く必要があることに注意すること。
- 0.2.0では書き込めず、0.1.1に落とす必要があった。
QMKによるキーマップカスタマイズは奥深く、自作キーボードを選ぶ積極的な理由になっている。 しかしながらその設定方法には一長一短がある。
- ✨ブラウザからHIDデバイスへのアクセスを許可すれば、ローカルに何もインストールせずとも動作する。
- ☠️後発ツールのため古いモデルのキーボードが対応していない。
- ✨世界中のあらゆる自作キーボードが集まっているため、自分で設計したもの以外はほぼ全て揃っている。
- ✨C++にてファームウェアで動作するコードを書けるため、設定可能な幅が非常に広い。
- 例えば、tap dance(2連打で別のキーコード割当)はQMK configuratorで設定できないことが知られている。その他の制約はサリチル酸さんのブログを参照のこと
- ☠️CLIのセットアップに際してPCのパッケージ管理が難しい。
- ただ設定を管理するだけなのに、あらゆるキーボードの設定が詰まったqmkリポジトリを自分でフォークした上で、依存関係が大量に含まれるQMK CLIをbrew installする必要がある。
- dockerコンテナによる起動も試されているが、そもそも入力デバイスに対して書き込みを行うという性質上、コンテナ上で動作するアプリケーションでは容易ではなさそう。参考: [Why can't I flash on Windows/macOS]https://docs.qmk.fm/#/getting_started_docker?id=why-cant-i-flash-on-windowsmacos)
- QMK toolboxはhexファイルをPro Microに書き込む。
- 原則、qmk_firmwareリポジトリで管理されるキーボードは対応しているため対応機種が広い。
- いっぽうでhexファイルの生成は、やや使いづらいQMK configurator に頼る必要がある。
- ブラウザに結果として出力されるレイアウトはきれいだが、設定ファイルをJSONで記述する必要がある。
- どのレイヤー/どのキーに何を当てるかをJSONで書いて管理するのは辛いことが多い。
- JSONにはコメントが一切書けない。
- prettierをかけると配列項目が問答無用で改行され、コメントや項目ごとの改行無視を仕込むことができない。
- どのレイヤー/どのキーに何を当てるかをJSONで書いて管理するのは辛いことが多い。
以上のことから、キーバインドをYAMLで記述し、QMK configuratorとのやりとりはJSONに変換して行うことが最もコンパクトな管理につながると考えた。