10 cm以内PCBを使った自作キーボードを作ったら、好みのキーレイアウトが変わった話


https://adventar.org/calendars/7529

この記事はキーボード #1 Advent Calendar 2022 の15日目の記事です。

昨年に続き、自作キーボード関連のアドベントカレンダーが多くあります。

もう１箇所でも立っているので、機会があれば、お読みください。


https://qiita.com/advent-calendar/2022/custom-keyboard

さて、昨日は、タツタニコブさんの
キーマップの試行について〜2022年版〜
についての記事でした。

https://zenn.dev/tatsutanicov/articles/4767cb82fdc66d

7sPro（独自30%キーマップ/コンボも乗ったよ！2022）を30％キーボードとして、使用されていると聞き、同じ30％キーボードの住人（私は36キーのcool536やcool936を常用しています）としては、同好の方がいて、心強いです。そして、記事では、30％沼へのわかりやすい入り方を、昨年の40％沼に引き続き書かれています。この記事で、同好の方が増えるのを、私も歓迎します。

それでは、私の話をさせていただきます。
ElecrowやJLCPCBでは、四方が10cm以内の大きさのPCBを安価（１〜２ドル）で製造してくれます。
いざ、その大きさでは、マクロパッドは作れるが、普通のキーボード（ここでは、アルファベット26文字の入力ができるものを普通と考えます）は難しいと思っていました。
しかし、調べてみると、かぎざら屋さんのMiniAxeと言う素晴らしい36キーの分割キーボードが、この大きさの条件を満たしていることがわかりました。


https://kagizaraya.jp/products/miniaxe?variant=35404757303445

<br>
そこで無謀にも、そのようなものを自分でも作れないかと設計したのが、cool640です。
<br>

<blockquote class="twitter-tweet" data-theme="dark"><p lang="ja" dir="ltr">PCBが100mmX100mm内の大きさで、<a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> が作れるかなと思い、挑戦しました。先日はPCBが150mmX100mmで <a href="https://twitter.com/hashtag/cool650?src=hash&amp;ref_src=twsrc%5Etfw">#cool650</a> になったので、今回は <a href="https://twitter.com/hashtag/cool640?src=hash&amp;ref_src=twsrc%5Etfw">#cool640</a> として、二つをケーブルで繋ぐと格子配列の分割になります。新しいこととして、<a href="https://twitter.com/hashtag/promicro?src=hash&amp;ref_src=twsrc%5Etfw">#promicro</a> と <a href="https://twitter.com/hashtag/%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4Pico?src=hash&amp;ref_src=twsrc%5Etfw">#ラズパイPico</a> に対応してみます。 <a href="https://t.co/dft7Hg7RUM">pic.twitter.com/dft7Hg7RUM</a></p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1496460445955280901?ref_src=twsrc%5Etfw">February 23, 2022</a></blockquote>

<br>
後発ゆえに、pro microのみで動くのであれば、目新しさもないと思いました。
そこで、cool836picoで使用実績のある、raspberry pi Picoとpro microの両方で動くものにしようと思う設計しました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">pro micro？　Raspberry Pi Pico？<br>お好きな方でいいですよ。<br>これが、<a href="https://twitter.com/hashtag/cool640?src=hash&amp;ref_src=twsrc%5Etfw">#cool640</a> です。<a href="https://t.co/6646MPCV7N">https://t.co/6646MPCV7N</a><a href="https://twitter.com/hashtag/mechanicalkeyboard?src=hash&amp;ref_src=twsrc%5Etfw">#mechanicalkeyboard</a> <a href="https://twitter.com/hashtag/%E4%BF%BA%E3%82%AD%E3%83%BC?src=hash&amp;ref_src=twsrc%5Etfw">#俺キー</a> <a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> <a href="https://t.co/XfM6lAE8hE">pic.twitter.com/XfM6lAE8hE</a></p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1502104429767852035?ref_src=twsrc%5Etfw">March 11, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


イメージ的にMCU部分は、pro microがスイッチ2個分、パイピコが3個分のスペースで置けるだろうし、その間にTRRSジャック一つ分の余裕があれば、何とかなるかなと考えました。
そうなると、キー数は横5キーで、縦4キーの格子配列が適当だろうと、徐々に方針がさだまってきました。
ある夜に散歩しながら、cool640の方向性を詰めていきました。
<br>
方向性が定まれば、あとは設計です。Keyboard Layout Editerのサイトで、片手分20キーの格子配列を作りました。そして、jsonファイルを書き出して、kicadのプラグインで読み込むと、あっという間に配列されたものができました。
ちょっと仕事で休みをもらっていた時期でしたので、すぐに作業に取り掛かることができました。
<br>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">10cmX10cm以内のPCBで、<a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> できるかなという課題の答えの一つです。<a href="https://twitter.com/hashtag/%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4pico?src=hash&amp;ref_src=twsrc%5Etfw">#ラズパイpico</a> か <a href="https://twitter.com/hashtag/promicro?src=hash&amp;ref_src=twsrc%5Etfw">#promicro</a> のどちらかで動くよう配線した、<a href="https://twitter.com/hashtag/cool640?src=hash&amp;ref_src=twsrc%5Etfw">#cool640</a> になります。二つをケーブルで繋いで分割キーボードになる予定。まずは基板届いたので、先に届いていたアクリルと仮組みしました。 <a href="https://t.co/L4Bbng5rMJ">pic.twitter.com/L4Bbng5rMJ</a></p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1501177149167861761?ref_src=twsrc%5Etfw">March 8, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<br>
<br>
その後、それに合わせたアクリルのスイッチプレイヤーとボトムプレート、カバープレートを設計して発注しました。
<br>
<br>
cool640の目標は、私が自作キーボードを作り始めた時に、とても重宝したSU120のように、安価で誰でも好きに発注できる自作キーボードの基板にしたいと思っていました。
それゆえ、あまり頒布することがメインでなく、各自がcool640のガーバーデータを発注して、自由にcool640を作ってもらえればいいかなと思っています。
<br>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/cool640?src=hash&amp;ref_src=twsrc%5Etfw">#cool640</a> が届いて、動作確認ができたら、データはgithub上に置いて、「ご自由に発注してどうぞ」にしたいと思っています。最初の自作の時、<a href="https://twitter.com/hashtag/SU120?src=hash&amp;ref_src=twsrc%5Etfw">#SU120</a> によって <a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> の楽しさが増したので、その形に倣えたらいいなと思っています。</p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1497045745970540550?ref_src=twsrc%5Etfw">February 25, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<br>
それでも発注することのハードルが高いと思う人のため、boothでの頒布もしています。
値段の方は、手間賃を含むと、1枚500円になってしまいますね。
 <br>


https://mki0002ozlet.booth.pm/items/3729914

 <br>
cool640を作って使ってみると、「案外、オルソスタッガードって、いいかも」と思うようになりました。
普段は、ロウスタッガードの自作キーボードを主に使っていたのですが、cool640を作り、ちょっと使っていたら、運指が慣れたようです。
cool640の良いところは、製造コストが安価なことです。
そのため、派生機種を生み出しやすかったです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/cool640?src=hash&amp;ref_src=twsrc%5Etfw">#cool640</a> のPCBを連結する基板（右下のもの）を使うことで、40％一体型の <a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> になります。<a href="https://twitter.com/hashtag/QMK_Firmware?src=hash&amp;ref_src=twsrc%5Etfw">#QMK_Firmware</a> での総当たりマトリクスを採用することで、pro micro一つで動きます。<a href="https://twitter.com/hashtag/cool640x2?src=hash&amp;ref_src=twsrc%5Etfw">#cool640x2</a> となります。<a href="https://twitter.com/hashtag/%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4%E3%83%94%E3%82%B3?src=hash&amp;ref_src=twsrc%5Etfw">#ラズパイピコ</a> による <a href="https://twitter.com/hashtag/PRK_Firmware?src=hash&amp;ref_src=twsrc%5Etfw">#PRK_Firmware</a> での動作確認はそのうちに。 <a href="https://twitter.com/hashtag/raspberrypipico?src=hash&amp;ref_src=twsrc%5Etfw">#raspberrypipico</a> <a href="https://t.co/5gMo1oAi4M">pic.twitter.com/5gMo1oAi4M</a></p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1528572269991440384?ref_src=twsrc%5Etfw">May 23, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<br>
<br>
cool640がある程度、満足いく結果になると、根が単純なので、「他の配列でも10cm以内のPCBで作ることができるんじゃないか」と考え始めました。
<br>

そこで設計したのが、cool536です。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">昨日、思いつきで設計しました。先ほど、<a href="https://twitter.com/hashtag/elecrow?src=hash&amp;ref_src=twsrc%5Etfw">#elecrow</a> に発注をかけました。先週も、<a href="https://twitter.com/hashtag/cool445?src=hash&amp;ref_src=twsrc%5Etfw">#cool445</a> と名付けたものを発注して、今週は、<a href="https://twitter.com/hashtag/cool536?src=hash&amp;ref_src=twsrc%5Etfw">#cool536</a> となる <a href="https://twitter.com/hashtag/100mmX100mm%E4%BB%A5%E5%86%85%E3%81%AEPCB?src=hash&amp;ref_src=twsrc%5Etfw">#100mmX100mm以内のPCB</a> で作る <a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> です。カラムスタッガードに挑戦です。夏休みを満喫できそうです。 <a href="https://t.co/3cqAOGAGIp">pic.twitter.com/3cqAOGAGIp</a></p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1548638040725172224?ref_src=twsrc%5Etfw">July 17, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



カラムスタッガードに挑戦したため、配置場所の関係上、パイピコを載せるのが難しいと思い、pro microだけで、リバーシブルの基板となりました。
パイピコを外した分、空いたスペースに何か入れようと思った結果、現在のような、ロータリーエンコーダーが2個または、OLEDディスプレイ、追加基板を使ってPIM447trackballを追加できるような使用となりました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Title:動いた！　ボールが動いたよ！　○○えもん！<br>Keyboard:cool536 with trackball &amp; knob<br>Keyswich: JWK JWICK フルナイロンT1タクタイルスイッチ<br>Keycap:白玉キーキャップ（へちょあまの工房＠たねやつ支店）<a href="https://twitter.com/hashtag/%E4%BF%BA%E3%82%AD%E3%83%BC?src=hash&amp;ref_src=twsrc%5Etfw">#俺キー</a> <a href="https://twitter.com/hashtag/cool536?src=hash&amp;ref_src=twsrc%5Etfw">#cool536</a> <a href="https://twitter.com/hashtag/KEEB_PD?src=hash&amp;ref_src=twsrc%5Etfw">#KEEB_PD</a> <a href="https://twitter.com/hashtag/KEEB_PD_R116?src=hash&amp;ref_src=twsrc%5Etfw">#KEEB_PD_R116</a> <a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> <a href="https://twitter.com/hashtag/PIM447?src=hash&amp;ref_src=twsrc%5Etfw">#PIM447</a> <a href="https://t.co/8qRGhjvJqs">pic.twitter.com/8qRGhjvJqs</a></p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1576512933760466947?ref_src=twsrc%5Etfw">October 2, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<br>
ちょうど、cool536設計のちょっと前に、cool650にロータリーエンコーダーを載せたり、cool640にロータリーエンコーダーを載せたりと、私の中でロータリーエンコーダー祭りが開かれていました。

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Title:New keyboard２<br>keyboard:cool650R<br>keycaps:NP PBT Keycaps<br>keyswitch:Invry x DROP Holy Panda<a href="https://twitter.com/hashtag/KEEB_PD?src=hash&amp;ref_src=twsrc%5Etfw">#KEEB_PD</a> <a href="https://twitter.com/hashtag/KEEB_PD_R93?src=hash&amp;ref_src=twsrc%5Etfw">#KEEB_PD_R93</a> <a href="https://twitter.com/hashtag/%E4%BF%BA%E3%82%AD%E3%83%BC?src=hash&amp;ref_src=twsrc%5Etfw">#俺キー</a> <a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> <a href="https://twitter.com/hashtag/cool650?src=hash&amp;ref_src=twsrc%5Etfw">#cool650</a> <a href="https://twitter.com/hashtag/cool650R?src=hash&amp;ref_src=twsrc%5Etfw">#cool650R</a> <a href="https://t.co/PxCwXcv8Am">pic.twitter.com/PxCwXcv8Am</a></p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1518174638500573184?ref_src=twsrc%5Etfw">April 24, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">GW最終日、前からの課題だった <a href="https://twitter.com/hashtag/cool640?src=hash&amp;ref_src=twsrc%5Etfw">#cool640</a> の総当たりマトリクスの実験用配線（赤基板）と、ロータリエンコーダを5つ付けた <a href="https://twitter.com/hashtag/cool640R5?src=hash&amp;ref_src=twsrc%5Etfw">#cool640R5</a> （紫基板）のハンダ付を終えました。ファームウェアは、次の週末の宿題です。前者は「工夫次第でpro micro一つで動くかも」と思ったものです。<a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> <a href="https://t.co/DAl291r6Ho">pic.twitter.com/DAl291r6Ho</a></p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1522118081551618049?ref_src=twsrc%5Etfw">May 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<br>
<br>
結局、ピン数の関係で、cool640のロータリーエンコーダーは難しいとわかり、諦めました。
cool650はロータリーエンコーダーも装着可の基板になりました。
<br>

ずっと仕事場でメインで使っているキーボードは、cool943Sという2年前にSU120で最初作って、その後、kicadで設計した40％分割キーボードです。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">cool943Sは令和3年1月からSU120版を最初に、4月から自作PCB版を職場用で使っています。11ヶ月ですね。<a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> <a href="https://twitter.com/hashtag/cool943S?src=hash&amp;ref_src=twsrc%5Etfw">#cool943S</a> <a href="https://t.co/AVPrCr6xVL">https://t.co/AVPrCr6xVL</a> <a href="https://t.co/epyWPKkHXT">pic.twitter.com/epyWPKkHXT</a></p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1462234626882093062?ref_src=twsrc%5Etfw">November 21, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<br>
長いこと、ロウスタッガードから離れられませんでした。


それが、10cm以内PCBで作る自作キーボードを目指した結果、「cool640でオルソスタッガードもいけるかも」と思うようになり、遂にcool536で「カラムスタッガードもいいかな」という境地に達しました。
最近、よく使っているのは、左右両方にPIM447trackballをつけたcool536です。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">左右それぞれのconfig.hに#define MASTER_LEFTと#define MASTER_RIGHTと変えたファームウェアを入れた <a href="https://twitter.com/hashtag/cool536?src=hash&amp;ref_src=twsrc%5Etfw">#cool536</a> です。ケーブルを繋いだ側のトラックボールが操作できます。<a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> <a href="https://t.co/ljtG2gHtbn">pic.twitter.com/ljtG2gHtbn</a></p>&mdash; m.ki（エム キ） (@0002ozlet) <a href="https://twitter.com/0002ozlet/status/1595283952582815745?ref_src=twsrc%5Etfw">November 23, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

両方のボールを同時に動かすことができると面白いのですが、私の知識、技術ではよくわかりません。


自作ーボードでここまで、色々と（遊ぶことが）できたのは、n年目の初心者である私にとって、界隈の先人たちが残してくれた知識や技術のおかげです。
ありがとうございます。
これからもお世話になります。

<br>
まとまりませんが、このへんで。


明日は、素晴らしい自作キーボードを多く設計されているyfukuさんの「Chocな何か」です。とても楽しみです。

この記事は、cool536とMacBookPro、iPad Proで書きました。