自作キーボード Corne Chocolateの組み立て記録

# Corne chocolate building log



遊舎工房にて，corne chocolateを購入したので，その組み立てのログを残します．
左右分割かつ格子配列もしくはColumn Staggered配列（上下にズレがない）で，普段使いに問題ないレベルの中でミニマムなキーボードを求めており，遊舎工房にある中で最も私の要望を満たしていたのが Corne シリーズ．
モバイル用キーボードとしての使用を考えており，なるべくコンパクトにしたかったので，ロープロファイルキースイッチ対応のcorne chocolateを選択しました．
今から考えると，色々なキースイッチを試してみたくなったので，ロープロ以外が使えるCorne cherryの方が選択肢が多くて良かったかもしれないと思います．

私は，このキーボードをMacbook proの上に乗せたかったので，ボトムプレートは自分で作成し，自分にとってのベストな角度で二枚のプレートを蝶番で固定して，折りたたみ式のキーボードとして使えるようにしました．．
持ち運びやセッティングの手間を考えると左右分割じゃない方が楽なのですが，自分の場合は親指で押せるキーが複数欲しいこと，左右で少し開いた角度で使いたいこと，ortholinerなキーボードを使いたいなどの理由から左右分割じゃないキーボードは嫌でした．
ならば左右分割を作ってその左右を好きな角度で固定してしまえばいいのではないかということで，こんな変なことをした次第です．
個人的にはすごい満足のいくものが出来上がりました．


![IMG_20200110_151518.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433396/9f62800c-aa35-e040-956f-58a6ab9d6a7b.jpeg)

![IMG_20200110_151606.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433396/2e1f9be8-deb3-d406-e46d-1a5e1e81bcb5.jpeg)
下にあるのはMacbook pro 15inchです

------------------------------
## 購入品

### キーボード関連
- [corne chocolate](https://yushakobo.jp/shop/corne-chocolate/)
  - 左右分割型42キーのキーボード
  - Kailh ロープロファイルスイッチ対応 

- [kailh ロープロファイルスイッチ 赤軸](https://yushakobo.jp/shop/pg1350/)
  - corne chocolateは，ロープロファイル用のキーボード
  - 赤軸はスムーズなリニア軸．高さがなくて小さなキーボードを作れるが，打感はあまり好みではなかった．

- [キーキャップ](https://yushakobo.jp/shop/pg1350cap-blank/)
  - kailh ロープロファイル対応の透明のキーキャップ
  - 触り心地がツルツルしすぎていて自分にはイマイチだったので，キートップを粗めのヤスリで削って少しざらつかせるせてみました．今のところ結構いい感じです．

- [TRRS cable 10cm](https://www.amazon.co.jp/gp/product/B0722G2DW1/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1)
  - 私の場合は左右のキーボードをノートパソコンの上において使用するため，短いケーブルを使っています．長さは自分がどのようにキーボードをセットするかに合わせて変えるのが良いかと思います．

- MicroUSB to type-C cable
  - 簡単に手に入るだろうと思っていたら意外と見つからなかったのがこのケーブル．最終的にマルツで購入しました． 

### 作業用品

先人たちを参考にして，評価が高かったはんだごてとはんだを購入．
はんだ吸い取り線も購入しましたが，使用することなく終了．
でもミスったときのことを考えると，買っておくのが安心．
はんだづけは今回が初めてだったので，youtubeなどでやり方を確認してから行いました．

- [goot 高密度集積基盤用はんだ SD-60](https://www.amazon.co.jp/gp/product/B0029LGAJI/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)

- [はんだごて](https://www.amazon.co.jp/gp/product/B076KMS5CV/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)

- [こて台](https://www.amazon.co.jp/gp/product/B000TGNWCS/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1)


### おまけ

ボトムプレートを自作するために，アクリル板を購入．
レーザーカッターで切り出し．
オリジナルの設計図はCorne開発者の[footsanのgithub](https://github.com/foostan/crkbd)で公開されています．
ボトムプレートは内側を少し延長し，左右のキーボードを蝶番で止めることで，折りたたみ可能かつ，ベストな角度で利用できるようにしてみました．
個人的には満足しています．

- [滑り止め(高め)](https://www.amazon.co.jp/gp/product/B07ZH5DFRJ/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1)

- 底板用アクリル

- 連結用 蝶番


------------------------------
## firmware

QMK firmwareで書き込み．
今回が初めての自作キーボード作成なので不安でしたが，以下のサイトを利用すれば非常に簡単にできました．
一番つまづいたのは，書き込みのタイミングで出たエラー．
デフォルトのキーマップの書き込みすらうまくいかないので途方にくれていたが，何と原因はMacのOSでした．
2020年1月現在MacOS Catalina では，書き込みに使うソフトと干渉してエラーが出るため書き込めないようです．
OSアップデート前のMacbook(mojave)も持っていたので，そっちでやってみると一発で成功．


- [QMK configurator](https://config.qmk.fm/#/1upkeyboards/1up60hse/LAYOUT_60_ansi)
  - GUI でポチポチすれば書き込み用のキー配列プログラムのコンパイルまでしてくれる．

- QMK firmware のセットアップは[公式サイト](https://docs.qmk.fm/#/newbs_getting_started)を参照

------------------------------
## キーマップ
```
# 基本レイヤー
      ------------------------------------------------------------------
      TAB          |  Q | W | E | R | T || Y | U | I | O | P           |¥
      -------------|----|---|---|---|---||---|---|---|---|-------------|-
      ESC(Control) |  A | S | D | F | G || H | J | K | L | LT(MOUSE,;) |'
      -------------|----|---|---|---|---||---|---|---|---|-------------|-
      Shift        |  Z | X | C | V | B || N | M | , | . | /           |/
      ------------------------------------------------------------------
      Option | LT(ARROW, 英数) | Space(Command) || LT(NUMBER,Enter) | LT(ARROW,かな) | Command＋Space(for Alfred)


# 数字レイヤー
      --------------------------------------------------------------------------
      TAB          |  [ | ] | ( | ) | ` || Del       | 7 | 8 | 9 | 0           |\
      -------------|----|---|---|---|---||-----------|---|---|---|-------------|-
      ESC(Control) |  / | * | - | + | = || Backspace | 4 | 5 | 6 | .           |
      -------------|----|---|---|---|---||-----------|---|---|---|-------------|-
      Shift        |  % | ^ | < | > | ` || &         | 1 | 2 | 3 | .           |
      ------------------------------------------------------------------
      Option | LT(ARROW, 英数) | Space(Command) || LT(NUMBER,Enter) | LT(ARROW,かな) | 0

# 移動レイヤー

      --------------------------------------------------------------------------------------------------------------------
      TAB          | Menu        | Desktop <- | App move | Desktop -> | Menubar    ||      |      | Home | End   | PageUP | PageDOWN |
      -------------|-------------|------------|----------|------------|------------||------|------|------|-------|--------|
      ESC(Control) | BrowserBack | Tab <-     | AppWindow| Tab ->     | Browser -> || Left | Down | Up   | Right |        | Enter
      -------------|-------------|------------|----------|------------|------------||------|------|------|-------|--------|
      Shift        |             |            |          |            |            ||      | _    | +    | [     | ]      | 
      ------------------------------------------------------------------
      Option | LT(ARROW, 英数) | Space(Command) || LT(NUMBER,Enter) | LT(ARROW,かな) | Command＋Space(for Alfred)

# マウス操作レイヤー

      -------------------------------------------------------------------------------------------------------------
        |             | |            |           |            || |           | PageUP    | LeftClick  | MouseUP | |
      ----------------|-|------------|-----------|------------||-|-----------|-----------|------------|---------|-|
        | BrowserBack | | RightClick | LeftClick | Browser -> || | MouseLeft | MouseDown | MouseRight |         |
      ----------------|-|------------|-----------|------------||-|-----------|-----------|------------|---------|-|
        |             | |            |           |            || |     _     |     +     |      [     |    ]    |
      -------------------------------------------------------------------------------------------------------------
      Option | LT(ARROW, 英数) | Space(Command) || LT(NUMBER,Enter) | LT(ARROW,かな) | Command＋Space(for Alfred)

# Adjust レイヤー

      --------------------------------------------------
       | | | | | || |BrightnessDown | BrightnessUp | | |
      -|-|-|-|-|-||-|---------------|--------------|-|-|-
       | | | | | || |  VolumeDown   |   VolumeUP   | | |
      -|-|-|-|-|-||-|---------------|--------------|-|-|-
       | | | | | || |     Mute      |              | | |
      --------------------------------------------------
       | | | | | |
```

### C言語
```
#include QMK_KEYBOARD_H

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
	[0] = LAYOUT(\
			LT(4,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T,        KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
			LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,      KC_H, KC_J, KC_K, KC_L, LT(3,KC_SCLN), KC_QUOT, \
			KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,             KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SLSH, \
		 	KC_LALT, LT(2,KC_LANG2), LGUI_T(KC_SPC),	   LT(1,KC_ENT), LT(2,KC_LANG1), LGUI(KC_SPC) \
			),

	[1] = LAYOUT(\
			KC_TAB, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_GRV,		       KC_DEL, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \
			LCTL_T(KC_ESC), KC_PSLS, KC_PAST, KC_MINS, KC_PPLS, KC_PEQL,           KC_BSPC, KC_4, KC_5, KC_6, KC_DOT, KC_NO, \
			KC_LSFT, KC_PERC, KC_CIRC, KC_LT, KC_GT, KC_GRV,                       KC_AMPR, KC_1, KC_2, KC_3, KC_DOT, KC_NO, \
			KC_LALT, LT(2,KC_LANG2), LGUI_T(KC_SPC),			       KC_ENT, KC_0, KC_0 \
			),

	[2] = LAYOUT(\
			KC_TAB, LCTL(KC_F2), LCTL(KC_LEFT), LGUI(KC_TAB), LCTL(KC_RGHT), LCTL(KC_F8),			KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_NO, KC_BSPC, \
			LCTL_T(KC_ESC), LGUI(KC_LBRC), LCTL(KC_TAB), LALT(KC_TAB), LCTL(KC_TAB), LGUI(KC_RBRC),         KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_ENT,\
			KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 							KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_NO, KC_LSFT,\
			KC_LALT, KC_LANG2, LGUI_T(KC_SPC),								LT(1,KC_ENT), KC_LANG1, KC_TAB \
			),

	[3] = LAYOUT(\
			KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HYPR(KC_F16), 			HYPR(KC_F17), KC_PGUP, KC_MS_U, KC_BTN2, KC_NO, KC_NO,\
			KC_NO, LGUI(KC_LBRC), KC_NO, KC_BTN2, KC_BTN1, LGUI(KC_RBRC), 		KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, \
			KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HYPR(KC_F18), 			HYPR(KC_F19), KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO,\
			LGUI_T(KC_LANG2), MO(1), KC_SPC,					KC_ACL2, KC_ACL0, KC_ACL1 \
			),

	[4] = LAYOUT(\
			KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 		KC_NO, KC_BRID, KC_BRIU, KC_NO, KC_NO, KC_NO, \
			KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,			KC_MSTP, KC__VOLDOWN, KC__VOLUP, KC_MPLY, KC_NO, KC_NO, \
			KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,			KC_NO, KC__MUTE, KC_NO, KC_NO, KC_NO, KC_NO, \
			KC_NO, KC_NO, KC_NO, 						KC_NO, KC_NO, KC_NO \
			)
};
```

### terminalで実行

以下のコードをキーボードをパソコンと接続している状態で実行．
左右のそれぞれで書き込みを行う．

```
cd qmk_firmware #qmk firmwareのフォルダに移動

make crkbd:john:avrdude #書き込み実行 make [keyboard name] : [keymap name] : avrdude
```