見出し画像

Claw44であそぼ。⑧(Vial編)

はじめに

一日で一番手に触れているものはキーボードという思い込みから、不便さを克服することにより得られる快楽を毎日満喫するために小さなキーボードの導入を思い立ち、2022年12月にClaw44の購入を決意。プログラミングと自作キーボードの知識ゼロから始めた自作キーボード素人によるClaw44カスタマイズの奮闘記を綴っていきたいと思います。

Vialとは

Vialとは、RemapやVIAのようにwebブラウザーまたは専用アプリによるGUI上でキーマップ変更ができる便利ツールで、VialはQMK Firmwareの親戚的な存在といえる。自作キーボードやカスタムキーボードでは、Remap/VIAに対応したFirmwareを搭載したキーボードが主流であるが、QMK FirmwareのソースコードをVial用に書き換えてキーマップ変更にVialを利用する修行僧が少しずつ増えている。そういう意味でVialはキーマップ変更ツール界における新興宗教といえる。VialとRemap/VIAの違いはキーマップのJSONファイルをサイト側が持つか、キーボード側に持つかであろう。VialはJSONファイルをキーボード側に持つのでJSONファイルをサイトに登録する必要はなくweb上で容易にキーマップ変更ができるが、Remap/VIAはJSONファイルをサイトに登録する必要があるので登録されていないキーボードの場合はRemap/VIAを利用する都度JSONファイルを読み込む必要がある。JSONファイルの登録はキーボード設計者が実施することになるので、一般的な修行僧はあまり意識することはないが、自らキーボードを設計する上級修行層にとっては死活問題といえよう。ちなみに猫山王はまだキーボードを設計したことがない自作キーボード素人のヘッポコ修行僧である。とはいえVialは上級修行僧でないヘッポコ修行僧にも大きなメリットがある。それは、タップダンス、コンボや謎の機能であるDynamic KeyなどQMK Firmwareではソースコードを書き換えてコンパイルというコンパイル修行が必要であったものが、webブラウザーまたは専用アプリによるGUI上でいとも簡単に変更できるというキー操作系で独自の高みを目指す修行僧にとっては夢のキーマップ変更ツールといえる。Vialは非常に便利である反面デメリットもあり、デメリットのひとつは、Firmware容量の肥大化である。これはVialの設計思想がJSONファイルをキーボード側に持つということで実現できる多彩な便利機能搭載のための弊害であり、避けては通れない道といえる。例えば、ATmega32U4の僅少容量に収めるために猫山王のClaw44で試したところ、タップダンス、エンコーダーマップのみを有効にしてVial化した場合、レイヤー数2という超絶不便仕様となって重度のレイヤー中毒症の猫山王にとってみれば、不便さの克服による快楽は絶頂に達することが期待されるものの実用性ゼロの残念仕様となってしまった。ただ、容量問題については前回の奮闘記の無限大の容量であるRP2040化により解決することができる。ふたつめのデメリットは、Vialが新興宗教であるため知名度が低く、修行僧の数も著しく少ないため、Vial用のFirmware作成の導きの書があまりない。この点については、猫山王の修行の記憶と記録を頼りにひとつひとつ解説していきたいと思う。とはいえ、一番良い導きの書は公式サイトなので、迷子になったら公式サイトを熟読することをお勧めする。

Vialの楽しみ方

1.RP2040化しよう
Vialの機能をフルに楽しむもしくは超絶不便仕様とならないためにも、何はともあれ容量問題を解決する必要がある。そのためにも「Claw44であそぼ。⑦(RP2040編)」の奮闘記を参考にPro Micro RP2040で武装し、FirmwareについてもRP2040化の修行を済ませておく必要がある。

2.Vialのリポジトリをクローンしよう
Vial用のFirmwareのコンパイルできる環境の前提条件としてQMKビルド環境の構築が必須である。QMKビルド環境の構築方法については、Google先生に「QMKビルド環境の構築」、「QMK Firnware環境構築」等とお問い合わせいただければ、先人達の導きの書をご案内いただけると思う。各種導きの書を見比べていただいて、お好みの導きの書に従ってQMKビルド環境の構築を済ませておく。猫山王もプログラミングと自作キーボードの知識ゼロから先人達の導きの書を頼りにQMKビルド環境の構築はできているので、Vial友の会へ飛び込むためにも是非チャレンジして欲しい。
QMKビルド環境の構築が完了すれば、QMK MSYSを起動して以下の呪文をコピペしてエンターを叩くとVialのリポジトリのクローン作業が始まり、vial-qmkフォルダがPCのローカルに作成され必要なファイルのコピーが完了する。

git clone https://github.com/vial-kb/vial-qmk

Vialのリポジトリのクローンが終われば、間髪を入れずに以下のコマンドを入力・エンターして、QMK MSYS上でvial-qmkフォルダに移動する。

cd vial-qmk

ほんでもって、以下のコマンドを入力・エンターしてvial-qmkフォルダ内でサブモジュールについてもクローンする。

make git-submodule

最後に以下のコマンドを入力・エンターしてクローンが適切に実施されているかをチェケラーしてもらい、不足しているファイルがあればエンター押すなり導きに従えば勝手に何とかしてくれる実にありがたい便利コマンドである。

qmk doctor

以上で、Vial用のFirmwareをコンパイルする環境の構築が完了である。迷える修行僧は公式サイトの導きの書を熟読しよう。

3.QMK Firmwareのファイルのお引越し
RP2040化の修業を済ませたFirmwareのソースコード一式をvial-qmkフォルダ内のkeyboardsフォルダ内に適当なフォルダを作成して、そちらに一式コピーして引っ越しする。
例えば、猫山王のClaw44のソースコードについては、vial-qmk > keyboards > [keyboard_name] 内は以下のファイル構成となっている。RP2040化したソースコードのファイル構成との違いは、「Claw44であそぼ。⑦(RP2040編)」と見比べて欲しい。ここで注意が必要なのは、keymapsフォルダ内にvialフォルダを必ず作成する必要があり、少なくともkeymap.cファイルとvial.jsonファイルはvialフォルダ内に格納しておく必要がある。このことは、Vialの公式サイトでも注意事項として掲載されている。

猫山王のClaw44でRP2040対応を済ませたFirmwareにVial対応するために書き換える必要のあるファイルはvialフォルダ内に引っ越しさせたconfig.hファイル、keymap.cファイル、rules.mkファイルで、新たに作成が必要なファイルはvial.jsonファイルである。それぞれの場合に分けてソースコードを書き換える方法とvial.jsonの作成方法について、猫山王がVial化の際に導きの書としてヘビロテしまくったJoe Scotto氏のE-learningの手順に従って、猫山王の設定を参考にひとつひとつ解説していきたいと思う。Scotto氏はSetup Vialと題してE-learningを6分にコンパクトにまとめてくれているので、現代の忙しい修行僧にとってツボを押さながら効率的に学習できる内容となっている。ちなみにScotto氏はZMK対応や自作キーボードに関する非常に興味深いE-learningを多数公開しているので、猫山王も自己学習の参考とさせていただいている。

4.vial.jsonファイルを作成しよう
vial.jsonファイルはVial用にキーレイアウトを定義しているファイルで、info.jsonファイルとは似て非なるものである。そのため、info.jsonファイルのファイル名を変えるだけでは似て非なるゴミファイルが生み出されてしまい、ノーコンパイルのアリ地獄にはまってしまう。このことは、Vialの公式サイトでも注意事項として掲載されている。vial.jsonファイルはイチから生み出す必要があるが、このファイルで必要な呪文は①キーボードのRowsとColsの情報と②レイアウト情報である。
①については、keyboard_nameフォルダ直下のconfig.hファイル内にkey matrix sizeとして定義されているので、その数字を転記するだけである。例えば、猫山王のClaw44のvial.jsonファイルでは以下を記載している。

"matrix": {"rows": 10, "cols": 6},

②レイアウト情報については、KLE(Keyboard Layout Editor (keyboard-layout-editor.com))を利用するのが手っ取り早く、ここで定義したレイアウトがwebブラウザーまたは専用アプリによるGUI上のキーマップとなるので、実物のキーボードに近いレイアウトになるように工夫しがいのある修行である。直感的な操作で簡単にレイアウトを作成できるが、注意点としてはPropertiesタブでキーに個々の番号を付与して、エンコーダについてはCenter Legendで"e"とする必要がある。猫山王のClaw44はカルテット仕様なので、"e"が時計回りと反時計回りの合計8個あるのがお分かりいただけるだろう。Propertiesタブではキーの色も変更できるようだが無頓着な猫山王はこの辺の設定は弄っていない。

お好みのキーマップが完成したら、Raw Dataタブから右下のDownload JSONをクリックしてダウンロードしたファイルを vial.jsonにコピペすればvial.jsonファイルは完成である。

ここで、Claw44をお使いの同志の修行僧は、猫山王のClaw44用に作成したvial.jsonファイルを添付しておくのでご活用ください。

KLEの操作については、猫山王が導きの書としてヘビロテしまくったSankhara氏のE-learningが非常に分かりやすく丁寧に解説してくれている。ちなみにSankhara氏は非常に参考となるE-learningを多数公開しているので、猫山王も自己研鑽に大いに活用させていただいている。

5.rules.mkファイルの内容を書き換えよう
vial.jsonファイルの作成が終われば、あとはファイルの書き換えだけの楽勝ムードの消化試合である。rules.mkファイルでVial化のために追加が必須な呪文と推奨される呪文は以下である。簡単な日本語訳も記載しておく。個別機能を召喚する呪文については、Vial対応の前提としてRP2040対応済みなので、個別機能については使う使わないはさておき容量を気にせず全部モリモリ幕の内弁当仕様が良いでしょう。

//必須の呪文
LTO_ENABLE = yes       //Scotto氏は推している
VIA_ENABLE = yes
VIAL_ENABLE = yes
QMK_SETTINGS = yes   //VialのGUI上で上級修行僧としてマニアックな設定を可能とし、タップダンスのディープな設定を可能とするためにも必須

//推奨の呪文 QMK_SETTINGS = yesにして個別に有効化が必要
TAP_DANCE_ENABLE = yes
COMBO_ENABLE = yes
KEY_OVERRIDE_ENABLE = yes
EXTRAKEY_ENABLE = yes
MAGIC_ENABLE = yes
GRAVE_ESC_ENABLE = yes
MOUSEKEY_ENABLE = yes
NKRO_ENABLE = yes

//エンコーダ、OLED、七色発行体も利用可能なので、お好みでどうぞ
ENCODER_MAP_ENABLE = yes
OLED_ENABLE = yes
RGBLIGHT_ENABLE = yes

上記以外にもRP2040 化で追加・変更が必要な呪文については、「Claw44であそぼ。⑦(RP2040編)」の奮闘記を参考にされたし。

6.keymap.cファイルの内容を書き換えよう
keymap.cファイルについては、書き換えるというよりはタップダンスとコンボの呪文の削除である。タップダンスやコンボについては、このままだとVial用のFirmwareとしてのコンパイル時にノーコンパイルのアリ地獄にはまってしまう。一方で、VialのQMK_SETTINGSの機能を用いてGUI上でいとも簡単に設定・変更ができるので、keymap.cでの記述はなくても何ら問題とならない。その代わり、rules.mkファイルでTAP_DANCE_ENABLEやCOMBO_ENABLEの召喚呪文の記載は忘れずにしておく必要がある。ちなみに、Vialの公式サイトにはVial用のタップダンスの呪文例もあるのだが、実際のこの呪文をkeymap.cファイルに追加しても全く反映されずに、結局のところはwebブラウザーまたは専用アプリでGUI上でタップダンスの設定をする必要があるのでゴミ呪文といえる。Scotto氏のE-learningでもVialのタップダンスの呪文には問題があって機能しないとコメントされている。

7.config.hファイルの内容を書き換えよう
Vial用のFirmwareを作成するためには、config.hファイルに①キーボード固有のIDの追加、②キーボードをアンロックするためのキーコンビネーションの呪文を追加する必要がある。①キーボード固有のIDの追加については、QMK MSYSを起動して以下のコマンドを入力・エンターしてQMK MSYS上でvial-qmkフォルダに移動する。

cd vial-qmk

ほんでもって、間髪入れずに以下のコマンドを入力・エンターすると
#define以下修行僧のキーボードIDが表示されるので、そのままconfig.hファイル内にコピペすれば良い。ここで、XXは任意の英数字としている。

python3 util/vial_generate_keyboard_uid.py

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

②キーボードをアンロックするためのキーコンビネーションとして、2つのキーのコンビネーションの呪文を追加する必要がある。

#define VIAL_UNLOCK_COMBO_ROWS {X, X}
#define VIAL_UNLOCK_COMBO_COLS {X, X}

それぞれ、キーマトリクスの {X, X}で表され(Xは設定のためのキーマトリックスの数字)、猫山王は左上の2つのキーコンビネーションとして定義している。Vialの公式サイトによるとセキュリティ上設定が必要な機能なのだが、猫山王はVialでのMatrix Tester(キー入力のテスト)でしか使ったことがなく、他のシチュエーションでは一切使ったことがないため使い方もよく分かっていない。使い道についてご存じの修行僧は是非教えて下さい。

上記をまとめるとVial化のために、config.hに以下の呪文を追加することになる。

#pragma once

/* define VIAL用  XXは任意の英数字としている*/
#define VIAL_KEYBOARD_UID {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX}
#define VIAL_UNLOCK_COMBO_ROWS {0, 0}
#define VIAL_UNLOCK_COMBO_COLS {0, 1}

8.さあ、コンパイルしよう
ここまでくれば最後はQMK MSYSでのコンパイル。呪文のコンパイルの成功は、暗黒世界の中で不便さを克服することにより得られる快楽を求める修行僧として銀河系の無限大の容量を得たもののみが使用することが許される新興宗教Vial教団の夢のキーマップ変更ツールの通行手形の入手を意味します。Vial教団は新興宗教とだけあって、コンパイルのお作法についても従来のコマンドとは異なります。Vial用のFirmwareのコンパイル用のコマンドを記載しておく。ここで、[keyboard_name]はVialのソースコードが格納されている任意のフォルダー名で、Claw44であればdailycraft/claw44が考えられる。

cd vial-qmk
make [keyboard_name]:vial 

Vial用のFirmwareはコンパイルには今までよりも時間がかかるのが世話のやける憎めない存在と言える。無事にコンパイルが完了しFirmwareをキーボードに搭載してwebまたはアプリ版に接続すると新興宗教Vial教団の漆黒のGUIがお出迎えしてくれる。

実際にVial化してみて

そもそも猫山王のVialとの出会いは2023年に購入したVertex Arc60に遡る。当時も日頃からタップダンスを多用しており、キーマップを変更するにしても毎回コンパイルしていたので、コンパイル修行に対して不感症になってしまった。そのため、ちょこっとだけキーを変更するときにRemapやVIAを利用したとしても、次回のコンパイルのために必ずソースコードもその都度書き換える日々を過ごし、その修行そのものも快楽として楽しんでいた。Vertex Arc60がVialに対応しているということで実際に使ってみると、タップダンスの設定がGUI上で完結できることに気づき、自作キーボードのキーマップに対する世界観がガラリと変わってしまった。それを機に猫山王の所有しているPlanck v7、Claw44と怒涛の勢いで立て続けにVial対応を完了させ、Vialの虜となりそのまま重度のVial依存症に陥ってしまった。
Vialは、Tapping Term、Permissive  Hold、Tapping Force Hold、Retro Tappingも含め、タップダンスに関するありとあらゆる設定がGUI上で完結できる史上最凶のキーマップ変更ツールである。例えば、QMK Firmware、Remap/VIAのタップダンスの設定は、ホールドにはCtrl・ Alt・Winキーといった修飾キーやレイヤー移動しか設定できなかったり、単キー入力をホールドに設定できなかったり、修飾キー+単キー入力を設定できなかったりと実は制約まみれである。Vialのタップダンスであればこれらの制約は一切なく、修飾キー+単キー入力をタップに設定して、ホールドには別の単キー入力などありとあらゆるキー入力を設定できる。猫山王のClaw44では、メインレイヤーの一番左上のキーに、タップ: Ctrl+Space、ホールド:Escを設定することでVialでのタップダンス設定の自由度を存分に享受している。このホールド:Escは意外と便利で他のレイヤーでも多用している。あとは、右手の親指キーの一番外側(左側)のキーに、タップ: Alt+A(Zoomのマイクon/off)、ホールド:MO(2)、ダブルタップ:TO(2)にして、ここでもQMK Firmware、Remap/VIAのタップダンスでは設定できない修飾キー+単キー入力をタップに設定している。Vialであれば、タップダンスだけではなくコンボの設定もソースコードを書き換えることなくGUI上で設定できるので、自作キーボードの修行僧のとってはタップダンスやコンボの変更のためのコンパイルの嵐の修行からの解放を手に入れられる。とはいえ、Vialのタップダンスは全知全能の神ではなく欠点もある。それはタップダンスの設定として、タップ、ホールド、ダブルタップ、タップ&ホールドの4つのパターンしか対応できない。ひとつのキーにこれだけの入力パターンが登録できれば十分と感じる修行僧もいるであろうが、タップダンスの絶対王を目指す修行僧であれば当然にトリプルタップ(3回連続の短押し)やダブルタップ&ホールド(2回連続の短押し後にすぐに長押し)さらにはタップダンスの無限の可能性を模索すべく連打回数を闇雲に増やす必要があり、これらの設定はVialでは実現不可能である。また、RemapであればWeb上にキーマップを保存できるが、Vialではこのような便利機能はない。これについては、アプリ版を利用することでローカルPCにキーマップを保存できるので、猫山王はいつもVialはアプリ版を利用してこの欠点を克服している。Vialは史上最凶のキーマップ変更ツールといえるが、Vialの機能をフルに楽しむもしくは超絶不便仕様とならないためにもRP2040化は必須であり、失敗を恐れぬ強い意志とノーコンパイルのアリ地獄から脱出するド根性を兼ね備えておく必要がある。加えて、Vial用のFirmwareは最新版Remapに対応していない(正確には猫山王のヘッポコ知識では未だ対応する術を知らない)。一度でもVialを使用した修行僧はタップダンスやコンボの設定の自由度から重度の依存症に陥ることは避けられず今後はVial教団の信者となるってしまう、それなりの覚悟をもって取り組む必要のある片道キップの修羅の国での修行といえる。タップダンスを使うだけであれば何がなんでもVialというものでもなく、ソースコードの書き換えとコンパイルの嵐という奥ゆかしい修行で十分に対応できるし、この修行こそが自作キーボードにおける醍醐味でもある。また、タップダンス界の絶対王を目指す修行僧にとってみればVialは選択肢にすらならないはずである。ちなみに猫山王はタップダンス界のひよこちゃんで、Vial教団にどっぷりと浸かっているので今後はVial友の会の会員としてVialの普及に尽力していく次第である。

Vial教団のシンボル

今回はVial対応について比較的細かく丁寧に奮闘記を綴ってみた。また、猫山王が実際に愛読した導きの書も紹介している。迷子になったら公式サイトの熟読を合言葉にRP2040からのVial友の会の会員を夢見る修行僧にとって一助となれば幸いです。
自作キーボードは敷居が高いと思われている方にとって、一日で一番手に触れているものはキーボードということで、不便さを克服することにより得られる快楽の世界への入門のための勇気づけとなれば幸いです。

Source code

猫山王のClaw44のVial対応の最新のソースコード。唯一無二の最強のファームウェアを目指して、日々修行を続けてはその都度更新しているので、奮闘記と一部内容が異なる場合があります。お酒の肴にどうぞ。

次回

Vial対応で猫山王のClaw44のカスタマイズが一段落したので、次回はClaw44奮闘記の総括編をお届けします。究極の自作キーボードを目指して、不便さを克服することにより得られる快楽を求める修業はまだまだ続きます。


この記事が気に入ったらサポートをしてみませんか?