C-13Xビルドログ 20220408

![IMG_20220404_125504.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/9c53f56f-bcc5-80ac-dfbf-c5c86990c6c7.jpeg)
## 前説
Twitterのタイムラインに流れてきたkuriharaさんのつぶやきの３Dプリントされたキーボードケースらしき何か。
引用されていたWebページをたどっていくと、C-13Xというキーボードでした。ちっさいものが好きなんで作ってみようかなと。

https://twitter.com/kurihary/status/1498618414293991425

## URL
**flurplesさんのgithub**
https://github.com/flurples/C-13X
**kuriharaさんのブログ (3Dプリント発注先の記事)**
https://kurihara.hatenadiary.jp/entry/2022/01/04/154223
**まきゃさんのC-13X制作ページ**
https://machiaworx.net/?p=1312
**PRK Firmware**
https://github.com/picoruby/prk_firmware

## 下準備
- キーボードケース：[flurplesさんのgithub](https://github.com/flurples/C-13X/tree/main/stl)からデータをダウンロードして、WENEXTで出力
- キースイッチ：[AKKO CS Jelly Sponge](https://www.amazon.co.jp/%E3%83%A1%E3%82%AB%E3%83%8B%E3%82%AB%E3%83%AB%E3%82%B2%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E7%94%A8%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%AD%E3%83%BC%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81-%E5%90%84%E7%A8%AE%E9%A1%9E%E3%81%AE%E3%83%A1%E3%82%AB%E3%83%8B%E3%82%AB%E3%83%AB%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89PCB%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AB%E9%81%A9%E7%94%A8-%E3%82%AD%E3%83%BC%E3%82%AD%E3%83%A3%E3%83%83%E3%83%97%E3%82%B5%E3%83%B3%E3%83%97%E3%83%A9%E3%83%BC-%E3%82%A2%E3%82%AF%E3%83%AA%E3%83%AB%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%83%86%E3%82%B9%E3%82%BF%E3%83%BC-%E3%83%A1%E3%82%AB%E3%83%8B%E3%82%AB%E3%83%AB%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81/dp/B09GB13M71/ref=pd_lpo_1?pd_rd_i=B09G9XMNTX&th=1)をAmazonから購入
- キーキャップ：[AKKO WAVE 226キーASAプロファイル](https://www.amazon.co.jp/EPOMAKER-226%E3%82%AD%E3%83%BCASA%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABPBT%E3%82%AD%E3%83%BC%E3%82%AD%E3%83%A3%E3%83%83%E3%83%97%E3%82%BB%E3%83%83%E3%83%88-%E3%83%80%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%83%86%E3%82%AF%E3%83%8E%E3%83%AD%E3%82%B8%E3%83%BC%E3%82%92%E6%8E%A1%E7%94%A8-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E5%8F%8E%E7%B4%8D%E3%82%B1%E3%83%BC%E3%82%B9%E3%81%8C%E5%90%8C%E6%A2%B1-%E3%83%A1%E3%82%AB%E3%83%8B%E3%82%AB%E3%83%AB%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%A7%E3%81%8D%E7%B6%BA%E9%BA%97%E3%81%AA%E3%83%8F%E3%82%A4%E3%82%A8%E3%83%B3%E3%83%89%E3%82%AD%E3%83%BC%E3%82%AD%E3%83%A3%E3%83%83%E3%83%97%E3%82%BB%E3%83%83%E3%83%88/dp/B09CSYVTS7/ref=asc_df_B09CSYVTS7/?tag=jpgo-22&linkCode=df0&hvadid=529606685268&hvpos=&hvnetw=g&hvrand=17118701553054248115&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009718&hvtargid=pla-1484595250927&psc=1)をAmazonから購入
- ソケット：[CHERRYMXスイッチ用 Kailh PCBソケット](https://talpkeyboard.net/items/5e02c5405b120c792616bcf9)をTALP KEYBOARDさんから購入
- マイコン：[Seeed XIAO RP2040](https://www.marutsu.co.jp/pc/i/2229736/)をマルツから購入していた...
- そのた：スイッチ間の格子用に太い銅線、マイコン接続用にエナメル線、ダイオード、コンスルーは家にあったりあまりものだったり

## ケース出力
中国の基板屋さんも最近は３Dプリントをやっている様ですが、WENEXTに発注したのはkuriharaさんのブログでクーポンを書いていただいてたからです。お世話になりました！
出力はクーポンの範囲内でしたが、送料と合わせるとそれなりの金額になった感じがしました。今回が初発注ですが、国内の業者さんだったらすごく高いんだろうなぁ...
![Wenext Account Center 2022-04-08 16-48-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/3f602976-42e3-0983-7e54-58257138f839.png)
しかも発注から到着までが思ってたよりも早くておおむね2週間。配達はFedExなので出荷から到着も早かったです。
![Wenext Account Center 2022-04-08 16-49-40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/a8190c03-9c59-f319-36e1-ad7f730c4159.png)
到着した箱は怪しいけど、まぁこんなもんかなと思って開梱するとなぞの紙やすり。これで出力物を磨いてくださいって事なのかなと理解。
しっかり緩衝材が入っていたので、破損とか傷とかはなかった。中国から送られたとは思えない感じですね。
![IMG20220314202533.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/6f6dfd4e-3e2e-7a8b-9f2d-4a3aad3b82b6.jpeg)
![IMG20220314204720.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/9d0e632a-b64b-6b8e-210c-c6b2f169e148.jpeg)
![IMG20220314211513.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/2825895e-bb31-0e87-4c58-17de88123fa0.jpeg)

## マイコンなに使うの問題
flurplesさんはelite-c、まきゃさんはRP2040搭載 SparkFun Pro Microを使用されてます。
さてさてどうしようかなと思って、とりあえずRaspberry Pi Picoを買ったのですが、買った後に引き出しから出てきたのがSeeed XIAO RP2040でした。そういえば職場近くのマルツに入荷した時に慌てて買いに行ったのをわすれてた😅
ピン数は少ないけどこれを使いたいなと思いつつPRKfirmwareとKMKfirmwareをみてると、PRKがDuplex-Matrixをサポートしているのが目についたのでちいさくガッツポーズ。
これでピン数問題は解決できる目処が立ったので、マイコンはSeeed XIAO RP2040に決定しました。

## ケース加工
マイコンなに使うの問題が解決できたので、elite-cに合わせ込まれているケースの加工を行いました。そもそもケースを出力する段階でデータを修正しておけばいいと思うのですが、出力してからマイコンを決めるとかしているから加工が必要になります。
現物合わせでXIAOが収まる様に彫刻刀でガリガリと少しずつ加工して、頃合いがいいところで完了です。
![IMG20220331095926.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/069cc76a-3155-7344-5b1b-223cedf3432a.jpeg)
![IMG20220331105206.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/2fa11905-b877-6589-9933-2110b65072c6.jpeg)
![IMG20220331105249.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/9ea43e7d-a05e-2d02-24ba-b1d201f2d275.jpeg)

## スイッチのマトリクス配線
ハンドワイヤーだとキーキャップを入れ替える時にワイヤーが切れると困りものなので、マトリクスの配線は家にあった太い銅線を使ってPCBソケットでスイッチが取れる様にしておいて、マトリクス配線への影響が最小になる様にしました。
プレートにスイッチをはめてからPCBソケットをはめてマトリクス配線をぼちぼちハンダ付けするのですが、ダイオードはDuplex-Matrixなので列によって向きが変わるのが要注意ポイントです。PCBを作るわけではないので自分がわかるポンチ絵を描いて配線を進めました。
![C-13X マトリクス - Google スプレッドシート 2022-04-08 18-06-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/d212e84b-cb9d-c2d0-9652-c8962b40d1fc.png)
![IMG20220331114507.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/a0b6fc3a-5f9c-4757-d59f-d4c15ecb73e0.jpeg)
![IMG20220331155256.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/3f7ce3a6-0224-51e5-e289-9d9145d66121.jpeg)
![IMG20220331164536.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/31e3b05f-ee72-3243-c691-a9b3a5c2e6b1.jpeg)
![IMG20220331185433.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/143d1c36-be16-2d7e-9fde-838db1ec135c.png)

## マイコンとスイッチのマトリクス配線の配線
ボトムケースをはずす時にマイコンの配線が邪魔になりそうなので、手持ちのコンスルーを使うピンに合わせて切断して脱着が簡単になる様にしています。
配線材はエナメル線を使ってなるべく短くなる様にスイッチのマトリクス配線へ配線しました。エナメル線が意外と硬いので取り回しはちょっとやりにくい感じですが、ボトムケースをはずすのは滅多にないと思うのでこれで手打ちにしてます。
![IMG20220402113852.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/2353494f-8ef4-f319-12de-bbdb4608483c.jpeg)
![IMG20220402140635.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/dc7a3b76-aa16-350c-0f89-1934a4b80aa7.jpeg)

## 配線チェック
通電前に配線ショートがないかとダイオードの向き確認。特にダイオードの向きは列毎で変わるので３回くらい見直すくらいでちょうどいいと思います。
目視で問題ないなら仮のキーマップを作ってスイッチのオンチェックです。

## 仮のキーマップ作成
XIAOの物理ピンとPRKfirmwareで記載するピン番号が異なるので、Seeedのページでピンを確認します。PRKfirmwareで使う番号は下図のMicropythonと書いてある番号です。
![xinpin.jpg](https://files.seeedstudio.com/wiki/XIAO-RP2040/img/xinpin.jpg)
https://files.seeedstudio.com/wiki/XIAO-RP2040/img/xinpin.jpg

このキーマップで順番にキーを押していって、意図しているキーが入力されたらOK

```
kbd = Keyboard.new

# XIAO/GPIO Pin Assign
# D0   P26
# D1   P27
# D2   P28
# D3   P29
# D4   P6
# D5   P7
# D6   P0
# D7   P1
# D8   P2
# D9   P4
# D10  P3

c1 = 0
c2 = 1
c3 = 2
c4 = 4
c5 = 3
r1 = 7
r2 = 6
r3 = 29
r4 = 28

# Note that defferent from init_pins
kbd.init_matrix_pins(
  [
    [ [c1,r1], [r1,c2], [c3,r1], [r1,c4], [c5,r1], [r1,c5], [c4,r1], [r1,c3], [c2,r1], [r1,c1],],
    [ [c1,r2], [r2,c2], [c3,r2], [r2,c4], [c5,r2], [r2,c5], [c4,r2], [r2,c3], [c2,r2], [r2,c1],],
    [ [c1,r3], [r3,c2], [c3,r3], [r3,c4], [c5,r3], [r3,c5], [c4,r3], [r3,c3], [c2,r3], [r3,c1],],
    [ [c1,r4], [r4,c2], [c3,r4], [r4,c4], [c5,r4], [r4,c5], [c4,r4], [r4,c3], [c2,r4], [r4,c1],],
  ]
)


# default layer should be added at first
kbd.add_layer :default, %i(
  KC_Q    KC_W    KC_E    KC_R    KC_T    KC_Y   KC_U     KC_I    KC_O    KC_P  
  KC_A    KC_S    KC_D    KC_F    KC_G    KC_H   KC_J     KC_K    XXXXXXX KC_L
  KC_Z    KC_X    KC_C    KC_V    KC_B    KC_N   KC_M     KC_1    KC_2    KC_3
  KC_4    KC_5    XXXXXXX KC_6    XXXXXXX KC_7   XXXXXXX  KC_8    XXXXXXX KC_9
) 

kbd.start!
```

![IMG20220402160625.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/444f777a-13b8-a292-70cf-3eeee885e883.jpeg)

## 本番キーマップ
無事キー入力ができるのが確認できたら、本番のキーマップを作成します。
前に作ってたkawaiiのキーマップに似せて作ったのですが、PRKfirmwareにはTapDanceが実装されていないみたいなので、使わない様にキーマップを調整してます。
今の所のキーマップは以下な感じです。

```
kbd = Keyboard.new

# XIAO/GPIO Pin Assign
# D0   P26
# D1   P27
# D2   P28
# D3   P29
# D4   P6
# D5   P7
# D6   P0
# D7   P1
# D8   P2
# D9   P4
# D10  P3

c1 = 0
c2 = 1
c3 = 2
c4 = 4
c5 = 3
r1 = 7
r2 = 6
r3 = 29
r4 = 28

# Note that defferent from init_pins
kbd.init_matrix_pins(
  [
    [ [c1,r1], [r1,c2], [c3,r1], [r1,c4], [c5,r1], [r1,c5], [c4,r1], [r1,c3], [c2,r1], [r1,c1],],
    [ [c1,r2], [r2,c2], [c3,r2], [r2,c4], [c5,r2], [r2,c5], [c4,r2], [r2,c3], [c2,r2], [r2,c1],],
    [ [c1,r3], [r3,c2], [c3,r3], [r3,c4], [c5,r3], [r3,c5], [c4,r3], [r3,c3], [c2,r3], [r3,c1],],
    [ [c1,r4], [r4,c2], [c3,r4], [r4,c4], [c5,r4], [r4,c5], [c4,r4], [r4,c3], [c2,r4], [r4,c1],],
  ]
)

# default
# ,---------------------------------------------------------------------.
# |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |
# |------+------+------+------+------+------+------+------+------+------|
# | AALT |   S  |   D  |   F  |   G  |   H  |   J  |   K  | ---- | LALT |
# |------+------+------+------+------+------+------+------+------+------|
# | ZSFT |   X  |   C  |   V  |   B  |   N  |   M  |   .  |   -  |ENTSFT|
# |------+------+------+------+------+------+------+------+------+------|
# |ESCCTL|  CMD | ---- |  BS/LOWER   |   SP/RAISE  |   ,  | ---- |ENTCTL|
# `---------------------------------------------------------------------'

# default layer should be added at first
kbd.add_layer :default, %i(
  KC_Q      KC_W    KC_E  KC_R    KC_T  KC_Y    KC_U  KC_I    KC_O     KC_P  
  KC_AALT   KC_S    KC_D  KC_F    KC_G  KC_H    KC_J  KC_K    KC_NO    KC_L_ALT
  KC_ZSFT   KC_X    KC_C  KC_V    KC_B  KC_N    KC_M  KC_DOT  KC_MINUS KC_ENTSFT
  KC_ESCCTL KC_LGUI KC_NO KC_BSLO KC_NO KC_SPRZ KC_NO KC_COMM KC_NO    KC_ENTCTL
) 



# raize
# ,---------------------------------------------------------------------.
# |   1  |   2  |   3  |   4  |   5  |   -  |   =  |   [  |   ]  |   \  |
# |------+------+------+------+------+------+------+------+------+------|
# |   6  |   7  |   8  |   9  |   0  |   ,  |   /  |  UP  | ---- |   :  |
# |------+------+------+------+------+------+------+------+------+------|
# |   `  |   +  |   -  |   /  |   =  |   .  | LEFT | DOWN | RGHT |   "  |
# |------+------+------+------+------+------+------+------+------+------|
# |  TAB |      | ---- |             |             |      | ---- |      |
# `---------------------------------------------------------------------'

kbd.add_layer :raize, %i(
  KC_1     KC_2    KC_3     KC_4    KC_5   KC_MINUS KC_EQL  KC_LBRC KC_RBRC KC_BSLS
  KC_6     KC_7    KC_8     KC_9    KC_0   KC_COMM  KC_SLSH KC_UP   KC_NO   KC_COLON
  KC_GRAVE KC_PLUS KC_MINUS KC_SLSH KC_EQL KC_DOT   KC_LEFT KC_DOWN KC_RGHT KC_DQUO
  KC_TAB   KC_NO   KC_NO    KC_NO   KC_NO  KC_NO    KC_NO   KC_NO   KC_NO   KC_NO
) 

# lower
# ,---------------------------------------------------------------------.
# |   !  |   @  |   #  |   $  |   %  |   _  |   +  |   {  |   }  |   |  |
# |------+------+------+------+------+------+------+------+------+------|
# |   ^  |   &  |   *  |   (  |   )  |   <  |   >  |   ?  | ---- |   ;  |
# |------+------+------+------+------+------+------+------+------+------|
# |   ~  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |   '  |
# |------+------+------+------+------+------+------+------+------+------|
# |  F1  |  F2  | ---- |             |    ADJUST   |  F11 | ---- |  F12 |
# `---------------------------------------------------------------------'

kbd.add_layer :lower, %i(
  KC_EXLM KC_AT   KC_HASH  KC_DLR  KC_PERC KC_UNDS KC_PLUS KC_LCBR KC_RCBR KC_PIPE 
  KC_CIRC KC_AMPR KC_ASTER KC_LPRN KC_RPRN KC_LABK KC_RABK KC_QUES KC_NO   KC_SCOLON
  KC_TILD KC_F3   KC_F4    KC_F5   KC_F6   KC_F7   KC_F8   KC_F9   KC_F10  KC_QUOT
  KC_F1   KC_F2   KC_NO    KC_NO   KC_NO   ADJUST  KC_NO   KC_F11  KC_NO   KC_F12
) 

# adjust
# ,---------------------------------------------------------------------.
# |      |      |      |      | CAPS |  INS | HOME | PGUP |      |      |
# |------+------+------+------+------+------+------+------+------+------|
# |      |      |      |      | SLCK |  DEL | END  | PGDN | ---- |      |
# |------+------+------+------+------+------+------+------+------+------|
# |      |      |      |      | NLCK |      |      |      |      |      |
# |------+------+------+------+------+------+------+------+------+------|
# | PSCR |      | ---- |             |             |      | ---- |      |
# `---------------------------------------------------------------------'

kbd.add_layer :adjust, %i(
  KC_NO      KC_NO KC_NO KC_NO KC_CAPS       KC_INS KC_HOME KC_PGUP KC_NO KC_NO 
  KC_NO      KC_NO KC_NO KC_NO KC_SCROLLLOCK KC_DEL KC_END  KC_PGDN KC_NO KC_NO
  KC_NO      KC_NO KC_NO KC_NO KC_NUMLOCK    KC_NO  KC_NO   KC_NO   KC_NO KC_NO
  KC_PSCREEN KC_NO KC_NO KC_NO KC_NO         KC_NO  KC_NO   KC_NO   KC_NO KC_NO
)


#                   Your custom    Keycode or                          Keycode (only modifiers)    Release time     Re-push time
#                   key name       Array of Keycode                    or Layer Symbol to be held  threshold(ms)    threshold(ms)
#                                  or Proc                             or Proc which will run      to consider as   to consider as
#                                  when you click                      while you keep press        `click the key`  `hold the key`
kbd.define_mode_key :KC_AALT,    [ :KC_A,                               :KC_LALT,                   150,             150 ]
kbd.define_mode_key :KC_L_ALT,    [ :KC_L,                               :KC_RALT,                   150,             150 ]
kbd.define_mode_key :KC_ZSFT,    [ :KC_Z,                               :KC_LSFT,                   150,             150 ]
kbd.define_mode_key :KC_ENTSFT,    [ :KC_ENT,                               :KC_RSFT,                   150,             150 ]
kbd.define_mode_key :KC_MINSFT,    [ :KC_MINUS,                               :KC_RSFT,                   150,             150 ]
kbd.define_mode_key :KC_ESCCTL,    [ :KC_ESCAPE,                               :KC_LCTL,                   150,             150 ]
kbd.define_mode_key :KC_BSLO,    [ :KC_BSPC,                               :lower,                   150,             150 ]
kbd.define_mode_key :KC_SPRZ,    [ :KC_SPC,                               :raize,                   150,             150 ]
kbd.define_mode_key :KC_ENTCTL,    [ :KC_ENT,                               :KC_RCTL,                   150,             150 ]
kbd.define_mode_key :ADJUST,      [ nil,                   :adjust,                    nil,             nil ]

kbd.start!
```

https://twitter.com/tappy6230/status/1425664791079575556

## 組み立て
一通りキーボードとして動作するのを確認できたので、お楽しみのケース組み立てとキーキャップ装着です。
![IMG20220402141723.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/bd242137-a0c3-85b5-5581-476f8c649394.png)
![IMG20220402141751.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/2a022777-b7c1-9a3e-604f-3655b5e50ff6.png)
ボトムケースにゴム足を貼り付けて、スイッチ群を上にのせてトップケースを重ねてネジを閉めましょう。マイコンは両面テープで貼り付けちゃいました。
予定はIDOBAOのキーキャップをつけるつもりでしたが、購入しやすかったAKKO WAVEに変更しました。セットされてるキー数が多いので迷彩みたいにキーキャップを飾れるのがいい感じです。
気が向いたらkawaiiにつけているIDOBAOとチェンジしていいかな。
![IMG20220404124754.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/3c8c2071-e776-bbd5-86c8-7fcf85c02950.jpeg)

## あとがき
このビルドログはC-13Xで作成しました。
PRKfirmwareはキーマップの変更が簡単で良いのですが、マスストレージとして認識されるので気楽にぬいたらおこられるのが気になるところ。
キーマップが確定したらバイナリーをmakeしてマスストレージ認識されない様にしようかしら。
実際にタイプしてみて体感できたのは、QMKとの挙動の違いやLEDつけたいとかあるのでドキュメントしっかり読まないとだめっぽいです。
![Notification Center 2022-04-08 20-09-39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283328/41fd5502-6082-aa16-6986-c88409132ebf.png)
物理的問題でマイコンが奥にいきすぎてリセットできない問題が発覚したり、Hの左下のキーをNにしてるけどなんとなく左にずれてる感があるのもどうしようかなと...

## あとがきその2
Seeed XIAO RP2040は小さくてピンが少ないけど、Duplex-Matrixを使ったら4x14もキーが使えるので夢が広がりますね😄