ファームウェアをvial化した話
はじめに
RP2040で設計したら挑戦したかった事のひとつに
vialに対応したファームウェアを作成する
というものがありました。その手順や参考記事、自分が行ったことを備忘録として残しておこうと思います。
vial公式はこちらです。
1.環境設定
※前提としてqmk環境は構築済みであるとして話を進めています。
まずはvial-qmkリポジトリのクローンを用意します。
githubのページ(https://github.com/vial-kb/vial-qmk)に行き、フォークします。
Codeをクリックすると現れる「Open with Github Desktop」をクリックします。
Github Desktopが起動すると、クローン先のディレクトリを聞かれるので適当な場所を答えます。そうすると指定した先にクローンが完成します。
次にQMK MSYSにて
git clone https://github.com/vial-kb/vial-qmk
のコマンドを実行します。
2.必要なファイルを作る
ファイル作成
※qmkでファームウェアが完成していることを前提として話を進めます。
基本的には公式ドキュメントに沿って作成すれば完成します。今回は備忘録も兼ねているので手順を書き留めておきたいと思います。
まずは~qmk_firmware\keyboards\grain9(キーボードの名前)
にあるqmkのファイルをそっくりそのままコピペします。
コピペ先は~vial-qmk\keyboardsの下(さっき作ったクローンの中)になります。
ファイル階層は通常のqmk_firmwareとあまり変わらないのでわかりやすいかと思います。
~vial-qmk\keyboards\grain9\keymaps\vial
となるようにvialフォルダを作ります。
作る際にはkeymapフォルダ内にあるviaフォルダもしくはdefaultのフォルダをコピペした上で名前を編集します。(keymap.cはそのまま使うため)
vialフォルダ内に4つのファイルが存在するようにします。
keymap.c
rules.mk
vial.json
config.h
の4つです。無いものは作成します。
KLEデータからjsonファイルを得る
作り方はvia.jsonを作るときと同じで、rowとcolの数字に合わせて入力します。
例としてはこちら。
(ROW,COL)となるように数字を入力していきます。
左上からROW0,COL0なので0,0となります。
その右隣はROW0,COL2なので0,2。
上記のような法則でKLEの全キーを埋めます。
全て入力出来たらRaw dateを開き、右下のDownload Jsonをクリックしてデータを取得します。
これがそのままvial.jsonになるわけではないので注意が必要です。
vial.jsonを編集する
先程作ったvial.jsonを編集します。
公式ドキュメントで公開されているテンプレートは下記のとおりです。
{
"lighting": "none",
"matrix": {
"rows": 0,
"cols": 0
},
"layouts": {
"labels":
"keymap":
}
}
これを修正していきます。
今回だと
LEDあり
rowは3列
colは4列
なので
このようになります。赤枠で囲んだところが、先ほどKLEで作ったjsonの中身をコピペにした部分になります。
ちなみに
"lighting": "qmk_rgblight"
にするとVIALでアンダーグロウの設定ができるようになります。
RGB設定の詳細についてはこちら
rules.mkを編集する
先程作ったrules.mkに
VIA_ENABLE = yes
VIAL_ENABLE = yes
を記載します。
※TAP_DANCE_ENABLE=yes
を記載するのもここです。
config.hを作成する
まずQMK MSYSを開きます。
cdコマンドで qmk-vialの場所を指定しqmk setupします。
更に
python3 util/vial_generate_keyboard_uid.py
を実行します。そうすると
#define VIAL_KEYBOARD_UID {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX}
このような形のIDが発行されます。XXには発行時に自動で英数字が割り当てられます。
config.hにこの発行されたIDをそのまま記載します。
また、
#define VIAL_UNLOCK_COMBO_ROWS { X, X }
#define VIAL_UNLOCK_COMBO_COLS { X, X }
※Xには任意の数字を設定してください。
を定義します。
これはセキュリティ上重要な設定を知らずに変更することからユーザーを保護するために、キーの組み合わせが必要なため設定しています。
config.hに
#define VIAL_KEYBOARD_UID {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX}
#define VIAL_UNLOCK_COMBO_ROWS { X, X }
#define VIAL_UNLOCK_COMBO_COLS { X, X }
この3つが定義されていれば完成です。
3.コンパイルする
make grain9:vial
でコンパイルします。
.buildの下にファイルが作成されるのでこれで完成です。