QMK Firmware でキーマップの変更とコンパイル、自作キーボードへの書き込みを行う手順のメモです。

meishi2 という自作キーボード初心者向けのキットで実施しました。

インストール・セットアップ

macOS の場合、 Homebrew でインストールします。

brew install qmk/qmk/qmk

インストール後にセットアップコマンドを実行します。

qmk setup

セットアップ中に 公式リポジトリ の git clone が行われます。事前に任意の場所に clone しておき、そのパスを指定することもできます。

qmk setup -H ~/ghq/github.com/qmk/qmk_firmware

ファイル作成

QMK のリポジトリ qmk_firmware のディレクトリに移動します。このリポジトリの keyboards/ ディレクトリに、様々なキーボードのキーマップ設定が収められているようです。

meishi2 の場合は以下のディレクトリです。

keyboards/biacco42/meishi2/keymaps/

以下のコマンドを実行すると、このディレクトリにある default をコピーして、新たなディレクトリが作成されます。

qmk new-keymap -kb biacco42/meishi2

実行すると、名前の入力を求めるプロンプトになります。

Keymap Name:

適当に my_meishi2 と名付けることにして、プロンプトに入力して enter を入力します。すると、次のように表示されます。

Ψ my_meishi2 keymap directory created in: /Users/okiyama/ghq/github.com/qmk/qmk_firmware/keyboards/biacco42/meishi2/keymaps/my_meishi2
Ψ Compile a firmware with your new keymap by typing:

        qmk compile -kb biacco42/meishi2 -km my_meishi2

メッセージの通り、 my_meishi2 という名前のディレクトリが作成されます。作成されたファイルを編集し、任意のキーマップに変更します。

コンパイル・書き込み

以下のコマンドを実行すると、指定したキーマップでファームウェアがコンパイルされます。

qmk compile -kb biacco42/meishi2 -km my_meishi2

コンパイルのログが表示されます。以下は成功時のログです。

Ψ Compiling keymap with gmake --jobs=1 biacco42/meishi2:my_meishi2


QMK Firmware 0.19.12
Making biacco42/meishi2 with keymap my_meishi2

avr-gcc (Homebrew AVR GCC 8.5.0) 8.5.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Size before:
   text    data     bss     dec     hex filename
      0   20354       0   20354    4f82 biacco42_meishi2_my_meishi2.hex

Compiling: quantum/keymap_introspection.c                                                           [OK]
Compiling: quantum/command.c                                                                        [OK]
Linking: .build/biacco42_meishi2_my_meishi2.elf                                                     [OK]
Creating load file for flashing: .build/biacco42_meishi2_my_meishi2.hex                             [OK]
Copying biacco42_meishi2_my_meishi2.hex to qmk_firmware folder                                      [OK]
Checking file size of biacco42_meishi2_my_meishi2.hex                                               [OK]
 * The firmware size is fine - 20354/28672 (70%, 8318 bytes free)

コンパイルに成功したので、キーボードに書き込みます。以下のコマンドを実行します。

qmk flash -kb biacco42/meishi2 -km my_meishi2

実行すると (このとき再びコンパイルが行われるようです)、以下のようにキーボードのリセット待ち状態になります。

Ψ Compiling keymap with gmake --jobs=1 biacco42/meishi2:my_meishi2:flash
# snip
 * The firmware size is fine - 20354/28672 (70%, 8318 bytes free)
Flashing for bootloader: caterina
Waiting for USB serial port - reset your controller now (Ctrl+C to cancel)......

ここでまだキーボードを接続していなければ接続し、リセットスイッチを押します。するとキーボードが認識され、書き込みが行われる様子がログで流れます。

Device /dev/tty.usbmodem101 has appeared; assuming it is the controller.
Waiting for /dev/tty.usbmodem101 to become writable.

Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
    Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices:
    Device code: 0x44

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9587 (probably m32u4)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file ".build/biacco42_meishi2_my_meishi2.hex"
avrdude: input file .build/biacco42_meishi2_my_meishi2.hex auto detected as Intel Hex
avrdude: writing flash (20354 bytes):

Writing | ################################################## | 100% 1.57s

avrdude: 20354 bytes of flash written
avrdude: verifying flash memory against .build/biacco42_meishi2_my_meishi2.hex:
avrdude: input file .build/biacco42_meishi2_my_meishi2.hex auto detected as Intel Hex

Reading | ################################################## | 100% 0.17s

avrdude: 20354 bytes of flash verified

avrdude done.  Thank you.

上記のように avrdude done と表示されれば完了で、キーボードとして使える状態になります。

補足

QMK Firmware を使ったファームウェア書き込みは最も基本的な方法の一つですが、他にもいくつかツールがあり、 2023 年現在は Remap が人気のようです。