DJMAX RESPECT V 用コントローラーを作成する Pt.2

# 基板とケースの確認
発注した基板とケースが届いたら、寸法などが間違っていないかを確認します。
今回は、基板にスタビライザーの穴開け加工をしなかったので、アクリル板に少し余計な穴が開いていますが、まあ良しとします。
基板は、念のためテスターで確認しておくといいと思います。
![F3C04E5C-3D8B-49EA-BD45-CBE4BFBCFE48.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3075609/dbf475f2-bb8c-9c14-ab6c-5c28d5d15ed7.jpeg)
![56BC0926-28D8-4410-A1EB-377BF1D76642.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3075609/9da84eb7-4173-9cc0-b1d3-41db37720299.jpeg)

# はんだ付け
キーソケットとProMicroをはんだ付けします。
画像は発注ミスした基板で練習したものです。
![DB2A7CBF-90BD-43D9-A8A5-343D1FFFA24B.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3075609/62be1de5-4f34-e4ac-0442-c93276107916.jpeg)
ProMicroは結構高いので、慎重にはんだ付けすることをオススメします。

# キーマッピング
QMK Firmwareについては以下を参照しました。

https://okayu-moka.hatenablog.com/entry/2019/09/08/170000

https://zenn.dev/diwamoto/articles/1943345edce519

▷QMK MSYSで新規のキーボードファイルを作成
```
qmk new-keyboard
```
コマンドを実行すると、以下のようにキーボードの名前やMCUの種類等色々と質問されますが、適当に進めていいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3075609/cc45ae2d-cfa4-4c5f-f7f9-f107bab45979.png)

このようにqmk_firmware/keyboardsにフォルダが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3075609/80aa63eb-5f4a-46e3-a2cc-f423e33e9bbf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3075609/d1edb45c-0b88-9d6b-245a-8a0a6ebcf6c1.png)

今回はtestフォルダ中のkeyboard.jsonと、keymap.cのソースファイルをVSCODEで編集します。

▷keyboard.jsonの編集
matrix_pinsとlayoutを編集していきます。
matrix_pinsはPt.1で作成した回路図のProMicroの端子番号を指定します。
layoutはKeyboard Layout Editorで生成されたRaw dataを以下のConvert KLE raw to QMK info.jsonでコンバートし、順にペーストしていきます。

https://qmk.fm/converter/

```json:keyboard.json
{
    "manufacturer": "",
    "keyboard_name": "test",
    "maintainer": "",
    "bootloader": "atmel-dfu",
    "diode_direction": "COL2ROW",
    "features": {
        "bootmagic": true,
        "command": false,
        "console": false,
        "extrakey": true,
        "mousekey": true,
        "nkro": true
    },
    "matrix_pins": {
        "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6"],
        "rows": ["D1", "D0", "D4", "C6"]
    },
    "processor": "atmega32u4",
    "url": "",
    "usb": {
        "device_version": "1.0.0",
        "pid": "0x0000",
        "vid": "0xFEED"
    },
    "layouts": {
        "LAYOUT": {
            "layout": [
            {"matrix": [0, 0], "label":"1", "x":0, "y":0}, 
            {"matrix": [0, 1], "label":"2", "x":1, "y":0, "w":1.25}, 
            {"matrix": [0, 6], "label":"3", "x":9.75, "y":0, "w":1.25}, 
            {"matrix": [0, 7], "label":"4", "x":11, "y":0}, 
            {"matrix": [1, 0], "label":"7", "x":2.5, "y":0.5}, 
            {"matrix": [1, 1], "label":"10", "x":8.5, "y":0.5}, 
            {"matrix": [1, 2], "label":"5", "x":0, "y":1}, 
            {"matrix": [1, 3], "label":"6", "x":1.5, "y":1}, 
            {"matrix": [1, 4], "label":"8", "x":3.5, "y":1}, 
            {"matrix": [1, 5], "label":"9", "x":7.5, "y":1}, 
            {"matrix": [1, 6], "label":"11", "x":9.5, "y":1}, 
            {"matrix": [1, 7], "label":"12", "x":11, "y":1}, 
            {"matrix": [2, 0], "label":"13", "x":0, "y":2}, 
            {"matrix": [2, 1], "label":"14", "x":1, "y":2}, 
            {"matrix": [2, 2], "label":"15", "x":2, "y":2}, 
            {"matrix": [2, 3], "label":"16", "x":4, "y":2, "w":1.5}, 
            {"matrix": [2, 4], "label":"17", "x":6.5, "y":2, "w":1.5}, 
            {"matrix": [2, 5], "label":"18", "x":9, "y":2}, 
            {"matrix": [2, 6], "label":"19", "x":10, "y":2}, 
            {"matrix": [2, 7], "label":"20", "x":11, "y":2}, 
            {"matrix": [3, 0], "label":"21", "x":0, "y":3}, 
            {"matrix": [3, 1], "label":"22", "x":1, "y":3}, 
            {"matrix": [3, 2], "label":"23", "x":2, "y":3}, 
            {"matrix": [3, 3], "label":"24", "x":3, "y":3, "w":2}, 
            {"matrix": [3, 4], "label":"25", "x":7, "y":3, "w":2}, 
            {"matrix": [3, 5], "label":"26", "x":9, "y":3}, 
            {"matrix": [3, 6], "label":"27", "x":10, "y":3}, 
            {"matrix": [3, 7], "label":"28", "x":11, "y":3}
            ]
        }
    }
}
```

▷keymap.cの編集
配列にキーコードを入力します。
キーコードについては以下を参照してください。

https://docs.qmk.fm/keycodes

```c:keymap.c
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   
    [0] = LAYOUT(
        KC_ESC,   KC_2,                                  KC_DEL,   KC_BSPC,
        KC_TAB,   KC_A,   KC_S,   KC_D,   KC_L,   KC_P,   KC_COLN,   KC_ENT,
        KC_LSFT,   KC_P2,   KC_P3,   KC_C,   KC_COMM,   KC_P4,   KC_UP,   KC_RSFT,
        KC_1,   KC_LCTL, KC_PENT, KC_SPC,   KC_SPC,   KC_LEFT,   KC_DOWN,   KC_RIGHT
    )
};
```

▷ビルドと書き込み
QMK MSYSで以下のコマンドでまずはビルドします。
```
make test:default
```
ビルドに成功したら、書き込み先のProMicroをPCに接続して、 以下のコマンドで書き込みます。
```
make test:default:avrdude
```
リセットの指示が出たら、ProMicroの RST ピンと GND ピンをショートさせ、リセットします。

以上