monolithic kernel

YMDK YMD09 に QMK Firmware を書き込む

追記 2022-11-12

時間が経って、qmk_firmware リポジトリの最新の状態だとこの記事の内容では動作しなくなっていた。どうも QMK の Docker イメージが古いように思うが、深追いせずに QMK MSYS を使うことにしてしまった。


YMDK の YMD09 という主にショートカットを割り当てて使うことを想定した小型のキーボードを購入した。

最大の目的としては、Zoom のミュートを切り替える専用のキーがほしかった。それをやるのに、HHKB だとキーが余っていないので、横に置ける小型のキーボードがあるとよさそうということになった。

Elgato Stream Deck みたいなものは高価かつオーバースペックで、Amazon とかで転がっているものは独自のアプリケーションが必要になることが多かったため回避。いろいろ調べて YMD09 を発見した。AliExpress の Official Store で注文して10日くらいで届いた。

YMD09 には、QMK Firmware という自作キーボード界隈ではメジャーなオープンオースのファームウェアが入っていて、そのあたりのエコシステムに完全に乗っかることができる。VIA によるキーマップの書き換えも可能。ものとしてもいい感じで、メカニカルキーボードなのでキータッチも気持ちいい。

自分はこれまで QMK Firmware も VIA も触れたことがなかったので、ブラウザ上から数クリックでリアルタイムにキーマップが変わる様子には驚かされた。この変更はアプリケーションレイヤーで行われていることではないので、ブラウザを閉じても、別の PC に繋いでも変更が反映されたまま。

自分でファームウェアをカスタマイズして書き込むこともできる。 VIA があればファームウェアをいじりたいことはそんなに無いのだが、現在のレイヤーに応じて LED の色を変えるというのは VIA ではできなかったので、ファームウェアをいじって導入した。

やり方は以下のページを参考にした。というかそのまま真似した。

特に自分のアイデア的なものは何も入っていないが、自分用にコードを GitHub に置いているのでリンクしておく。

qmk_firmware のリポジトリには対応するすべてのキーボードのファームウェアが入っていて Git の操作にいちいち時間が掛かるので、sparse checkout を使うのがよいのかなと思った (もっといいやり方があるのかもしれない)。

git clone --no-checkout https://github.com/qmk/qmk_firmware
cd qmk_firmware
git sparse-checkout init --cone
git sparse-checkout set keyboards/ymdk/ymd09 util lib builddefs platforms tmk_core
git checkout master

キーボードごとの keymaps ディレクトリにいくつかの構成が最初から用意されているので、そこにディレクトリを切って自分用の構成を書いていく。

ファームウェアをいじったらビルドしてキーボードに書き込む。個人的にはそんなに頻繁にいじるわけではなく、とりあえず書き込めればそれでよいかなと思っていたので、できるだけ環境を汚さずにビルドすべく、Docker を使う方法で進めた。

といっても、公式に Docker Hub に上がっているので、それを使うだけではある。util/docker-build.sh は Windows で動かそうとすると bash なりを用意する必要が生じてしまうので、中身を参考に PowerShell から docker コマンドを叩いた。

docker run --rm -it -w /qmk_firmware -v "$(Get-Location):/qmk_firmware" -e ALT_GET_KEYBOARDS=true qmkfm/qmk_cli make -j8 "ymdk/ymd09:custom"

ビルドされたファームウェアの書き込みには QMK Toolbox を使った。これをインストールしてしまったので、前段で Docker を使ったのはなんだったのかという感じになったがまあいいや。

ファームウェアを書き込むためには、キーボードを DFU モードにする必要がある。そのためには、VIA でキーボードに Reset をアサインした上でそのキーを押せばよい。本体を分解して基板にあるリセット用のスルーホールをショートさせることでも DFU モードになるが、おかしなファームウェアを書き込んで VIA が正常に動かない、みたいなことにならない限り出番はなさそうだ。

今のところミュートの切り替えや音量の操作以外で使い道を見つけられていないものの、最低限の使い方でも便利。これくらいの使い方だと、正直なところレイヤーを使うまでもなければファームウェアの書き換えも必要ない。が、こういうこともできると知れたのは面白かった。


Related articles