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


自分で作成したPCBや空中配線で作ったキーボードのファームウェアの作成法のメモです。

(※ 2020/2/4 更新)

qmk/qmk_firmware のインストール

github から qmk_firmware のリポジトリをクローンしてきます。

$ git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
$ cd qmk_firmware
$ util/qmk_install.sh

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

ここからが本題。
オリジナルキーボードに合わせたファームウェアを作成していきます。
例として2x2のキーボードのファームウェアを作成していきます。
自分の作成したいキーボードに合わせて便宜読み替えてください。

1. テンプレートを作成

./util/new_keyboard.sh を実行すると以下のようにキーボードの名前やキーボードタイプを聞かれるので、入力してください。
Keyboard Type はデフォルト(何も入力せずにエンター)で問題ありません。

$ cd qmk_firmware
$ ./util/new_keyboard.sh

Generating a new QMK keyboard directory

Keyboard Name: 4key
Keyboard Type [avr]:
Your Name [John Smith]:

Copying base template files... done
Copying avr template files... done
Renaming keyboard files... done
Replacing %YEAR% with 2020... done
Replacing %KEYBOARD% with 4key... done
Replacing %YOUR_NAME% with mizuhof... done

Created a new keyboard called 4key.

To start working on things, cd into keyboards/4key,
or open the directory in your favourite text editor.

qmk_firmware/keyboards/4key以下にテンプレートが作成されます。
フォルダの中身は以下のようになっています。

.
├── 4key.c
├── 4key.h
├── config.h
├── info.json
├── keymaps
│   └── default
│       ├── config.h
│       ├── keymap.c
│       └── readme.md
├── readme.md
└── rules.mk

2. ファイルの書き換え

主に書き換えるファイルは以下の4つ

  • 4key.h
  • config.h
  • keymaps/default/keymap.c
  • rules.mk

4key.h

キーボードのレイアウトを以下のように定義していきます。
#define LAYOUTを書き換えます。

(略)

#define LAYOUT( \
    k00, k01, \
    k10,  k11   \
    ) \
{ \
    { k00, k01,}, \
    { k10, k11 }, \
}


(略)

rules.mk

LEDを光らせる場合は以下の項目をyesにします。

(略)

BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes

(略)

config.h

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

(略)

/*
 * キーボードのレイアウトの設定
 */
#define MATRIX_ROWS 2  // キーボードの行の数
#define MATRIX_COLS 2  // キーボードの列の数

(略)

/*
 * キーボードの配線の変更
 * COLS: 列に使用するピンの指定, 左から右
 * ROWS: 行に使用するピンの指定, 上から下
 */
#define MATRIX_ROW_PINS { D4, C6 }     
#define MATRIX_COL_PINS { F4, F5 } 

(略)

/*
 * LEDの明るさの設定
 */
#define BACKLIGHT_LEVELS 3

(略)

/*
 * LEDの制御ピンの設定
 * LEDの数の設定
 */
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
  #define RGBLED_NUM 4
  (他にも色々設定できるが今回は省略)
#endif

(略)

keymaps/default/keymap.c

ここに、どのキーを押したら何を入力するのかを設定する。
入力される文字にはそれぞれキーコードが決まっているので、
Keycodes - QMK Firmware を参考に設定していく。

(略)

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [0] = LAYOUT( /* Base */
      KC_ESC,  KC_ENT, \
      KC_TAB,  KC_SPC  \
  ),
};

(略)

以上で最低限の設定は完了です。

キーボードにファームウェアを書き込む

先程設定したファイルを pro micro に書き込んでいきます。
手順は以下のとおりです。

  1. ファームウェアをビルドする

    $ make 4key:default
    
  2. ファームウェアを書き込む

    $ make 4key:default:avrdude
    

以上で完了です。

それでは、よいキーボードライフを!!!

参考