見出し画像

ファームウェアをvial化した話



はじめに

RP2040で設計したら挑戦したかった事のひとつに
vialに対応したファームウェアを作成する
というものがありました。その手順や参考記事、自分が行ったことを備忘録として残しておこうと思います。

vial公式はこちらです。


1.環境設定

※前提としてqmk環境は構築済みであるとして話を進めています。

まずはvial-qmkリポジトリのクローンを用意します。
githubのページ(https://github.com/vial-kb/vial-qmk)に行き、フォークします。
Codeをクリックすると現れる「Open with Github Desktop」をクリックします。

上からフォーク、Code、Open with~の位置

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つです。無いものは作成します。

vial.jsonは新規作成、keymap.cはコピペ元そのまま、他は無ければ作成します


KLEデータからjsonファイルを得る

作り方はvia.jsonを作るときと同じで、rowとcolの数字に合わせて入力します。
例としてはこちら。

回路図
KLEのデータ

(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の中身をコピペにした部分になります。


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の下にファイルが作成されるのでこれで完成です。


参考にしたページなど