24
Help us understand the problem. What are the problem?

posted at

updated at

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

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

(※ 2020/02/04 更新)
(※ 2022/05/22 QMK Firmwareの仕様が変更していたため新仕様での方法はこちらに新しくまとめ直しました)

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

左右分離キーボードをつ

(略)

SPLIT_KEYBOARD = yes

(略)

config.h

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

20171030180002.png

(略)

/*
 * キーボードのレイアウトの設定
 */
#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
    

以上で完了です。

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

参考

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
24
Help us understand the problem. What are the problem?