2025年2月 QMKファームウェア作成メモ

自作キーボード

まえがき

最近、また自作キーボードを作っている。

前回、一度目の自作キーボードを作った時は、初めてということでファームウェアの作成にはWebツールを活用した。しかし、今回はマイコンをPro MicroからRP2040 zeroに変更したため、前回使ったツールが使えなくなった。

そこで、今回は最も標準的なファームウェア作成ツールと言っても過言ではない、QMKを使ってファームウェアを作成してみた。

QMKは現在も活発に開発が進められており、変化が大きいということで、過去の記事やChat GPTの情報と異なる部分があったので、その辺を中心にこの記事にメモ書きしておく。

QMK環境

WindowsでQMKを導入するのは、ちょっと手間がかかりそう。

ということで、筆者は隣の部屋に放置していたiMac 2017を引っ張り出すという方法で解決。

macであれば、

brew install qmk/qmk/qmk

だけで導入できるので楽。とても楽。M4 mac mini欲しくなった。

なお、上記コマンドを使うにはpipやhomebrewが使えるようにする必要がある……といってもwin機より楽だよね。

new-keyboard

まずは、ターミナルを開いて、セットアップ。

qmk setup

これはQMKを使う時は毎回打つ必要がある。

続いて、新しいキーボードを作成する。以下のようにnew-keyboardコマンドを実行すると、対話形式で名称等を設定できるため、筆者のようなソフト苦手な人間にも優しい。

qmk new-keyboard

それぞれの項目を以下に示す。

Keyboard Name

キーボード名。

“作者/キーボード名”の形式で入力するらしい。筆者は知らなかったので、キーボード名だけ入力したが、なんとかなった。

GitHub / Real Name

名前を2回聞かれるが、GitHubにあげるわけでなければ気にしなくていいと思う。

Default Layout

作成するキーボード配列が特殊で、特に参考になりそうなものがなかったため、”none of the above”を選択した。

Using a Development Board?

Pro Microのように、マイコンが基板に載ってて、水晶振動子や外部端子も付いてるやつがdevelopment boardと呼ばれるもの。

これを使っていますか?という問いだが、RP2040 zeroのボードを使っているため、y(yes)……としたら選択肢になかったので、n(no)でやった。

MCU

RP2040を使っているため、RP2040を選択。

ファイル構成

new-keyboardコマンドで新しいキーボードを作成すると、以下のようなファイルが生成された。

.
├── keymaps
│   └── default
│       └── keymap.c
├── keyboard.json
└── readme.m

過去のバージョンでは、これよりも複雑なファイル構成だったようだが、設定ファイルがkeyboard.jsonに統合された結果として、現在ではこのような構成になっている。

そのため、Chat GPTでは学習データが古いため、正確な情報が出てきにくい。

RP2040-zeroではkeyboard.jsonを以下のように書いた。

--- 前略 ---
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
--- 中略 ---
"matrix_pins": {
        "cols": ["GP8", "GP7", "GP6", "GP5", "GP4", "GP3", "GP29", "GP28", "GP27", "GP26", "GP15", "GP14"],
        "rows": ["GP9", "GP10", "GP13", "GP12"]
    },
    "processor": "RP2040",
--- 後略 ---

コンパイル

keyboard.jsonとkeymap.cをいい感じに編集できたら、コンパイルする。

(keymap.cについては別でまとめる予定なので、詳しくはそちらをご参照ください。)

qmk setupをしてから以下のコマンドでコンパイルする。

qmk compile -kb test -km default

これは、testという名前のキーボードのdefalutレイアウトをコンパイルしている。

なお、new-keyboardで正しく設定していれば、testの部分は”開発者/キーボード名”の形式になるはず……

無事にコンパイルが済めば、(筆者はエラーと格闘したが)作業ディレクトリに.uf2という拡張子のファイルができている。

これがRP2040 zeroボードで使えるファームウェア。

書き込み

RP2040 zeroの場合、Bootスイッチを押しながらUSBケーブルでPCに接続すると、外部ストレージのようにfinder(Windowsならエクスプローラー)で表示される。

ここに先ほどの.uf2ファイルをドラッグ&ドロップして突っ込めば、完了。

最初は戸惑うぐらい書き込みが簡単。

差し直したらUSBキーボードとして認識された。

あとがき

QMKの設定ファイルが統合されたおかげで、思っていたよりも簡単にQMKでファームウェアを作成することができた。

RP2040 zeroに関しても、特に厄介なトラブルが起きなかったので、これからはPro Microではなく、RP2040 zeroを採用していこうと思う。安いし、

タイトルとURLをコピーしました