1年ぶりにQMK Firmwareをさわったらだいぶ変わっていたので 2022/05/22 時点での自作キーボードのオリジナルのファームウェアの追加法をメモっときます.
事前準備
事前に本家リポジトリをフォークしておきます.
フォークしたリポジトリをお好きな場所にクローンしておきます.
(この事前準備はしなくてもファームウェアを追加することはできるのですが,作成したファームウェアは自身のgithubで管理したほうが良いと思うのでこの方法をとっています.)
環境設定
# 結構時間かかります
brew install qmk/qmk/qmk
# 事前準備でクローンしてきたパスを設定
qmk setup -H <path>
確認するために適当なキーボードをコンパイルしてみます.
qmk compile -kb clueboard/66/rev3 -km default
エラーが出ていなければ設定は問題なくできてます.
キーボードを追加する.
qmk new-keyboard -u <github_username>
を実行して質問に答えていく.
$ qmk new-keyboard -u <github_username>
Ψ Generating a new QMK keyboard directory
Name Your Keyboard Project
For more infomation, see:
https://docs.qmk.fm/#/hardware_keyboard_guidelines?id=naming-your-keyboardproject
Keyboard Name? sample2x2 # ← キーボードの名前を入力
Pick Base Layout
As a starting point, one of the common layouts can be used to bootstrap the process
Default Layout?
1. 60_abnt2
2. 60_ansi
...
50. tkl_nofrow_iso
51. none of the above
Please enter your choice: [51] # ← ベースのレイアウトを選択.新規で追加するので51.
What Powers Your Project
For more infomation, see:
https://docs.qmk.fm/#/compatible_microcontrollers
MCU?
1. at90usb1286
...
12. atmega32u4
...
36. WB32F3G71
Please enter your choice: [12] # mcuを選択.Promicroを使うのであれば12.
Ψ Created a new keyboard called sample2x2.
Ψ To start working on things, `cd` into keyboards/sample2x2,
Ψ or open the directory in your preferred text editor.
Ψ And build with qmk compile -kb sample2x2 -km default.
実行後 keyboards/sample2x2/
ができている.
ディレクトリ内のファイルは以下.
❯ tree keyboards/sample2x2
keyboards/sample2x2
├── config.h
├── info.json
├── keymaps
│ └── default
│ └── keymap.c
├── readme.md
└── rules.mk
2 directories, 5 files
最低限編集しなければいけないファイルはinfo.json
とkeymaps/default/keymap.c
.
info.json
まずキーボードマトリックスの設定を行う.
キーマトリクスの行と列が pro micro のどのポートに対応しているのかなどを指定する.
pro micro のポートを指定する場合は以下の画像を参考.
ただし、先頭のPは省略する(例:PD3 → D3).
colsは左から右に,rowsは上から下に順に指定する.
"matrix_pins": {
"cols": ["F4", "F5"],
"rows": ["D1", "D0"]
},
電気回路のマトリックスとこの後編集するkeymaps/default/keymap.c
で定義するキーマップの配列の対応を定義する.
"layouts": {
"LAYOUT_2x2": {
"layout": [
{ "matrix": [0, 0], "label": "A", "x": 0, "y": 0 },
{ "matrix": [0, 1], "label": "B", "x": 1, "y": 0 },
{ "matrix": [1, 0], "label": "C", "x": 0, "y": 1 },
{ "matrix": [1, 1], "label": "D", "x": 1, "y": 1 }
]
}
}
- "matrix": 電気回路のマトリックスの位置
- "label": ラベル.どのキーかを書いておくとわかりやすい.
- "x", "y": キーの位置(VIAで使う.qmkでファームウェアを書き込むだけならなくてもいい.)
ここで重要なのが"layout"内の要素の順番.
この順番とこの後定義するkeymaps/default/keymap.c
の配列の順番が対応することになる.
keymaps/default/keymap.c
ここに、どのキーを押したら何を入力するのかを設定する.
入力される文字にはそれぞれキーコードが決まっているので,Basic Keycodesを参考に設定していく.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┐
* │ A │ B │
* ├───┼───┤
* │ C │ D │
* └───┴───┘
*/
[0] = LAYOUT_2x2 (
KC_A, KC_B,
KC_C, KC_D
)
};
キーボードにファームウェアを書き込む
先程設定したファイルを pro micro に書き込む.
-
ファームウェアをコンパイルする.
qmk compile -kb sample2x2 -km default
-
ファームウェアを書き込む.
qmk flash -kb sample2x2 -km default
私はM1 Macを使っているのですが,この方法でファームウェアを書き込もうとしてもうまく認識してくれなかったためQMK Toolboxを使って書き込みました.
以上で完了.
参考
Setting Up Your QMK Environment
Keyboard Guidelines
Porting Keyboards
info.json Format