はじめに
先日、このような記事を作成しました
VIA JSON Building Tool (VIA 対応お助けツール)を作ってみた
そこで、 VIA JSON Building Tool を使いつつ、私が設計したマクロパッドを VIA 対応させた手順を、つらつらと書いていきたいと思います
備忘録ともいう
なお、この記事を読む人は VIA のことなんてご存じだと思うので、特に説明しません
簡単に言えば、インタラクティブにキーマップとかを変えられる便利なツールです
詳しいことは 公式 をご覧ください
VIA 対応するぞ
では、 VIA 対応していきましょう
公式ドキュメント も読んでくださいね
今回対応していくものは、私が設計した BrownSugar Macro です
ファームウェアは こちら (特に公式にマージはしていません)
VIA 用 JSON は こちら
最終的にこんな感じの画面でキーマップやレイアウトを編集できるようになります
ファームウェアを VIA 対応する
まずは、ファームウェアを VIA に対応させていきましょう
Vendor ID / Product ID をユニークにする
まずは、 Vendor ID / Product ID (VID / PID) をユニークにします
VIA では、キーボードのファームウェアを同定するために VID / PID を使用しているようです
なので、これらをユニークにする必要があります
QMK で新しいファームウェアを作成すると、 VID / PID は以下の値が自動的にセットされます
// config.c
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
これを好きな値に変更します
ユニークである必要があるので、 VID / PID がそれぞれ他と被っていないことを確認しましょう
// config.c
#define VENDOR_ID 0x1716
#define PRODUCT_ID 0x5963
ちなみに、私はこんな風に決めました
VID:
koktoh (アカウント名) -> 5910 -> 0x1716
PID:
"BrownSugar Macro" -> "BM" -> [ 66, 77 ] -> 0x424D -> 16973 -> 5910 + 16973 -> 22883 -> 0x5963
他と被らなければいいので、雑な決め打ちでもいいですが、適当なルールを決めておくと今後も楽になると思います
VIA 用キーマップを作る
公式ドキュメント に従って keyboards/<keyboard>/keymaps/via
ディレクトリを作成し、 VIA 用キーマップを配置します
キーマップは keymaps/default/keymap.c
をコピペで問題ないと思います
なお、 VIA のレイヤー数はデフォルトで4つなので、それに合わせて KC_TRNS
のみのレイヤーを用意したり、減らしたりするとユーザーフレンドリーかもしれません
容量に余裕があるのであれば、レイヤーを減らす必要もないかもしれません
rules.mk を作る
先ほど作った keyboards/<keyboard>/keymaps/via
ディレクトリに rules.mk
を作成します
中身は基本的に以下のみで大丈夫です
VIA_ENABLE = yes
ここで注意があります
Pro Micro (ATmega32U4) を使用している場合、 RGBLIGHT_ENABLE = yes
と BACKLIGHT_ENABLE = yes
を同時に指定するとファームウェアのサイズが大きくなりすぎてしまい、書き込むことができません
Pro Micro で VIA 対応する場合は、どちらかを捨てましょう
私は Backlight を捨てました(諸行無常)
ファームウェアを書き込む
これでファームウェアの準備ができたので、キーマップに via
を指定して、いつものように書き込みましょう
VIA 用 JSON を作る
ついに VIA JSON Building Tool の出番です
この JSON を VIA アプリケーションが読み込むことで、キーボードの設定をいじることができます
また、 BrownSugar Macro ではロータリーエンコーダーの種類によってキースイッチのレイアウトが変わるので、それにも対応していきます
キーマップ JSON を作る
VIA で使われるキーマップ JSON は Keyboard Layout Editor (以下 KLE)フォーマットです
VIA JSON Building Tool の Keymap Converter で基本形を簡単に作ることができます
基本形のキーマップ JSON を作る
まずは、 Keymap Converter の上部にある D&D エリアに <keyboard>.h
と info.json
ファイルを D&D します
D&D すると、それぞれのファイルの内容がテキストエリアに表示されます
この状態で コンバート
ボタンを押すと、 KLE フォーマットの JSON が生成されます
JSON ダウンロード
か クリップボードへコピー
ボタンで JSON を入手しましょう
キーレイアウトに変更がない場合は、 VIA JSON Builder の作業へ移ってください
今回はキーレイアウトが複数あるので、 KLE に移動してさらに編集していきます
KLE で編集する
ダウンロードなりコピーなりした JSON を KLE に適用します
コピーした場合は、 Raw data
タブにペーストしてください
ここで、 BrownSugar Macro について説明します
BrownSugar Macro は 3x3 のマクロパッドです
右上と左上にロータリーエンコーダを実装でき、それぞれ、プッシュスイッチ内蔵のロータリーエンコーダにも対応しています
つまり、レイアウトとしては以下の4種類になります
プッシュスイッチ内蔵が | 両方 | 右だけ | 左だけ | なし |
---|---|---|---|---|
これらのレイアウト変更に対応できるように KLE で編集していきます
そして、対応したものがこちらです
変更点は以下です
- 変更用のレイアウトとして上に3行追加
- レイアウトによって変化するキーの右下に
0,0
などのレジェンドを追加
追加されたレジェンドの詳しい意味は 公式のドキュメント をご覧ください
簡単に説明すると、このような意味です
[レイアウトオプションの番号],[レイアウトオプションでの選択肢の番号]
どちらも 0
から自動的に採番されます
今回の場合は以下のようになっています
レイアウトオプション | 選択肢 |
---|---|
プッシュスイッチ内蔵のロータリーエンコーダの位置 (0) | 両方 (0)、右 (1)、左 (2)、なし (3) |
最終的に k00
などの不要なラベルを消して完成です(消さなくても問題ありません)
できたら、右上の Download
から Download JSON
を選択して JSON を入手しましょう
VIA 用 JSON を作る
それでは、 VIA JSON Building Tool に戻って作業していきましょう
次は VIA JSON Builder で作業していきます
Keymap Converter と同様に、上部の D&D エリアに config.h
と 先ほど入手したキーマップ JSON を D&D します
キーマップ JSON については、 KLE での編集を特にしていない場合は Keymap Converter から直接コピペでも大丈夫です
すると、必要な情報が自動的に入力されます
あとは、 Lighting
と Labels
を入力していきます
Lighting
の選択
今回は QMK ファームウェアで RGB Lighting を実装しているので、ドロップダウンリストから qmk_rgblight
を選択します
Labels
の入力
KLE で編集する で示したように、 BrownSugar Macro はキーレイアウトが複数あります
それを VIA で選択できるようにするのが Labels
の記述です
詳しくは 公式のドキュメント をご覧ください
今回はドロップダウンリストとして表示する形になるので、 string[]
型の記述をしていきます
JSON の記法としては文字列は "
で囲う必要がありますが、 VIA JSON Builder がいい感じに補完してくれるので気にする必要はありません(ちょっとした便利ポイント)
また、日本語でも問題ないかもしれませんが、一応英語表記をしています
Labels
の表記の意味と対応は以下のような感じです
レイアウトオプション | 選択肢 |
---|---|
プッシュスイッチ内蔵のロータリーエンコーダの位置 (0) | 両方 (0)、右 (1)、左 (2)、なし (3) |
両方 (0) | 右 (1) | 左 (2) | なし (3) |
---|---|---|---|
VIA 上では以下のように表示されます
これで、すべての情報を埋めることができました
最後に JSON ダウンロード
か クリップボードへコピー
ボタンで JSON を入手しましょう
実物はこちら (エディタで整形しています)
VIA を使おう
これで VIA を使う準備はすべて整いました
というわけで、最後に VIA で実行してみましょう
公式 から VIA をダウンロードします
ダウンロードしたら SETTINGS
タブで Show Design tab
を ON にします
DESIGN
タブで VIA JSON Building Tool で作成した JSON を読み込ませます
読み込ませるとこのようになります
VIA 用ファームウェアを書き込んであるキーボードを接続した状態で CONFIGURE
タブを開くと、キーマップを編集できる状態になっているはずです
おわりに
お疲れ様でした
以上で終了です
VIA 公式への JSON のマージなどについては 公式ドキュメント をご確認ください
この記事と VIA JSON Building Tool が皆さんの VIA 対応の助けになればうれしく思います
また、わからないことがあれば、お気軽にコメントなどで質問してください
それでは