はじめて自作キーボード作った話

# はじめに
以前から自作キーボード、特に分離型のものには興味がありました。
しかし、組み立てキットや既製品はどれもなかなか高価で、試しに買ってみようにも一歩進めずいました...

そこで、全部自分で作ってしまえばコストを抑えて好きなようにカスタマイズできるのでは！？
ということで
- 予算は1万円以内
- 外注は自宅で作成が難しいプリント基板のみ
- できるだけシンプルな機能

この3つをコンセプトに制作しました。

# 自作キーボードについての勉強

初めての自作キーボードということで、foostan様の「自作キーボード設計入門」を参考に、ざっくりとキーボードの構成を決めていきました。

https://pskbd.booth.pm/items/1044084

KiCADを使ったキーボードの基本的な作り方や、設計方法など丁寧に解説されていてとても参考になりました。KiCADの基本的な使い方は別途学習が必要なので注意。

# 部品の選定
キーボードの制作において、キースイッチの選定は重要です。職場でも使用し、持ち運びのためのコンパクトさも欲しかったので、消音でコンパクトなロープロファイルキーを選択しました。

https://shop.yushakobo.jp/products/pg1350?_pos=1&_sid=b1beb02c4&_ss=r

今回は遊舎工房さんからkailhのロープロファイルスイッチのRedProを購入しました。
マイコンは、同じ遊舎工房さんから出ているコンスルー付きのProMicroを購入。

https://shop.yushakobo.jp/products/21?variant=37793408483489

他のダイオードや、スイッチ、TRRSジャックも同様に遊舎工房さんで購入しました。

https://shop.yushakobo.jp/products/a0800tr-01-1?variant=37665575043233

https://shop.yushakobo.jp/products/a0800di-01-100?variant=37665574944929

https://shop.yushakobo.jp/products/a0800ts-01-1?variant=37665574977697

ホットスワップについては今回搭載しませんでした。

# キー数とキー配列

「Keyboard Layout Editor」を使ってキー数とキー配列を決めていきました。
プリセットにあるErgoDocsをベースに、キー数を44個に減らし、親指で押すキーの位置を調整しました。
画像はもうありません...

https://www.keyboard-layout-editor.com/

# 回路の設計

今回はKiCadを使って回路の設計を行いました。電子工作で簡単な回路をブレッドボードで作った程度の経験でしたが、KiCadのチュートリアルを一通りやってみてからキーボードの設計に入りました。

回路はキーボードとして以下のように最低限の機能を持った構成にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372816/be94ceda-005c-9378-2bdb-c1290c0dafd8.png)

ほとんど、参考にし他キーボードから最小限の構成を持ってきた感じですね。
これを元にPCBを作成しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372816/43ae57e3-ffa8-0c05-8df9-55447be0f7db.png)

後述しますが、これミスってるんですよね...

# PCB基板の発注

PCB基板は皆さんおなじみJLCPCBで発注しました。
初めての注文だったので、かなりいろんな解説サイトを見て進めていきました。
キーボードくらいのサイズともなると、送料の安いところは使えないんですね。これに気付くのにかなり時間がかかりました。とほほ...

送料込みで $22.85でした。日本円にすると3,570円（2024/12/21時点）くらいでした。
皆さんこのくらいなんでしょうか？おすすめの発注方法などあれば教えてください！

# ケースとキーキャップの作成

ケース及びキーキャップは手持ちの3Dプリンターで作成しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372816/f63ab905-0852-5b26-640a-06e2c73ef18f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372816/f9f5f110-81a6-d007-573a-02385d8f67e1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/372816/f8a4d0a8-f7e3-098e-54a7-d2aafc5274e7.png)

デザインのセンスは一切ないので、かなり無骨な仕上がりになりました。これはこれで好き。

# ソフトの書き込み

ProMicroへのソフト書き込みは"QMK MSYS"を使って書き込みました。
今度はキー数が似ているErgoDashを参考にいろいろ試しながら実装していきました。

書き込み方法は以下のサイトを参考にやりました。
https://www.kanepee.jp/diary/?p=215

# キーマップ

キーマップには無限の可能性があります！
実際よくわからないのでひとまず必要なキーを設定していって、使いながら修正していこうと思います。

~~~
/* Qwerty
   * ,------------------------------------------------------------------------------------------.
   * |   Q  |   W  |   E  |   R  |   T  |                    |   Y  |   U  |   I  |   O  |   P  |
   * |------+------+------+------+------+--------------------+------+------+------+------+------|
   * |   A  |   S  |   D  |   F  |   G  |                    |   H  |   J  |   K  |   L  |   ;  |
   * |------+------+------+------+------+---------------------------+------+------+------+------|
   * |   Z  |   X  |   C  |   V  |   B  |   (  |      |   )  |   N  |   M  |   ,  |   .  |   /  |
   * |------+------+------+------+------+------+------+------+------+------+------+------+------|
   * | Shift|  ALt | GUI  | Lower| Ctrl | Space|      | BkSPC| Enter| Raise| DEL  | EISU |   -  |
   * ,------------------------------------------------------------------------------------------.
   */
/* Lower
   * ,------------------------------------------------------------------------------------------.
   * |   !  |   -  |   *  |   +  |   /  |                    |   $  |   ^  |   @  |   &  |  |   |
   * |------+------+------+------+------+--------------------+------+------+------+------+------|
   * |  ESC |   #  |   ~  |   %  |   =  |                    |   <  |   >  |   '  |   "  |   :  |
   * |------+------+------+------+------+---------------------------+------+------+------+------|
   * |  TAB |      |      |   _  |   -  |   {  |      |   }  |   ?  |   \  |   ,  |   .  |   /  |
   * |------+------+------+------+------+------+------+------+------+------+------+------+------|
   * | Shift|  ALt | GUI  | Lower| Ctrl | Space|      | BkSPC| Enter| Raise| DEL  | EISU | TAB  |
   * ,------------------------------------------------------------------------------------------.
   */
/* Raise
   * ,------------------------------------------------------------------------------------------.
   * |   !  |   -  |   *  |   +  |   /  |                    |   F1 |   F2 |   F3 |   F4 |   F5 |
   * |------+------+------+------+------+--------------------+------+------+------+------+------|
   * |   1  |   2  |   3  |   %  |   =  |                    |   F6 |   F7 |   F8 |   F9 |  F10 |
   * |------+------+------+------+------+---------------------------+------+------+------+------|
   * |   4  |   5  |   6  |   0  |  Up  |   [  |      |   ]  |  F11 |  F12 |   ,  |   .  |   /  |
   * |------+------+------+------+------+------+------+------+------+------+------+------+------|
   * |   7  |   8  |   9  | Left | Down | Right|      | BkSPC| Enter| Raise| DEL  | EISU | TAB  |
   * ,------------------------------------------------------------------------------------------.
  */
~~~

最終的に完成したのが

https://twitter.com/Rw7DVtscPX/status/1845529994480791999

欲を出してOLEDをつけた結果、配置の向きを間違えました...
こればっかりは仕方ないですね。ありあわせのOLEDで設計したのがよくなかったです。

これは後々気合で直すか、新しく作る時の教訓として覚えておきます。

# まとめ

初めて１からキーボードを作ったわけですが、「意外と簡単に作れちゃった」というのが率直な感想です。
先人たちの知恵がインターネットにたくさんあったおかげで、躓いても解決の糸口は必ず見つけることができました。
作り始めて完成までもっていった経験があまりない自分ですが、いったん完成まで持っていけたので、自作キーボードを作ってみようと思っている誰かの励みになれればと思います。

# 謝罪
アドベントカレンダーの仕組みがいまいちわかっていなくて白紙のまま投稿されてしまっていました💦
強制的に１枠使ってしまうこととなってしまい申し訳ありません。