自作キーボード（遊舎工房 meishi2）備忘

# 自作キーボードのファームウェア書き込みではまったことメモ
**遊舎工房**の自作キーボード**meishi2**の書き込み方法が変更になっていたので寄稿

以下のキーボードにパスワードを割り当てて、パスワード一発入力に使っていたのだけれど、USB端子がもげたので再度はんだ付けしてファームを書き込もうとしたらうまくいかなかった。
<a href=https://biacco42.hatenablog.com/entry/2019/08/10/185624>
![20220319_204811.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404502/842e6cb3-7af2-a790-b926-c76f1d2960b8.jpeg)</a>

原因は、QMK Firmwareのkeyboards内部の変更

### ダメなパターン
```
[h@machine qmk_firmware]$ make meishi2:default:avrdude
QMK Firmware 0.16.5
make: *** No rule to make target 'meishi2:default:avrdedu'. Stop.
|
| QMK's make format is:
|     make keyboard_folder:keymap_folder[:target]
|
| Where \`keyboard_folder\` is the path to the keyboard relative to
| \`qmk_firmware/keyboards/\`, and \`keymap_folder\` is the name of the
| keymap folder under that board's \`keymaps/\` directory.
|
| Examples:
|     keyboards/dz60, keyboards/dz60/keymaps/default
|       -> make dz60:default
|       -> qmk compile -kb dz60 -km default
|     keyboards/planck/rev6, keyboards/planck/keymaps/default
|       -> make planck/rev6:default:flash
|       -> qmk flash -kb planck/rev6 -km default
|
```

### OKパターン
```
[h@machine qmk_firmware]$ make biacco42/meishi2:default:avrdude
```

---
### サブモジュール不足によるエラー
```
[h@machine qmk_firmware]$ make biacco42/meishi2:default:avrdude
QMK Firmware 0.16.5
WARNING: Some git submodules are out of date or modified.
 Please consider running make git-submodule.

Making biacco42/meishi2 with keymap default and target avrdude

tmk_core/protocol/lufa.mk:13: lib/lufa/LUFA/makefile: No such file or directory
make[1]: *** ターゲット 'lib/lufa/LUFA/makefile' を make するルールがあ
りません.  中止.
Make finished with errors
make: *** [Makefile:413: biacco42/meishi2:default:avrdude] エラー 1
```

### サブモジュール追加
```
[h@machine qmk_firmware]$ make git-submodule
```

### パスワード入力ファームウェア書き込み
```
[h@machine qmk_firmware]$ make biacco42/meishi2:password:avrdude
```

※avrdudeがないとビルドだけされてインストールされなかった。


## おまけ
### QMK Firmwareのパスワード入力マクロのキーマップ記載例 - メモ？
```
/* Copyright 2019 Biacco42
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#include QMK_KEYBOARD_H

// 1.マクロ用のキーコード名宣言
enum custom_keycodes {
  M_BIOS = SAFE_RANGE, // BIOSパスワード入力用
  M_HDD, // HDDパスワード入力用
  M_PASS, // ログオンパスワード入力用
  M_VPN, // VPNパスワード入力用
};

// 2.マクロの実装
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if(record->event.pressed){
    switch(keycode){
      case M_BIOS:
        SEND_STRING("BIOSPASS" SS_TAP(X_ENTER));
        return false;
      case M_HDD:
        SEND_STRING("HDDPASS" SS_TAP(X_ENTER));
        return false;
      case M_PASS:
        SEND_STRING("password1" SS_TAP(X_KP_MINUX) SS_TAP(X_ENTER));
        return false;
      case M_VPN:
        SEND_STRING("password2" SS_TAP(X_KP_ASTERISK) SS_TAP(X_KP_ASTERISK) SS_TAP(X_ENTER));
        return false;
    }
  }
  return true;
};

// 3.キーマップに宣言したキーコードを指定
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [0] = LAYOUT( /* Base */
    M_BIOS, M_HDD, M_PASS, M_VPN
  )
};
```