この記事は、新作自作キーボードSparrowS v3を作った時の設計と実装について、共有するための記事です。
tl;dr
- 分割キーボード Sparrow62 v1、Sparrow62(+1)v2 の改訂版として、SparrowS v3を作ったよ
- Sparrow62では薄さを求めたところ、硬いキーボードになってしまい、リニアスイッチや、反動が高めのタクタイルスイッチを使うと、衝撃が指に跳ね返っていたのを課題に感じていたよ。この対策に、ガスケットマウントで衝撃を吸収するようにトライしてみたら、予想以上に打鍵感が良くなったよ
- MagicTrackpadを組み込むための最適化として、PCBをその形にして、従来のキーはエクステンションにしたよ
- 左右分割のための、右手のサブMCUとして、CH32V003を採用して、I2Cで接続する形にしたよ。4キー追加パッドもCH32V003を採用したよ。
- キーボードマーケットトーキョー(キーケット)2025で出展したよ!
SparrowS v3とは

私の製作する自作キーボードです。2020年に、Lily58からインスパイアを得たSparrow62を作り、それから改善を続けたv3です。v2の時から、62キーではなかったため、SparrowSとシリーズ名を改めました。
Sparrow62の頃から、キーボードをぺったんこに薄くすることに熱を上げてきました。また、Apple Magic Trackpadと組み合わせて使うのに適した形を求めてきました。



v2では、分割キーボードでもキーキャップを楽しめるような配置に置き換えました。右手の右側はマウスを触るために、右手の左側を膨らませるデザインです。加えて、薄くするために、トッププレート、ロジックボード、ボトムプレートをPCBで厚さを指定して製造しました。
この3代目のキーボードとなります。
薄さを求めた弊害として、指への衝撃が大きい。そしてケースの必要性に気づいた。
v1、v2と作ってきましたが、その頃はタクタイルスイッチを愛用してきました。 タクタイルスイッチは、タクタイルの山の部分まで押せば良く、底まで押すような操作はしなくなります。
一方、国内ではリニアスイッチも人気で、リニアスイッチも楽しんでみたいと思っていました。 v2に取り付けたところ、問題が発生しました。 リニアスイッチは、基本的に、山の感触がなく、底まで打ち切るスイッチです。 底に到達せずに手加減して打つこともできますが、そうはしないのが通常のようです。 薄くした結果、キーボードが打鍵の衝撃をそのまま机に伝えるようになっていました。 そうすると、リニアで底打ちした衝撃がそのまま机から指に跳ね返ってしまい、指を痛める形になりました。 よって、v2までの作りではリニアスイッチを楽しむのは難しいと思いました。
これを吸収するのが「より良いケース作り」であると思いました。 まずはケースを知るために、市販のGH60互換ケースを使ったキーボードを作ることにしました。 それが、Sparrow59C、Sparrow60Cになります。 以下が過去の制作の記事です。
汎用ケースを使って、リニアスイッチを楽しむことができるようになりました。 Durock Black Lotusや、Kailh Deepsea Silent Isletなどのリニアスイッチが好きになりました。
そして、この汎用ケースを使って得た経験から、次に分割キーボードに還元したいと思いました。
Sparrow60C、SparrowDialとポインターデバイス付きキーボードを作ってきました。途中、KeyBallも購入して体験しました。一方、Apple Magic Trackpadの快適さには勝てないと思い、初期のApple Magic Trackpadと組み合わせるコンセプトに戻ってきました。
ガスケットマウントの採用
ガスケットマウントという、スイッチを支えるプレートをケースとネジ止めせず、クッションで受けとめることで打鍵の衝撃を和らげる方法があります。天キーで触ったガスケットマウントキーボードが凄く気持ちよかったのが忘れられません。このガスケットマウントに、3Dプリンタでケースを作ることで、トライすることにしました。
見様見真似でガスケットマウントにトライしてみている pic.twitter.com/ZoQLSEkhI4
— 74th (@74th) 2024年11月24日
PCBに出っ張りを作り、その部分をケースにスポンジを貼り付けて支える形です。 これが思いのほかうまくいきました。
PCBと底面の距離も計算し、なるべく最小限の高さとなるようにしました。 このため、MX互換スイッチと、薄型Kailh Chocスイッチでケースの高さを分けて設計しました。
実際に、薄型のLofree Kailh Ghost(Choc v2)、Durock T1 POM Sunflower、Durock Black Lotus Linearそれぞれのスイッチを付けてみたことろ、指への衝撃が抑えられて非常に良い感じでした。ガスケットマウント方式にすることで、打鍵感がここまで変わるのかと驚きました。
スポンジ素材について、いくつか試しましたが、専用品に落ち着きました。

なお、3DプリンタにはAnkerM5Cを使っています。 Bamboo A1 Miniが登場する前だったのでこの製品なのですが、特に不自由なく使えています。
ケースのネジ止め
あと、ケースのネジ止めについては、インサートナットを使いました。 3Dプリンタケースに直接ネジ穴を掘ることも考えましたが、繰り返し装着するとなると金属製の方が安心です。
インサートナットはAliexpressで500個1,170円ほどで購入しました。

これに、はんだごてで挿入できるこて先(私はPinecilを使っているのでTS100対応のもの)を購入し、利用しました。

ケースの設計はFreeCADで
ケースの設計は全てFreeCADで行いました。使いにくいですが、既に慣れました。

FreeCADを学ぶならば以下の書籍がお勧めです。
FreeCADの入門書を2冊読みました
— 74th (@74th) 2024年10月4日
原田将孝 (著)『FreeCAD モデリングマスタ』https://t.co/ey7M4fyPrh
まずスクリーンショットがmacOS! macOSだと使いにくく感じていたFreeCADをしっかり設定するところからスタート。これは助かる!…
FreeCADにはSpreadsheet(表計算)機能があり、ここで各パラメータを設計し、実際のモデルに埋め込むようにしました。 これにより、高さの微調整がSpreadsheetの数値調整で済むようになり、とても調整しやすくなりました。

薄型ChocとCherryMX互換スイッチ用で、異なるケースを設計したのですが、その差分はこのSpreadsheetで吸収しており、同一の設計ファイルを利用しています。 この機能がなければ、ChocとMX互換スイッチそれぞれのケースの設計はできなかったように思います。
Apple Magic Trackpadへの最適化
v2では、Magic Trackpad用のアタッチメントを用意しました。この時、4キー分のスイッチをはめずに、PCBに被せて使う台を用意していました。

この方法では、アタッチメントの高さを本体と合わせる微調整が難しいのと、Chocスイッチでは高さを合わせるのが難しい課題がありました。 そこで、v3では、Magic Trackpadと被る4キー自体を、オプション部品としました。そのため、右手側がえぐれたようなデザインになります。

ここにスタンドとともに、トラックパッドを置きます。

このようにすることで、別途Magic Trackpad用のスタンドを独立して設計することができました。
このスタンドのデータは以下で公開しています。
これでMagicTrackpadの高さと、キーキャップの高さを合わせることができました。これはChocスイッチにおいて顕著です。
トラックパッドやマウスをこの場所に置かない人に向けて、追加の4キーパッドを用意しています。これを接続すると以下のようになります。

背を低くするためのゴム足を探す
v2ではキーボードの高さを低くするために、底面にはゴムシートを貼り、ゴム足は使いませんでした。
v3でも、高さを低くしたいと思っており、薄くてグリップ力のある素材を探していました。 そこで出会ったのがGRIPLUSです。
本来は楽器用の指の滑り止めテープなのですが、非常にグリップ力が高い上に薄いです。
4隅に小さく貼るようにしました。

横から見ると地面にかなり近い(写真だと布の上に置いているので、ちょっと隙間があるように見えますが)のが分かると思います。

これで薄さをキープしたまま、充分なグリップ力を得ることができました。
MCUはPCBに直接実装
今回作るキーボードは最小限のサイズにしたかったため、マイコンボードを使わず、MCUを直接基板に実装する方針にしたいと考えていました。
SparrowDialと同様に、私は過去の経緯からRP2040を直接実装するのを厭わなくなっているため、私の手で実装して提供するようにしました。
キーケットに向けて、SparrowS v3の左手PCBのRP2040を5枚、職人(私)が手実装した。今回は4枚は一発で動作、1枚はブリッジ1個だけですぐ直せた。
— 74th (@74th) 2025年3月4日
これで合計13枚準備できた。
明日はCH32V003使用の右手PCBを実装する。 pic.twitter.com/4mh3hW5yEB
この実装には、RP2040手はんだ実装位置決めサポート治具を使いました。この治具については以下の記事をご覧ください。
この実装を進めていたところ、半数近くの基板で実装テスト用のファームウェアが動かない、という事態が発生しました。 この原因を調査していたところ、今回実装に用いたパーツ、PCBでは、水晶発振子の安定まで時間がかかることがあるようだと分かりました。 Pico SDKのパラメータを設定したところ、全ての基板が動作するようになりました。
RP2040がハードリセットすると動かない現象がわかったー
— 74th (@74th) 2025年2月14日
問題は水晶発振器だった
RP2040でボードにより「水晶発振器の安定まで時間がかかる」現象があり、PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64 を入れると伸ばせる。これをいれたファームウェアを入れたら動いたー!https://t.co/99zadu7389 https://t.co/gNb55d18RI
これについては別途記事にしています。
MCUの電源保護
左右の接続にはTRRSケーブルを使っていますが、TRRSケーブルは電源の入った状態で抜き差ししてしまうと、一瞬複数の端子が繋がった状態になってしまいます。 これで、MCUを壊してしまうことが懸念とされます。
そこで今回の基板は、MCUの電源の前に、USB電源保護ICであるCH213を配置しました。 電源に対してダイオードとして働き、さらに過電流も防止できます。 なんどかTRRSを抜き差ししてしまいましたが、壊れると言うことはありませんでした。 絶対ないとは言い切れないと思っているため、避けるようにはしましょう。
CH213については、過去に記事にしています。
サブMCUとしてCH32V003の採用
v2では、左手にRP2040を使い、右手はI2C通信のIOエキスパンダーであるMCP23017を使って、左右のキーボードの両方にMCUがなくても良いようにしました。
このキーボードではIOエキスパンダーの代わりに、より安価(40円)なMCUであるCH32V003を使い、I2Cスレイブデバイスとして、キーマトリックスの読み取りを行うようにしました。
行ごとに1バイト、各バイトに列ごとに1bitごとに、スイッチが押されていると1が入ります。 これをI2C経由で取得できるように、簡単にファームウェアを記述しました。
ファームウェアのコードは以下にあります。
このI2Cデバイスを読み取るように、QMK Firmwareで実装しました。
QMK Firmwareで、matcix.cにmatrix_scan_custom関数として、カスタムマトリックスのロジックを書きました。 カスタムマトリックスの実装というと難しそうに聞こえますが、この関数は行の数の数値の配列に、列毎に1/0のbitを挿入していけばよいものです。 右手からも同じ形のデータを渡しているので、右手の行番号になるようにビットシフトして格納しているだけです。
// 右手側のMatrix uint8_t read_buf[ROW_SIZE] = {0}; i2c_status_t status = i2c_read_register(RIGHT_I2C_ADDRESS << 1, BASE_I2C_REGISTER_ADDRESS, read_buf, ROW_SIZE, I2C_TIMEOUT); if (debug) { dprintf("right I2C i2c_status_t:%d value:0x%02X%02X%02X\n", status, read_buf[0], read_buf[1], read_buf[2]); } if (status == I2C_STATUS_SUCCESS) { for (int row = 0; row < ROW_SIZE; row++) { scaned_matrix[row] |= ((matrix_row_t)read_buf[row] << (RIGHT_COLS_START)); } }
左手のマトリックスは全て実装する必要がありますが、そんなに難しい物ではありません。
これにより、右手キーボードのMCUをCH32V003でまかなうことができました。
エンドゲームに辿り着いた!
前に述べたとおり、ガスケットマウント採用により、かなり打鍵感がソフトになりました。おかげで、このキーボードで強めのスイッチを楽しく事ができています。
また、薄型スイッチKailh Choc v1/2対応したことで、Lofree x Kailh Ghostも使うことができ、このスイッチの打鍵感が非常に良くて、日々のタイピングが楽しくなりました。今では、週次でスイッチやキーキャップを交換して楽しんでいます。
v2の時からのトラックパッドとトラックボールを併用するスタイルは変わりません。 普段の操作はトラックパッドにさっと手を伸ばし、CAD操作や作図ではトラックボールを使います。 トラックパッドの方が操作の表現力が高く、普段のブラウジングには適しているように思います。 右手の右側のすぐ届くところにトラックボールがあり、細かい操作や連続した操作ではトラックボールに利があります。
実はこの四角いケースは、MacBookProのキーボードの上に載せても、キーに干渉しないサイズになっています。 会社のオフィスに出社するときには、トラックパッドを持ち込まずにキーボードの上に載せて使う、いわゆる尊師スタイルで利用しています。 この狙いもうまくはまりました。
完成写真
CherryMX互換スイッチに、トラックパッドを組み合わせた姿。

Chocスイッチに、トラックパッドを組み合わせた姿。

CherryMX互換スイッチに、4キー追加パッドを組み合わせた姿。Enterキーなどのアイコニックなキーキャップが使えます。

キーケット2025にて展示、販売
この新作キーボードを、キーケット2025にて展示、販売しました。
これまで述べてきた特徴を説明して、実際に打鍵して感じてもらうことができました。

キーケット2025の出展の振り返りについては別途記事にしています。
Boothにて通販中
このキーボードキットはBoothにて販売中です。よければゲットしてみてください。
私の方ではんだ実装が必要な部品を全て実装した商品も販売しております。


