19
8

More than 1 year has passed since last update.

QMK Firmware でオリジナルキーボードのファームウェアを作成する

Posted at

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.jsonkeymaps/default/keymap.c

info.json

まずキーボードマトリックスの設定を行う.
キーマトリクスの行と列が pro micro のどのポートに対応しているのかなどを指定する.
pro micro のポートを指定する場合は以下の画像を参考.
ただし、先頭のPは省略する(例:PD3 → D3).

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3239343136392f37666538613634372d663462312d366234642d343933392d6436363530616234333366312e706e67.png

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 に書き込む.

  1. ファームウェアをコンパイルする.

    qmk compile -kb sample2x2 -km default
    
  2. ファームウェアを書き込む.

    qmk flash -kb sample2x2 -km default
    

    私はM1 Macを使っているのですが,この方法でファームウェアを書き込もうとしてもうまく認識してくれなかったためQMK Toolboxを使って書き込みました.

以上で完了.

参考

Setting Up Your QMK Environment
Keyboard Guidelines
Porting Keyboards
info.json Format

19
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
8