Remapにファームウェアビルド機能を追加しました

以前から「作る、作るよ!」と言ってきて、でもなかなか作らずに「作るの?作らないの?どっちなんだぃ?」ときっと多くの方々が感じていたであろう「Remap のファームウェアビルド機能」について、11月18日に公開しました。

2023-11-18 Remap supports building a firmware

このブログエントリでは、ファームウェアビルド機能を作るに至った理由や、その使い方などについてちょっと書いてみたいと思います。

なぜ作ったのか?

今回 Remap にファームウェアビルド機能を作った理由は、「すでに予告していたから」です。

現在のRemapと今後のRemapについて

つまり、

「カスタマイズの手軽さも維持しつつ、いろんなカスタマイズができるようにする。言わば最強な状態にする。」

が Remap の今年の目標であり、それを達成するためのステップとして、ファームウェアビルド機能が必須だった、ということが理由となります。

詳しくは上記のブログエントリを読んでいただきたいですが、シンプルに振り返ると、以下となります。

  • VIA プロトコルがもたらしてくれるカスタマイズの手軽さは今後も提供していく。
  • VIA プロトコルがサポートしていないカスタマイズについても、Remap でカスタマイズができるようにしていく。
  • 古いファームウェア(0.18 以前)を使っているユーザーに新しいファームウェアを利用できるようにして、最新の Remap を利用し続けられるようにしていく。

この2つ目と3つ目を達成するために、ファームウェアビルド機能を開発し、リリースしました。

ファームウェアビルド機能の特徴

今回リリースしたファームウェアビルド機能は、以下の特徴があります。ユーザーからの視点と、キーボード作者からの視点で、それぞれ特徴が異なります。

ユーザーからの視点では、以下が特徴となります。

  • ユーザー自身で QMK Firmware のビルド環境を作る必要はありません。Remap が代わりに QMK Firmware をビルドしてくれます。
  • QMK Firmware のソースコードを理解する必要はありません。画面からカスタマイズしたい項目をポチポチしていくだけで、自分だけのファームウェアが手に入ります。
  • ビルドされたファームウェアは、Remap から直接 MCU に書き込むことができます。

キーボード作者からの視点では、以下が特徴となります。

  • Remap にファームウェアのファイル群を登録することができます。
  • 各ファイルに タグを使ったカスタマイズポイントを埋め込むことができます。

よくわからないと思いますので、ファームウェアビルド機能の使い方について紹介していきましょう。

キーボード登録者向けの機能

Remap にキーボード登録申請を出して、すでにそれが承認されていることが、ファームウェアビルド機能を利用する前提となります。

ファイルの登録

承認されているキーボードの管理画面を表示すると、「BUILD」タブが表示されているのがわかるかと思います。

BUILD タブをクリックすると、以下の画面が出てきます。

「Support building QMK Firmware」を ON にします。

次に、必要なファイルを登録していきます。登録は、ファイルをアップロードするのではなく、ファイルの内容をテキストエリアにコピーしていくことになります。ファイルは、以下のものを登録します。

  • QMK_HOME/keyboards/KB_NAME 下に配置されているファイル群(info.json や config.h、rules.mk など)
  • QMK_HOME/keyboards/KB_NAME/keymaps/KM_NAME 下に配置去れ散るファイル群(keymap.c や rules.mk など)

ファイルを登録するには、まず keyboard ディレクトリもしくは keymap ディレクトリのそれぞれ右にある「+」アイコンをクリックします。

すると、「数値.txt」という名前のファイルが追加されます。その行をクリックすると、右の File Name と Context それぞれの入力域が編集可能になりますので、登録したいファイルの名前と内容をそれぞれ入力します。

入力後に「SAVE」ボタンを押して、内容を保存します。

この操作を繰り返して、必要なファイルを全て登録してください。

以上で、最低限のファイルの登録作業は完了です。

カスタマイズポイントの埋め込み

ユーザーがファームウェアをビルドする際にカスタマイズができるようにするために、キーボード登録者は「カスタマイズポイント」を各ファイルに埋め込むことができます。

カスタマイズポイントは、 タグを使って埋め込みます。書式は以下のようになります。

<remap name="NAME" type="TYPE" default="DEFAULT" options="OPTIONS" comment="COMMENT" />

この remap タグは、途中で改行せずに記述します。各属性の意味と記載方法は、以下となります。

  • NAME - このカスタマイズポイントの名前。
  • TYPE - このカスタマイズポイントの種類。”select”, “text”, “number” のいずれかとなります。
  • DEFAULT - このカスタマイズポイントの初期値。
  • OPTIONS - このカスタマイズポイントの種類が “select” だったときの選択肢。「,」の区切りで選択肢を書く。
  • COMMENT - このカスタマイズポイントの説明文。

name、type、default は、必ず書かなければなりません。type が “select” の時は、options を必ず書かなければならず、また default は options に書かれた選択肢のどれか一つでなければなりません。comment は、書いても書かなくても良いです。

具体例をいくつか書いてみます。QMK Firmware のコードを書いたことがある方なら「なるほど!」と感じていただけるかと思います。

まずは、rules.mk ファイルで、VIA を有効にするかどうかをカスタマイズポイントにしてみた例です。

VIA_ENABLE = <remap name="VIAを有効にする" type="select" default="yes" options="yes,no" comment="Remapを使うにはyesを選択してください。" />

これは、ユーザーがビルドする際の画面では、以下のように表示されます。

次に、config.h ファイルで、Tapping Term 値を設定するカスタマイズポイントの例です。

#define TAPPING_TERM <remap name="タップ間隔" type="number" default="200" comment="ミリ秒で入力してください。" />

これは、ユーザーがビルドする際の画面では、以下のように表示されます。

最後に、config.h ファイルにて、ファームウェアが起動したときに奏でる音楽を指定するカスタマイズポイントの例です。

#define STARTUP_SONG SONG(<remap name="開始音楽" type="text" default="M__NOTE(_C7, 30), M__NOTE(_C6, 30)" comment="マクロを使って音楽を指定してください" />)

これは、ユーザーがビルドする際の画面では、以下のように表示されます。

カスタマイズポイントとして埋め込んだ タグは、ファームウェアのビルドの直前に、ユーザーが指定した値で置き換えられます。

タグでカスタマイズポイントを埋め込んだ後は、SAVE ボタンを押すのを忘れないようにしましょう。

ユーザー向けの機能

ファームウェアのファイルが登録されたキーボードは、Remap のキーボードカタログのページにて、BUILD タブからファームウェアのビルドができるようになっています。

「BUILD FIRMWARE」ボタンを押すと、カスタマイズするための画面が表示されます。

各ファイルをクリックしていくと、カスタマイズポイントが設けられているファイルを見つけることができるかもしれません。カスタマイズポイントがあれば、以下のように UI から選択したり、テキストや数値を変更できるようになっています。

希望の選択や入力をした後に、「BUILD」ボタンを押します。

ビルドタスクが登録されます。他のユーザーがビルドタスクを登録していなければ、すぐにビルドが開始されます。ビルドが開始されれば、ビルドは長くても数分で終わります。

「RELOAD」ボタンを押すことで、ビルドの状況表示を更新することができます。また、Auto を ON にすることで、30秒ごとに自動更新されるようになります。

無事ビルドに成功すると、「DOWNLOAD」ボタンや「FLASH」ボタンが表示されます。DOWNLOAD ボタンを押すことで、ビルドされたファームウェアのファイルをダウンロードすることができます。また、FLASH ボタンを押すことで、MCU にビルドされたファームウェアを書き込むことができます。

このように、QMK Firmware のソースコードを編集するために必要となるプログラミングの知識などを知らなくても、また QMK Firmware のビルド環境を作らなくても、カスタマイズされたファームウェアをビルドし入手することができます。また、それを MCU にすぐに書き込んで利用することも可能です。

キーボード登録者の方々にお願いしたいこと

今まで説明してきたとおり、Remap のファームウェアビルド機能は、キーボード登録をしている方々が以下のことを行った後に、ユーザーがその恩恵を得ることができます。

  • ファームウェアのファイルを Remap に登録していること
  • カスタマイズポイントを各ファイルに埋め込んでいること

Remap にキーボード登録している方々には、ぜひファームウェアのファイルを Remap に登録していただけると、とても嬉しいです。さらに、ユーザーがそのキーボードを利用する際に便利なカスタマイズポイントを、想像できる限り埋め込んでもらえますと、もっとユーザーがキーボードを活用できるようになりますので、併せてお願いしたいです。

ご協力お願いいたします!

Remapチームの想い

キーボードを設計し、自作キーボードキットとして公開し販売されている方々は、ユーザーの利便性を考えて、さまざまな工夫を取り入れているかと思います。キーの物理的な配置を工夫したり、キースイッチを入れ替えることができるようにしたり、用途に合わせてケースをいくつか準備したり、その工夫はさまざまかと想像します。

多くの自作キーボードでは、ファームウェアに QMK Firmware が採用されています。これは、「ソフトウェアでキーボードを細かくカスタマイズすることができる」ということを意味しています。ハードウェアと比べて、ソフトウェアは「柔軟」であり「取り返しが利く」という特徴があります。QMK Firmware が提供してくれる多くの機能を使いこなすことができれば、キーボードはユーザーにとって、より便利な装置になります。

キーボード設計者は、QMK Firmware について詳しいでしょう。しかし、キーボードを購入したユーザーは、QMK Firmware についての知識はほとんどなく、ましてやプログラミングの知識を有していない方々の方が多いでしょう。そのため、せっかく QMK Firmware が便利な機能を提供してくれていたとしても、それを使いこなせないユーザーがほとんどではないかと想像できます。

これは、本当にもったいないことです。

Remap のファームウェアビルド機能は、近い将来 QMK Firmware のポテンシャルを限界まで引き出すことを目指して設計をしています。しかも、特別な知識が必要なく、ユーザーが手軽にカスタマイズできるようにと考えて UI など設計をしています。

キーボードキットは、組み立てる段階で、キースイッチやキーキャップ、ケースなど、ハードウェア的なカスタマイズをするチャンスがあります。ここまでは、今までキーボード設計者もカバーしてきた範囲かと思います。

今後は、ソフトウェアでのカスタマイズについても、キーボード設計者がユーザーに対してさまざまな提案をしていってほしいと期待しています。それは、ユーザーがよりキーボードを使いこなし、自分にあった最適なキーボードを手にするためには、必要なことではないかと考えています。

購入してくれたユーザーがそのキーボードをより活用できるようにするために、ソフトウェア的なカスタマイズを Remap でより手軽に実現できるよう、ファームウェアビルド機能を考えて開発しました。キーボード登録者の方々には、ぜひこの機能を利用して、キーボードのカスタマイズのチャンスをユーザーに提供していってもらえたら、とても嬉しいです。

このエントリーをはてなブックマークに追加

関連記事

2023年のRemap

Google I/O 2023でのウェブ関連のトピック

2022年を振り返って

現在のRemapと今後のRemapについて

QMK FirmwareとRP2040でAudio機能を使えるようにする方法