【自キ】30%キーボードを作ってみよう その5「ファームウェアを作成する」【設計】
前回の記事は「組み立てる」でした。今回はソフトウェア的な部分、『ファームウェア』の作成に取りかかります。
大まかな流れを書いておきますが、詳細は個別に参照記事等の最新情報を元に対応して頂くことになります。ここではザッと流れを確認し、参考文献で細かく見ていただくのが良いかなと思います。
なお、この記事は元々自分の覚え書き用に作ったものをベースに、自分以外の人間が読んでもどうにか内容を把握できるように修正したものになります。「読み難い」という乾燥はとても理解出来るのですが、そういう生い立ちなので取り上げている参考文献を重視して理解を深めるようにしてください。
また、この記事は以前サリチル酸さんにご助言頂いてファームウェア作成手順を学んだ際にメモしたことが、かなり反映されています。この場を借りて、あらためて感謝したいと思います。
※この記事ではQMK Firmwareを使用します。
※執筆時点でのバージョンにおける作成方法のため、バージョンアップで変わる可能性があります。
※リンク先の変更等により繋がらないものがあったため、修正しました(24/06/02)
本件において参考になるもの:自作キーボード設計ガイド Vol1 設計入門編
自作キーボードのファームウェアというのはいくつかありますが、今回は『QMK Firmware』を使用します。以前はファームウェアと言えばこれ、という感じだったようですが、現在では他のファームウェアを使用する場合が多いのかもしれません(具体的に集計したわけではないので、あくまでも筆者の観測範囲内での印象です)。
ファームウェアは自作キーボードを機能させるために必要なものです。というか、『ファームウェア』というもの自体が電子機器を機能させるために必要なものではありますが、自作キーボードも同様である、というのが正しいですね。ソフトウェア的な歴史とか仕組みとかはここでは省きます。
QMK Firmwareを使用する上でいくつかの準備、手順が必要となります。ざっくりとまとめたので、適宜他資料で不明な点は補ってください。なお、すべてwin10環境における作成のため、他OSでは異なる部分があります。
/
・githubのqmk firmwareをfork、ローカルにclone
githubアカウント作成。
github desktopインストール。
qmk firmware(本家)をfork。
forkしたqmk firmwareを自分の環境からgithub desktopで開き、ローカルにclone。
・QMK MSYSの環境構築
QMK MSYSをインストール。(24/06/02 リンク先を修正)
コマンド:qmk setup
コマンド:cd qmk_firmware(インストール先が C:\Users\ユーザーネーム\Documents\GitHub\qmk_firmware のような場合、パスをコピーして cd インストール先パス で移動)
コマンド:qmk new-keyboard -kb キーボード名(半角小文字のみ、ハイフンは使えない)
近いレイアウトのキーボードを選択し、使用するマイコンを選ぶ。選択するものの数字を入力し、エンター。
正しく処理されれば、qmk firmwareフォルダ下のkeyboardフォルダに指定した名前のフォルダが作成されている。
24/06/02追記
参考記事:https://docs.qmk.fm/newbs_getting_started#windows
/
・info.json
Keyboard Layout Editorでキーボードのレイアウトを開き、Top Legend部分にキーマトリクスに対応する番号を入れていく。
0,0からスタートし、行が変われば1,0から……というように書き込んでいく。
※0.0ではなく、0,0である点に注意。
出来上がったRaw dataをコピーし、Convert KLE raw to QMK info.jsonで変換する。
出力されたものをテキストエディタ(自分が使いやすいもの)に貼り付け、
"label":"0,0" を "matrix":[0,0]
に書き換える。
出来上がったもの(レイアウト部分だけで良い)を、自分のキーボードフォルダ内に作成されているinfo.jsonの該当部に貼り付け、調整する。
正規表現等に注意。(\r\n:改行 等)
表記が正しいか迷ったら、素直に他キーボードのinfo.jsonを参考にする。※
※コピーを推奨するのではなく、どういう表記をしているのかを参照しようというお話。
配線に使用したピンの番号を割り当てる。
ex.)
"matrix_pins": {
"cols": ["D3", "D2", "D1", "D0", "D4", "C6", "D7", "E6", "B4", "B5", "B6"],
"rows": ["B2", "B3", "B1"]
},
実際に使用した配線に基づく設定なので、配線通りに設定すれば問題ない。
上手く行かない場合は配線で想定と異なるピンに繋げたか、ファームウェアでピン番号を間違えている可能性がある。
VIP、PIDに関してはとても難しい問題があるので自己責任で設定する必要がある。
頒布を前提としていないのであればトラブルは自己責任であるが、頒布するとなると気を付けないとならない部分ではある。
・defaultキーマップ
qmk new-keyboardで作成した後に作られたフォルダ、その中のkeymaps/defaultというフォルダにkeymap.cといったものがある。これがキーマップのファイルとなるが、出力されたままのkeymap.cではqmk new-keyboardで選択したキーボードのままなので、自分のキーボード用に修正する。
日本語配列であれば #include "keymap_japanese.h" をkeymap.cに書き込んでおく。
日本語配列用のキーは JP_XX で書いておくと自分が後々助かる。
キーコードについてはqmk firmwareのドキュメントを参照。
ex.)キーコード一覧(24/06/02 リンク先が読めなくなっていたので変更)
ex.)日本語キーコード
キーマップ作成後、QMK MSYSでコマンド: make キーボード名:default でkeymaps/defaultに作成したキーマップのhexファイルが出力される。
このhexファイルがファームウェアとなるが、このままでは便利なキーマップ変更ツールであるVIAやREMAPを使用できないため、VIA対応のキーマップを設定する必要がある。ただ、このまま進めてしまうと不具合があった際にどの時点で発生していたのかの確認、修正が困難になるため、まずはdefaultキーマップが機能するかどうかを確認しておく。
ファームウェアをキーボードに書き込むにはいくつか手段があるが、例えば『Pro Micro Web Updater』を使用して書き込むことが出来る。
『QMK Firmware 書き込み』等で検索すると色々と解説しているサイトが出てくるので、分かりやすいものを参考にしてほしい。
古い記事でアップデートされていないものだと、最新のQMK Firmwareに対応できていない可能性があるので注意が必要。
・VIA対応
defaultキーマップに問題がなければ、keymaps/defaultにあるkeymap.cを新規作成したkeymaps/viaというフォルダにコピー&ペースト。
rules.mkをkeymaps/viaに作成し、 VIA_ENABLE = yes とだけ記入しておく。
keymap.cにレイヤー4つ分、キーマップを作成する。
(レイヤー0、1、2、3の計4マップ)
サリチル酸さんのフォーマットを参考に自己責任でVIA用jsonを作成する※。
※主にVID、PIDの問題により。
QMK MSYSでコマンド: make キーボード名:via でkeymaps/viaに作成したキーマップのhexファイルが出力される。このhexファイルがVIA対応のファームウェアとなる。
出来上がったhexファイルを書き込み、問題なく動作すれば完成と言える。
/
以上、箇条書き気味な手順をまとめました。最後の手順まで完了すれば、REMAPでキーマップを変更できるファームウェアが出来上がっている筈です。ただ、REMAPでは登録されていないキーボードについてはjsonファイルが求められます。REMAPを使用する際はVIA対応の項目で作成したVIA用jsonを読み込むことになります。登録しない場合は自分で呼び出しやすいフォルダにjsonファイルを格納しておきましょう。私は初期にそれを怠り、必死になって探すことになりました……。名称も『(キーボード名)_via.json』みたいな感じにしておくと、フォルダ内検索がしやすいかと思います(私は普通にAct_JP52.jsonにしていたために後々リネームして置き直しました)。
※読み込みエラーが発生する場合はjsonファイルの作成に失敗しているので修正しましょう。
正直なところ、細かい部分のアップデートもそうですが、大幅アップデートが起きた際に対応し難いのがQMK Firmwareの難点です。私はAct-JP52という初めての自設計キーボードを組んだ際に丁度大幅アップデートが重なり、ファームウェアの調整に苦労しました。中の事情もあるかと思いますが、結構素人的には「なんで??」という変更がされることもあり、追いかけるのはなかなか難しいです。
最近はそういった事情からより便利に、使いやすいファームウェアを作成されている方がいらっしゃるので、ご興味のある方は『自作キーボード ファームウェア』で検索して調べてみると良いかもしれませんね(私では全部把握できていません……)。
というわけで、気まぐれに始めたこの企画、『30%キーボードを作ってみよう』も今回で最終回となります。この記事がほんの少しでも、これから自作キーボードを設計してみようという方の参考になれば嬉しいですね。完成したキーボード、ガシガシ使って楽しみましょう!! それでは次回(?)、『キーマップに苦労しよう』でお会いしましょう!(??)
この記事はActy-31で書きました。
コメント
コメントを投稿