諸々の記録

その時々 興味にある事について

RP2040-Zeroで作成したQMKキーボード(キーパッド)をVial対応にした

先日作成した、MachiKania 用のキーバット(6ボタンの小型自作キーボード)をWebブラウザでキーマップを自由に変更できるVial に対応させました。

前回QMK MSYSでファームウエア作成したときの記事 ↓

RP2040-ZeroでQMKファームウエアキーボード作成(MachiKania用) - 諸々の記録


Vialファームウエアは比較的新しいファームウエアらしく、参考になる情報があまり多くないというのと、あっても自分の環境と異なるのでちょっと苦労しました。ですが、なんとかできたので忘備録として手順を記録しておきます。
(各ツールは2025年6月時点のバージョン)

ちなみに、私の環境は Windows11 + QMK MSYS

私のPCの環境(Windows11)ではすでにインストール済でしたが、途中 git のコマンドを実行しますので、gitをインストールする必要があるかも。


Vialの環境構築では、下記の2つが参考になりました。
双方を見ながら自分の環境に合った手順で作業を進めます。


まず、QMK MSYS起動し、下記を実行。(ここでは QMK MSYSですでにファームウエアを作成済の前提)
   git clone https://github.com/vial-kb/vial-qmk
結構時間がかかりますが、終了してプロンプトが表示されたらQMKをインストールしたフォルダと同じフォルダの vial-qmk というフォルダが作成され、ファイルがコピーされているのを確認。

私の場合、QMK を Cドライブ直下にしたので、こんな感じ。

そして、QMK の環境から下記をコピーします。
(<keyboard_name> は作成したキーボード名、~は Cドライブ直下にQMKをインストールしたのなら、 C:\ )

~QMK\keyboards\<keyboard_name>
 ⇒ ~vial-qmk\keyboards\<keyboard_name>

そして、その配下にある  keymaps  フォルダに vial フォルダを作成します。
~vial-qmk\keyboards\<keyboard_name>\keymaps\vial

この vial フォルダの中に次の4つのファイルを用意していきます。
keymap.c  rules.mk  vial.json  config.h

QMKファームウエアを作成してあれば、 default フォルダの方に、keymap.c  はあるので、それを vial フォルダにコピーします。
(vial対応の前にvia対応したときには kyemap.cに4レイヤの記載が必要でしたがvialは不要)

 

rules.mk  には下の2行だけ記載。

VIA_ENABLE = yes
VIAL_ENABLE = yes

config.h には、まず次の2行を記載。

/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once


QMK MSYS を起動し、vial-qmk のフォルダ(私の場合 c:\vial-qmk)に移動し
qmk setup --home C:/vial-qmk
を実行。(私の環境の場合、これをしないと次の VIAL_KEYBOARD_UID が表示されなかった 多分インストール直後に1度だけ実行しておけばよい)

qmk setup が終了したら、下記を実行。
python3 util/vial_generate_keyboard_uid.py

#define VIAL_KEYBOARD_UID {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX}
というような行が表示されるので、このままコピーして  config.h に追記。


次に、vial の重要な設定を変更するときに必要になるキーの組み合わせを下記のように記載。

#define VIAL_UNLOCK_COMBO_ROWS {0, 0}
#define VIAL_UNLOCK_COMBO_COLS {1, 6}

これで、0,1   0,6  の位置の2つキーを指定したことになるらしい。(vialの一部の機能を使うときにこの2つのキーを長押しする必要がある。レイアウト編集するぐらいでは要求してこない)

config.h こんな感じになる。

config.h

/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once

#define VIAL_KEYBOARD_UID {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX}

#define VIAL_UNLOCK_COMBO_ROWS {0, 1}
#define VIAL_UNLOCK_COMBO_COLS {1, 6}


最後に、vial.json を作成しますが、ここにキーボードのレイアウト(位置情報などの属性)を指定します。
この情報を作成するのに Keyboard Layout Editor (KLE) を使います。

Keyboard Layout Editor

アクセス直後にはテンキーのレイアウトが表示されているので、上部の Preset から 「Blank Layout」を選択するか、または、レイアウト全体をマウスドラッグで選択して表示されている説明書きも含めて DEL キーで全部削除します。

マウスでドラッグして範囲選択すればまとめて消せます。

左上の 「+Add Key」 ボタンでボタンを追加し各ボタンの設定をします。
最低限必要な設定は Top Legend にキー番号を 0,0  にような形で設定するのと、 x y でボタンの位置を指定します。( , と . を間違えないように注意!)
ボタンの位置は、ボタンをクリックで選択して、キーボードの矢印キーで移動できます。




できあがったら、右上の Download ボタンで json ファイルをダウンロードし、その内容を全部コピーして下のテンプレートの "keymap": のあとに貼り付けます。

vial.json のテンプレート

{
    "lighting": "none",
    "matrix": {
        "rows": 0,
        "cols": 0
    },
    "layouts": {
        "keymap":★ここに貼り付ける★
    }
}


"rows": 0,
"cols":0
はキーボードのレイアウトに合わせて行数、列数を修正してください。
今回作成したのは、1行で6個のキーなので、
"rows": 1,
"cols":6
になります。

これで、必要なファイルの設定も完了しました。
QMK MSYS を起動して、 cd で vial-qmk フォルダに移動し、

make <keyboard_name>:vial

コンパイルします。(※ :vial を忘れずに! ※ :の前にスペースは無し)

vial-qmk フォルダ直下に <keyboard_name>_vial.uf2  というファームウエアファイルが生成されるので、これをラスパイpicoに書き込みます。
コンパイル終了時のメッセージで Copying <keyboard_name>_vial.uf2 to qmk_firmware folder と表示されるが異なる)

ファームウエアを書き込んだらテストしてみます。
USBケーブルをつなげたままメモ帳などでテストします。

そのまま、Vial のサイトにアクセスして 「Start vial web」ボタンをクリックしてキーボードを接続すればレイアウトの変更もできます。

Home - Vial


これで、キーの割り当てがすぐにできるようになりました。



レイヤーは4つあるので、ボタン1つをレイヤー切り替えボタンに割り当てて最大4レイヤーとすることもできます。
vial の Layers タブで設定できます。
設定方法は下記の「Tips.レイヤーキーの種類について解説」が分かりやすいです。
これを参考に実際に動かしてみると良いです。ファームウエアはできたので、次はケースでもつくろうか。