QMKファームウェアの使い方
QMKファームウェアを使ってキーボード(Tercy_rev004)を制作しました。QMKファームウェアには他の方が作られたキーボードが色々と登録されています。そこに自作キーボード用のファイルを追加しました。特殊な独自機能を組み込むこともなかったので、追加したファイルは6個だけでした。
QMKファームウェアをマイコンへ書き込むにはQMK MSYSというソフトを使用します。Windows版のQMK MSYS 1.7.2を使用しました。あとは、Gitを使用します。なくても何とかできなくもないですが、使った方が必要なデータを簡単に集められます。
以下では、QMKファームウェアを自作キーボード用にコンパイルして書き込む方法を紹介します。
QMKファームウェアの利用
公式サイトにもGetting Startedに使い方の紹介があります。紹介で省略されている箇所を補足するとイメージとしては次のようになります。
- QMKファームウェアをダウンロードする。
- QMK MSYSを起動する。
- qmk_firmwareフォルダーでQMK MSYSをセットアップする。
- QMK MSYSでキーボードとキーマップを指定してコンパイルする。
- QMK MSYSでマイコンに書き込む。
ツールのインストール
QMKファームウェアを使用するためのツールとして、gitとQMK MSYSをダウンロードしてインストールします。
- Gitへアクセスしてください。
- インストーラーをダウンロードして、インストールしてください。
- GitHub qmk/qmk_distro_msysへアクセスしてください。
(公式サイトからLatest Versionをクリックすると上記へ移動します) - QMK_MSYS.exeをダウンロードして、インストールしてください。
QMKファームウェアのダウンロード
gitのcloneコマンドを使用して、QMKファームウェアをダウンロードします。手動でダウンロードも試してみましたが、関連ファイルを集めるのが大変でした(QMKファームウェアが他のgitリポジトリのコードを使用する)。
- GitHub qmk/qmk_firmwareへアクセスしてください。
- <>Codeボタン(上図の緑色)からHTTPSのURLをコピーしてください。
- Git CMDを起動してください。
- qmk_firmwareをダウンロードしたいフォルダーをカレントディレクトリーにしてください。
例:cd c:\git - クローンコマンドでqmk_firmwareをダウンロードしてください。
例:git clone https://github.com/qmk/qmk_firmware.git
QMK MSYSの起動
WindowsのスタートメニューからQMK MSYSを起動してください。緑の横線部分はPCにより異なります。
QMKセットアップの実行
- QMKファームウェアのフォルダー(qmk_firmware)をカレントディレクトリーにしてください。
例: [****@**** ~]$ cd C:/git/qmk_firmware
実行すると [****@**** ~]$ が、 [****@**** qmk_firmware]$ となります。 - セットアップコマンド(qmk setup)を実行してください。
例: [****@**** qmk_firmware]$ qmk setup
QMKファームウェアのコンパイル
キーボードとキーマップを指定して、コンパイルコマンド(qmk compile -kb <keyboard> -km <keymap>)を実行してください。keyboards/tercy/rev004/keymaps/defaultの場合、<keyboard>はtercy/rev004とkeyboardsからの相対パス、<keymap>はdefaultとkeymapsからの相対パスです。
例: [****@**** qmk_firmware]$ qmk compile -kb tercy/rev004 -km default
別のコマンド(make <keyboard>:<keymap>)もあります。QMKファームウェアの各キーボードのreadme.mdには、こちが書かれていることが多いと思います。これはreadme.mdのテンプレートがmakeで書かれているためで、機能に違いはありません。
例: [****@**** qmk_firmware]$ make tercy/rev004:default
QMKファームウェアの書き込み
キーボードのマイコンをPCに接続して、書き込みコマンド(qmk flash -kb <keyboard> -km <keymap>)を実行してください。このコマンドも<keyboard>、<keymap>はコンパイル同様です。
例: [****@**** qmk_firmware]$ qmk flash -kb tercy/rev004 -km default
Waiting for USB serial port – reset your controller now (Ctrl+C to cancel)….と表示されて待機状態になれば、マイコンをリセットしてください。マイコンのリセット方法はハードウェアに依存しますが、だいたいの場合はRSTとGNDを一瞬だけショートさせればOKです。
コンパイル同様に別コマンド(make <keyboard>:<keymap>:flash)もあります。
例: [****@**** qmk_firmware]$ make tercy/rev004:default:flash
QMKファームウェアへのキーボード追加
ダウンロードしたQMKファームウェアへキーボードを追加するために必須のファイルは次の3つです。
- <keyboard>/info.json
- <keyboard>/rules.mk
- <keyboard>/keymaps/default/keymap.c
info.jsonでマイコンで使用するピンやキー配置の定義、機能の有効/無効などを指定します。keymap.cでキー配置に応じたキー配列を指定します。rules.mkでも機能の有効/無効を設定できるようですが、空ファイルでも問題ありません。
tercy/rev004では、Remapというキー配列を変更できるアプリを使えるようにしたかったので、keymaps/viaフォルダーを追加しました。このフォルダーには次の2つのファイルが必要です。
- <keyboard>/keymaps/via/keymap.c
- <keyboard>/keymaps/via/rules.mk
keymap.cは、defaultフォルダーのコピーでOKです。rules.mkは、VIA_ENABLE = yesの一行です。
readme.mdは、本家qmk_firmwareに自作キーボード用ファイルを取り込んでもらう際に必要となるキーボードの説明です。個人で使用するだけであれば必要ありません。
追加したinfo.jsonの内容
正確な説明の詳細は公式サイト(info.json Format)を参照してください。概要は以下の通りです。※featuresは書かなければデフォルトのfalseとなります。
| キー | 値 |
|---|---|
| manufacturer | 製造元(任意テキスト) |
| keyboard_name | キーボード名(任意テキスト) |
| maintainer | 保守担当(任意テキスト) |
| development_board | キーボードの使用マイコン(任意テキスト) |
| diode_direction | ダイオードの向き(COL2ROW or ROW2COL) |
| dynamic_keymap / layer_count | キーマップのレイヤー数 |
| features / bootmagic | ブートマジックの有効/無効(true or false) |
| features / extrakey | ※参考にしたキーボードで使用していたもので理解できていない |
| features / mousekey | マウスキーの有効/無効(true or false) |
| features / nkro | Nキーロールオーバーの有効/無効(true or false) |
| features / tri_layer | LowerレイヤーとUpperレイヤーを同時にアクティブにするとAdjustレイヤーがアクティブになる機能の有効/無効(true or false) デフォルトでは、Lower=1、Upper=2、Adjust=3 |
| matrix_pins / cols | 回路の列に使用したマイコンのピンの配列 |
| matrix_pins / rows | 回路の行に使用したマイコンのピンの配列 |
| url | キーボードについての情報が得られるサイトURL |
| usb / device_version | バージョン番号(X.Y.Z形式、XYZは非負の整数) |
| usb / pid | USBプロダクトID(0xFFFF形式、FFFFは4桁の16進数) |
| usb / vid | USBベンダーID(0xFFFF形式、FFFFは4桁の16進数) |
| layouts / LAYOUT / layout | matrix:回路の行列位置[row, col] x:物理的な行列位置(横にいくつ目か) y:物理的な行列位置(縦にいくつ目か) |
追加したkeymap.cの内容
include QMK_KEYBOARD_H // とりあえずインクルードする
include “keymap_japanese.h" // 日本語キーの使用にインクルードする
[0] = LAYOUT( // レイヤー0のデフォルトキーマップ、info.jsonのlayout配列順に指定する
// [4]~[7]は未指定のためすべてKC_TRNSとなる
ディスカッション
コメント一覧
まだ、コメントがありません