

Eugeo
6x4x2 through-hole ortholinear hot-swap keyboard derived from Lumberjack
- Size
- 284.9 × 75.4 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 143
- Nets
- 106
- Pads
- 608
- Tracks, vias
- 629, 95
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 6 Oct 2026
- Updated
- 17 Oct 2026
Overview
Eugeo is an open-source printed circuit board by konifar, from the konifar/eugeo repository on GitHub, published under the MIT licence. It is a 2-layer board of 284.9 × 75.4 mm with 143 parts on 106 nets, routed with 629 tracks and 95 vias.
It is built around the RP2040, W25Q16JVSSIQ and MCP1700-3302E/TT, with the USBLC6-2SC6 among its other parts. Its parts include 50 diodes, 15 capacitors, 9 resistors, 4 ICs and 2 switches. It belongs with the keyboards and input boards and the RP2040 boards of this library.
Main components
4RP2040
LQFN-56(7x7)12bit 133MHz 30 LQFN-56(7x7) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)W25Q16JVSSIQ
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 10uA 133MHz 16Mbit 2.7V~3.6V 20 Years 3ms SPI SOIC-8-208mil NOR FLASH ROHSWinbondNOR FLASHMCP1700-3302E/TT
SOT-23-40℃~+125℃@(Tj) 1 1.6uA 178mV@(250mA) 250mA 3.3V 44dB@(100Hz) 6V Fixed Over Temperature Protection、Short Circuit Protection Positive SOT-23 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMicrochip TechnologyVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)
README
README.mdeugeo
6 キー × 4 行 × 2 ブロック(48 キー)のスルーホール・オーソリニア 40% キーボード PCB です。 Lumberjack(Paul James 作、MIT License)をベースに、行を 1 段減らし、Kailh の MX 用ホットスワップソケットに対応させました。


| 真上 | 背面 | 側面(6°) |
|---|---|---|
![]() | ![]() | ![]() |
組み上がりの画像のスイッチとキーキャップは、大きさと位置の目安として置いた簡易形状です(scripts/preview_models.py)。
Lumberjack からの変更点
| Lumberjack Rev 1.8 | eugeo Rev 1.0 | |
|---|---|---|
| 配列 | 5 × 12(60 キー) | 4 × 12(6 × 4 × 2、48 キー) |
| スイッチ | はんだ付け | Kailh MX ホットスワップソケット(裏面) |
| マトリクス | 6 行 × 10 列 | 8 行 × 6 列(後述) |
| USB-C | 左上・裏面 | 中央上・裏面(ソケットとの干渉回避) |
| 外形 | 60% トレイマウントケース互換 | 284.9 × 75.35 mm。プレートと基板を M2 穴 8 箇所でサンドイッチし、プレートのタブでガスケットマウント |
| ドーターボード用コネクタ (J3-J5) | あり | 削除 |
| 中央カバー | 2 mm アクリル、M2 10 mm スペーサー 4 本 | 同じ構成(ネジはカバーの四隅) |
| マイコン | ATmega328P-PU(DIP)+ V-USB(USB 1.1 Low Speed) | RP2040 + 2 MB QSPI フラッシュ(USB Full Speed、UF2 書き込み) |
| 電源 | USB 5 V 直結 | MCP1700 で 3.3 V(TO-92) |
| 書き込み | ISP ヘッダ(2x3) | BOOT ボタン + USB(UF2)。ISP ヘッダは不要になったので削除 |
マイコンまわりの表面実装部品(RP2040、フラッシュ、0402 のコンデンサなど)は JLCPCB に実装してもらい、それ以外はスルーホール部品のまま残しています。 上部の左右に 1 個ずつの LED、水晶(HC49)、セラミック・電解コンデンサ、LDO(TO-92)、アキシャル抵抗、タクトスイッチ、ダイオード列が中央に並ぶ、Lumberjack の「部品を見せる」見た目を踏襲しています。
マトリクス
左右のブロックで行を分け、列を共有させた 8 行 × 6 列です。 左右の対称位置の列(左 C0 と右 C11 など)を基板下端の 1 本の配線で共有するので、ROW の配線が MCU をまたがずに済みます。 RP2040 の左辺のピンから左ブロックの行・列 3 本・LED1、右辺のピンから右ブロックの行・列 3 本・LED2 を出し、下辺は水晶と RUN、上辺は QSPI フラッシュと USB に使っています。
| 物理位置 | マトリクス |
|---|---|
| 左ブロック (row r, col c) | ROW r, COL c |
| 右ブロック (row r, col 6+j) | ROW r+4, COL 5-j |
| 設定 | 値 |
|---|---|
| MATRIX_ROW_PINS | GP3, GP4, GP5, GP6, GP26, GP25, GP24, GP23 |
| MATRIX_COL_PINS | GP9, GP10, GP11, GP20, GP19, GP18 |
| DIODE_DIRECTION | COL2ROW |
| LED1 (赤) / LED2 (緑) | GP1 / GP28(上部の左右) |
| BOOT ボタン | QSPI_SS(RP2040 標準の BOOTSEL。1k 経由で GND に落とす) |
ファイル構成
| パス | 内容 |
|---|---|
eugeo.kicad_pro / .kicad_sch / .kicad_pcb | KiCad 9 プロジェクト |
symbols/, footprints/eugeo.pretty/ | プロジェクト専用シンボル・フットプリント(ホットスワップソケット、USB-C、M2 穴) |
plates/ | スイッチプレート(ガスケット用タブ付き、左右共通で 2 枚注文)、中央カバー、ボトムプレートの KiCad データと DXF |
case/ | Mojo60 風の丸いガスケットマウントケース(下トレイ eugeo-case-bottom + 上フレーム eugeo-case-top)と中央カバーの STEP / STL |
foam/ | プレートフォーム・ケースフォーム・ガスケットパッドの DXF と原寸 PDF |
lasercut/yushakobo/ | 遊舎工房レーザー加工サービス用の SVG(中央カバー / スイッチプレート / フォーム) |
jlcpcb/ | JLCPCB 実装用 BOM / CPL(表面実装部品とホットスワップソケット) |
jlcpcb/full/ | USB-C とスルーホール部品まで JLCPCB に実装してもらう場合の BOM / CPL |
gerbers/*.zip | 製造用ガーバー(PCB、プレート、ボトム) |
firmware/qmk/keyboards/eugeo/ | QMK 用キーボード定義とキーマップ(default / via) |
firmware/*.uf2 | ビルド済みファームウェア |
scripts/ | 回路図・基板・裏面アート(stump_art.py)を生成するスクリプト一式 |
生成手順
回路図と基板は scripts/design.py を唯一の定義として生成しています。
部品配置やネットを変えるときは design.py を編集して再生成してください。
FREEROUTING_JAR=/path/to/freerouting-2.1.0.jar scripts/build_all.shgen_schematic.pyで回路図を生成し、check_netlist.pyでdesign.pyとネットを照合build_pcb.pyで部品配置と、キー部分・ダイオード列・USB 端子・RP2040 まわりの配線を引く。RP2040 は電源ピンをパッドの内側の +3V3 リングでまとめ、QSPI・水晶・パスコン・各ピンの引き出しまでを手配線しているroute.shで残り(引き出した先から各部品まで)を Freerouting 2.1.0 で自動配線cleanup_dangling.pyで余った配線を削除し、fill_zones.pyで表裏の GND ベタを流し、stump_art.pyで裏面のアートを描く- DRC(回路図との整合チェック込み)
Freerouting の結果は実行ごとに変わり、まれに未配線が残ります。その場合は build_all.sh を再実行してください。
Freerouting 2.1.0 は Java 21 で動きます(2.2 以降は Java 25 が必要)。
初回起動時にできる設定ファイル(macOS では $TMPDIR/freerouting/freerouting.json)はテレメトリが有効なので、allow_telemetry を false にしておくことを勧めます。
製造データは次のコマンドで出力します。
scripts/export_fab.sh製造(JLCPCB)
2026-10-06 に JLCPCB / JLC3DP の見積もりページへアップロードし、次のとおり受け付けられることを確認しました(カート投入・注文はしていません)。
| 部品 | ファイル | JLCPCB の認識 | 見積もり(参考) |
|---|---|---|---|
| PCB | gerbers/eugeo.zip | 2 層、284.9 × 75.35 mm | 5 枚 ¥2,269 + 送料 ¥1,536 |
| スイッチプレート | gerbers/eugeo-plate.zip | 2 層、113.45 × 75.35 mm。外形レイヤーにスイッチ穴 24 個と M2 穴 4 個(ガスケット用タブを付ける前の版) | 5 枚 ¥630 |
| ケース | case/eugeo-case.step | 302.9 × 93.4 × 29.9 mm、198.09 cm³(ふちを上げる前・一体型の版) | 9600 Resin 白 1 個 ¥2,978 + 送料 ¥1,139 |
PCB の注文設定は既定値(FR-4、1.6 mm、HASL)のままで問題ありません。色は好みで変えてください。
スイッチプレートは銅箔のない基板として注文します。JLCPCB の 2D プレビューでは穴が描かれませんが、Gerber Viewer の Layers 表示で外形に穴が入っていることを確認できます。左右共通なので 2 枚以上あれば足ります。
ボトムプレート(gerbers/eugeo-bottom.zip)はケースを使わない場合だけ必要です。
ケースは JLC3DP の 3D Printing で case/eugeo-case-bottom.step と case/eugeo-case-top.step(または .stl)の 2 つをアップロードし、素材に SLA レジン(9600 Resin など)を選びます。
最大造形サイズ(9600 Resin は 780 × 780 × 530 mm)には十分収まります。
表面実装部品とソケットの実装を JLCPCB に頼む
RP2040 まわりの表面実装部品(表面)とホットスワップソケット 48 個(裏面)を JLCPCB の PCBA で実装し、残りのスルーホール部品は自分ではんだ付けする想定です。 表裏両面の実装になるので Standard PCBA を選び、Assembly Side は Both Sides にして次のファイルをアップロードします。
| ファイル | 内容 |
|---|---|
jlcpcb/eugeo-bom.csv | ソケット(LCSC C41430893)と表面実装部品(RP2040 C2040、W25Q16JVSSIQ C131025、USBLC6-2SC6 C7519、0402 のコンデンサ・抵抗。R7 / R8 / C12 / C13 / U4 は裏面) |
jlcpcb/eugeo-cpl.csv | 実装座標(ガーバーと同じ原点)。ソケットは本体中心・裏面・回転 0、表面実装部品は KiCad の部品位置 |
2026-10-08 に実際にアップロードして確認した結果です(カート投入・注文はしていません)。
- ガーバー: 2 層、284.9 × 75.35 mm として受け付け。Standard PCBA では JLCPCB が上下に 5 mm の捨て基板(エッジレール)を付けるので、届いた基板はレールを折って外す(有料の Depanel オプションで外してもらうこともできる)
- BOM: 7 品目すべてが LCSC 部品に一致(RP2040 C2040、W25Q16JVSSIQ C131025、USBLC6-2SC6 C7519、0402 のコンデンサ・抵抗、ソケット C41430893)
- 部品配置プレビューで、RP2040・フラッシュ・USBLC6 の 1 番ピンとリードがフットプリントに合うことを確認。KiCad の角度のままではフラッシュ(SOIC-8、表)と USBLC6(SOT-23-6、裏)が 90° ずれていたので、
scripts/export_jlc_pcba.pyのROT_OFFSETで補正済み。USBLC6 は 180° 間違えると GND と VBUS が入れ替わるので、部品を変えたときは必ずプレビューで確かめる - ソケットの回転は 2026-10-06 に確認済み(突起が φ3.05 穴に、端子がパッドに重なる)
- 見積もり: 5 枚で ¥18,706(PCB ¥2,490、PCBA ¥16,215。うち初期費用 ¥8,117、ステンシル ¥2,607、部品 ¥3,406)、送料別
Kailh 純正ソケット(C5184526)にしたい場合は scripts/export_jlc_pcba.py の LCSC を書き換えてください。
すべての部品の実装を JLCPCB に頼む
USB-C とスルーホール部品(ダイオード 48 本、抵抗、コンデンサ、水晶、レギュレータ、タクトスイッチ、LED)まで JLCPCB に付けてもらう場合は、jlcpcb/ の代わりに jlcpcb/full/ をアップロードします(python3 scripts/export_jlc_pcba.py --full で生成)。はんだ付けは不要になり、届いたらスイッチを挿すだけです。
2026-10-08 にアップロードして確認した結果です(カート投入・注文はしていません)。
- BOM: 22 品目すべてが LCSC 部品に一致し、在庫あり
- スルーホール部品の座標は KiCad の原点(1 番ピン)ではなくパッドの中心にしている。USB-C は SMD なので部品位置のまま
- 部品配置プレビューで向きを確認。JLCPCB のモデルでは 3 mm LED のカソードと USB-C の差し込み口が逆向きだったので、
ROT_OFFSETで 180° 補正済み - 見積もり: 5 枚で ¥27,679(PCB ¥2,490、PCBA ¥25,188。うち初期費用 ¥8,117、ステンシル ¥2,607、部品 ¥6,949、フィーダー ¥1,954、手はんだ ¥569、手作業実装 ¥1,989、治具 ¥2,607)、送料別。表面実装部品とソケットだけの場合より ¥8,973 高い
- コンデンサ C6 / C7(C1620326)は単価が高く在庫も少なめ(確認時 34 個)、レギュレータ U3(C511277)も在庫 349 個。注文時に在庫切れなら同等品に差し替える
裏面のデザイン
基板の裏面は「凍てついた切り株」がテーマです(scripts/stump_art.py、build_all.sh の中で自動生成)。
-
裏返して左側(表から見て右ブロックの 1 段目と 2 段目の間)に、ケース背面の刻印と同じ Futura の「EUGEO」ロゴを大きく入れている。文字の高さ 7.5 mm、両側に細い線と丸を添える。文字の輪郭は
scripts/logo_outline.pyでscripts/logo_eugeo.jsonに書き出したもの -
中央に年輪・樹皮・干割れのある切り株をシルクで描き、左右の端に向かって霜の結晶(シダ状の霜)が伸びる
-
キーの並ぶ部分にはシルクの雪の結晶を散らす
-
大きめの雪の結晶 7 個はソルダーレジストの開口で、GND ベタの銅がそのまま(HASL なら銀色に)見える。配線・ビア・穴のない GND ベタの上にだけ置く
-
シルクはパッド・穴・既存の文字の周りで自動的に切り取り、DRC の警告が出ないようにしている
レジストの色は青(Blue)を勧めます。白いシルクと銀色の結晶が氷のように見えます。
ケース
Mojo60 を意識した、角と上下のふちを大きく丸めたガスケットマウントのケースです。プレートの中ほどの高さで、下トレイと上フレームの 2 つに分かれています。

| 項目 | 値 |
|---|---|
| 外形 | 302.9 × 93.4 mm、高さ 手前 23.1 mm / 奥 32.9 mm |
| 傾斜 | 6° |
| 角の丸み | 平面 R12、上面のふち R6.5、底面のふち R4.5 |
| ふち | プレート上面から 6.5 mm 上(スイッチの上部が隠れ、キーキャップはその上に出る高さ) |
| 基板と壁のすき間 | 1.0 mm(キーキャップと壁の間は約 1.1 mm) |
| 底面 | 肉抜きして、幅 7 mm のふちで接地 |
| 分割 | プレートの厚さの中央(基板上面から 4.25 mm)で上下に分割。下トレイ 25.2 mm、上フレーム 7.3 mm |
| 刻印 | 奥の壁に「EUGEO」の銘板(後述) |
刻印
奥の壁の USB-C の横(背面から見て右)に、銘板風の刻印を入れています。 USB-C の切り欠きと同じ高さ 8.5 mm の長円を 0.6 mm 掘り下げ、Futura の「EUGEO」(文字高さ約 4.4 mm、字間広め)と両端の小さな鋲を元の壁面の高さで残しています。 USB-C の切り欠きと形・高さを揃えて、背面の 2 つの要素が並んで見えるようにしました。

文字・フォント・位置・深さは scripts/case.py の BADGE_* 定数で変えられます。
寸法は scripts/case.py の先頭にある定数で変えられます。再生成の手順は次のとおりです。
uv venv --python 3.12 .venv && uv pip install --python .venv/bin/python build123d
.venv/bin/python scripts/case.py
kicad-cli pcb export step --subst-models -o /tmp/eugeo-pcb.step eugeo.kicad_pcb
.venv/bin/python scripts/check_case_fit.py /tmp/eugeo-pcb.step # 基板・部品・プレートとの干渉チェックガスケットマウント
左右のスイッチプレートの外周にタブ(幅 10 mm、外へ 5 mm)が 5 本ずつあり、ケースの壁の溝の中で上下から PORON のパッドに挟まれています。 基板はスペーサーでプレートにぶら下がっていて、ケースのどこにも触れません。打鍵の力はパッドで受けるので、たわみと音がやわらかくなります。
| 項目 | 値 |
|---|---|
| タブ | 1 枚のプレートに奥 2 本・手前 2 本・外側 1 本(左右で計 10 本)。左右共通の形で、右側は裏返して使う |
| パッド | 3 mm PORON を 10 × 4 mm に切ったもの 20 個(タブの上下に 1 個ずつ)。溝の中では 2.2 mm に縮む(約 27%) |
| 溝 | タブより左右・先端に 0.5 mm ずつ大きい。高さはプレート 1.5 mm + パッド 2.2 mm × 2 |
| 基板のすき間 | 壁とは 1 mm、ケースの底とは 5 mm(ケースフォームとの間は約 0.15 mm) |
| 上下の固定 | M2×10 なべネジ 8 本を底から通し、上フレームに埋めた M2 ナットで締める |
scripts/check_case_fit.py で、基板・部品・プレート・タブがケースに当たらないことと、10 本のタブすべてで上下のパッドの厚みが確保されていることを確かめています。

組み立て
レジンには熱圧入インサートが使えないため、上下のケースは底からネジで留めます。
- 基板の上面の M2 穴 8 か所(H1〜H8)に M2 3.5 mm のメス-メススペーサーを立て、基板の裏から M2×3 で留める
- スイッチをプレートにはめ、基板のソケットに差し込み、プレートの上から M2×3 でスペーサーに留める(右のプレートは左と同じものを裏返して使う)
- 中央カバーを付ける(後述)
- 上フレームのナット穴(下面)に M2 ナットを 8 個入れる。抜けやすい場合はマスキングテープか少量の接着剤で仮止めする
- 下トレイの溝の底と、上フレームの溝の天井にガスケットパッドを貼る(PORON は粘着なしなので、両面テープで軽く留める)
- ケースフォームを下トレイの底に置き、基板とプレートの組を載せてタブを溝に合わせる
- 上フレームをかぶせ、底から M2×10 を 8 本締める。締めすぎるとパッドがつぶれてガスケットの効果がなくなるので、上下が接したところで止める
奥の壁の USB-C 用の切り欠きは 14 × 9.5 mm です(基板がパッドの上で動くぶん、一体型のときより 1 mm 高くしています)。プラグのモールド部分がこれより大きいケーブルは奥まで刺さりません。 底面のふち(幅 7 mm)に直径 5〜6 mm の小さいゴム足を貼ってください。
中央カバー
Lumberjack と同じく、中央の部品(ダイオード列・MCU・USB 周り)を透明な板で覆えます。

| 項目 | 値 |
|---|---|
| 大きさ | 56.2 × 75.35 mm、角 R3、厚さ 2 mm |
| 取り付け | カバーの四隅に合わせた基板の M2 穴 4 か所(H9〜H12)に M2 10 mm のメス-メススペーサーを立て、下から M2×4 で基板に、上から M2×4 でカバーを留める |
| 高さ | カバーの下面は基板上面から 10 mm。下でいちばん高い LED1(8.29 mm)との間に 1.71 mm のすき間 |
| ケースとの関係 | カバーの上面はケースのふちより約 0.5 mm 上。ケース・キーキャップとは重ならない |
| ファイル | 用途 |
|---|---|
plates/eugeo-cover.dxf | アクリル板のレーザーカット用(推奨) |
case/eugeo-cover.step / .stl | 3D プリントや CNC 用 |
gerbers/eugeo-cover.zip | JLCPCB で FR4 板として作る場合(不透明になる) |
JLCPCB の基板サービスでは透明な板は作れないため、透明にしたい場合はアクリルのレーザーカットサービスに DXF を出してください。 JLC3DP の SLA で作る場合は、見積もり画面で透明系のレジンが選べるか確認してください。
フォーム
打鍵音とたわみの調整用の 2 種類のフォームと、ガスケットマウント用のパッドの型を用意しました。フォームは左右同じ形なので、1 つの型で 2 枚切り、片方は裏返して使います。
| ファイル | 位置 | 推奨素材 | 形 |
|---|---|---|---|
foam/eugeo-plate-foam | プレートと PCB の間(3.5 mm) | 3 mm PORON | プレートと同じ外形、スイッチ下部を逃がす 14.5 mm 角穴、スペーサー用 φ4.4 穴 |
foam/eugeo-case-foam | PCB とケース底の間(5 mm) | 3 mm PORON | キー部分のみ(中央の部品エリアは空ける)、基板の裏のネジ頭を逃がす φ7 穴 |
foam/eugeo-gasket-pad | プレートのタブの上下(ケースの溝) | 3 mm PORON | 10 × 4 mm、20 個 |
.dxf はレーザーカット業者向け、-1to1.pdf は手で切るための原寸の型紙です。PDF は A4 横で、倍率 100% で印刷し、100 mm のスケールバーで寸法を確かめてから使ってください。
ケースフォームは 3 mm にすると、裏面のソケット(高さ約 1.85 mm)との間にほぼすき間がない厚さになります。
JLCPCB ではフォームのカットは扱っていないため、遊舎工房のレーザー加工(下記)に出すか手で切ってください。
スイッチプレートは、ケースの内側に 1 mm のすき間で収まり、ケースのふちより 6.5 mm 低い位置に来ることを確認済みです。
遊舎工房のレーザー加工
遊舎工房のレーザー加工サービスに、そのまま入稿できる SVG を lasercut/yushakobo/ に用意しました。
遊舎工房配布の Inkscape テンプレートを土台にし、注文サイズの作業領域だけを残しています。
| ファイル | 注文するサービス / 素材 / 厚さ / サイズ | 中身 |
|---|---|---|
eugeo-cover_acrylic-clear-2mm_115x300.svg | レーザー加工サービス(アクリル)/ アクリル クリア / 2mm / 115x300 | 中央カバー 1 枚 |
eugeo-switch-plate_pom-1.5mm_245x245.svg | レーザー加工サービス(その2) / POM / 1.5mm / 245x245 | ガスケット用タブ付きスイッチプレート 2 枚(左右共通、右は裏返して使う) |
eugeo-foam_poron-3mm_500x100.svg | レーザー加工サービス(その2)/ フォーム / 3mm / 500x100 | プレートフォーム 2 枚 + ケースフォーム 2 枚 + ガスケットパッド 20 個 |
- 穴などの内側はカット①(赤)、外形はカット②(青)です。内側を先に切ってから部品を切り離す順番になります
- 線幅 0.001 mm、塗りなし、RGB、ファイル名は半角英数字です。シート端から 8 mm、部品同士は 5 mm 空けています(規定は 3 mm / 2 mm 以上)
- レーザーは線の上を切るため、穴は線より少し大きく、外形は少し小さく仕上がります。POM プレートのスイッチ穴(14.0 mm)が緩い場合は、注文時に相談してください
- スイッチプレートは JLCPCB の FR4(
gerbers/eugeo-plate.zip、1.6 mm)と POM のどちらで作っても同じ形です。ガスケットマウントでは、たわむ POM のほうが向いています
テンプレートはリポジトリに含めていません。作り直すときは、遊舎工房の Laser_Cut_template の Inkscape フォルダにある Laser_acrylic_template.svg、Laser_POM_template.svg、Laser_Poron_template.svg を 1 つのフォルダに置き(POM / Poron はファイル名を小文字の pom / poron にする)、次を実行します。
python3 scripts/export_yushakobo_svg.py <テンプレートのフォルダ>
python3 scripts/check_lasercut_svg.py組み立て(基板)
- ホットスワップソケットと USB-C は裏面、それ以外の部品は表面に付けます
- ダイオードは帯(カソード)を MCU 側に向けます。左列はシルクの右側、右列は左側がカソードです
- プレートと PCB の間は 3.5 mm(1.5 mm 厚プレートでスイッチ底面が PCB に接する高さ)です
- ケースを使わずボトムプレートで挟む場合は、裏面の USB-C とソケットを避けるため PCB とボトムの間を 8 mm 程度空けます
ファームウェア
firmware/qmk/keyboards/eugeo を qmk_firmware の keyboards/ にコピーしてビルドします。
2026-10-07 時点の qmk_firmware でビルドできることを確認済みです。ビルド済みの firmware/eugeo_default.uf2 / firmware/eugeo_via.uf2 も置いてあります。
qmk compile -kb eugeo -km viaRP2040 は ROM にブートローダーを持っているので、ブートローダーの書き込みは要りません。
- BOOT を押したまま RESET を押して離す(何も書き込まれていない新品の RP2040 は USB をつなぐだけでよい)
RPI-RP2という USB ドライブとして認識されるeugeo_via.uf2をそのドライブにコピーすると、書き込み後に自動で再起動する
qmk flash -kb eugeo -km via でも同じことができます。キーマップに QK_BOOT を割り当てておけば、BOOT ボタンを使わずに書き込みモードに入れます。
Remap / VIA
via キーマップは VIA 対応(VIA_ENABLE = yes)で、Remap と VIA のどちらからでもキー配置を変えられます。
- Chrome か Edge で Remap を開き、「Configure」から eugeo を接続する
- Remap のカタログに未登録のうちは定義ファイルを求められるので、
firmware/via/eugeo.jsonを読み込む
firmware/via/eugeo.json は VIA v3 形式の定義ファイルで、物理配列どおり左右ブロックの間を 3U 空けています。VIA の Design タブでもそのまま読み込めます。
Remap のカタログに登録すると、Remap の画面からファームウェアの書き込み(UF2 のダウンロードとコピーの案内)もできるようになります。
Remap のカタログに登録すれば、定義ファイルを読み込まなくても自動で認識されます。登録は Remap に GitHub アカウントでログインして申請し、ファームウェアのソースの場所(GitHub のリポジトリなど)を示します。
VID / PID(0x6B6E / 0x4547)は自分で決めた値です。登録前に、他のキーボードと重複していないか Remap 上で確認してください。
動作の検証
実機は作っていないため、基板データからの検証で、はんだ付けすれば動くことを確認しています。
- KiCad の DRC: 違反 0、未接続 0、回路図との整合 OK。ERC も 0 件
scripts/verify_design.py(59 項目すべて合格)- RP2040 のシンボルのピン名がデータシート(QFN-56)と一致すること
- 電源: IOVDD 6 本・ADC_AVDD・VREG_VIN・USB_VDD が +3V3、VREG_VOUT が DVDD 2 本に、パスコンの数と RP2040 からの距離、MCP1700 のピン配置
- 12 MHz 水晶と 1k 直列抵抗、22 pF、RUN のプルアップと RESET、BOOT(QSPI_SS を 1k で GND へ)
- QSPI フラッシュの 8 ピンが RP2040 の QSPI 信号と一致すること
- USB: D+ / D- が 27Ω 経由で USB_DP / USB_DM に、USBLC6、CC の 5.1k、VBUS のポリスイッチ
- LED とコンデンサの極性、ダイオードの向き(COL2ROW)、QMK の LED ピン設定
- 48 キーすべてについて、基板上の行・列の GPIO が QMK の
keyboard.jsonと一致すること
- RP2040 まわりは、電源ピンをパッドの内側の +3V3 リングでまとめ、+1V1 は裏面経由で 3 ピンをつなぎ、QSPI・水晶・パスコン・行と列の引き出しまでを手配線しています。0.4 mm ピッチの間をすり抜ける配線はありません
- 中央カバー: カバー下面と部品の最小すき間 1.71 mm(LED1)、カバーとケース・部品の干渉 0(
scripts/check_case_fit.py) - ソケットのフットプリント: パッド位置・サイズが keyswitch-kicad-library の SW_Hotswap_Kailh_MX_1.00u と一致。ソケットの突起が入る穴は同ライブラリに合わせて φ3.05 mm
KP=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3
$KP scripts/verify_design.py発注前チェック
発注の前に scripts/preorder_check.py を実行してください(2026-10-07 時点で 23 項目すべて合格)。DRC で見えない次の点を確かめます。
- 前の版との差分が、意図した部品の追加・削除だけであること(ほかのパッドの位置と接続が変わっていない)
- 全部品が
design.pyどおりの位置・向き・面にあり、外形も設計どおりであること - スペーサー・ネジ頭が当たる範囲に、むき出しの銅箔がないこと。ビアがすべてレジストで覆われていること(マスクのガーバーでも確認)
- 実際の基板の最小値(線幅 0.15、ビア φ0.3 / 0.6、穴、スロット、シルク文字 1.0 mm)が JLCPCB の製造基準を満たすこと
gerbers/eugeo.zipが今の基板から出したものと一致し、ドリルデータに M2 穴 12 個が設計位置どおりにあること- JLCPCB の実装座標(ソケットと表面実装部品)と LCSC 番号、スイッチプレート・中央カバー・ボトムプレートの穴が基板の穴と一致すること
- 遊舎工房向け SVG が入稿ルールを満たすこと、59 項目の機能チェックが通ること
$KP scripts/preorder_check.py --base <前回発注した版の git リビジョン>未検証の点
- 試作していません。上記の検証、ケースとの干渉チェックは通っています
- JLCPCB の部品の回転角はプレビューで確認しただけです。部品を変えたら注文時の配置プレビューで 1 番ピンの向きを確かめてください(上の「表面実装部品とソケットの実装を JLCPCB に頼む」)
- USB-C コネクタ(TYPE-C-31-M-12)は 0.5 mm ピッチの SMD で、手はんだでは一番難しい部品です(Lumberjack と同じ部品)
- ケースの USB-C 部はコネクタの 3D モデルがないため、寸法計算だけで確認しています
- ホットスワップソケットのフットプリントは keyswitch-kicad-library と同寸で、JLCPCB の部品配置とも一致しましたが、実物のソケットでの勘合は未確認です
License
ハードウェア(回路図・基板・プレート・ケース・フォーム)とスクリプトは MIT License です。Lumberjack の著作権表示を LICENSE に残しています。
firmware/qmk/ 以下のファームウェアは QMK に合わせて GPL-2.0-or-later です。
Parts
143| Qty | Value | Footprint | References |
|---|---|---|---|
| 48 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +32 |
| 48 | MX | eugeo:MX_Hotswap_Kailh | MX1, MX2, MX10, MX11, MX12, MX13, MX14, MX15, MX16, MX17, MX18, MX19, MX20, MX21, MX22, MX23 +32 |
| 12 | M2 | eugeo:MountingHole_M2_NPTH | H1, H2, H3, H4, H5, H6, H7, H8, H9, H10, H11, H12 |
| 8 | 100n | Capacitor_SMD:C_0402_1005Metric | C10, C11, C12, C13, C14, C15, C20, C22 |
| 3 | 1k | Resistor_SMD:R_0402_1005Metric | R7, R8, R11 |
| 2 | 1u | Capacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mm | C6, C7 |
| 2 | 1u | Capacitor_SMD:C_0402_1005Metric | C17, C18 |
| 2 | 22p | Capacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm | C1, C2 |
| 2 | 27R | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R2, R3 |
| 2 | 5.1k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R5, R6 |
| 1 | 10k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R9 |
| 1 | 10u | Capacitor_THT:CP_Radial_D4.0mm_P1.50mm | C3 |
| 1 | 12MHz | Crystal:Crystal_HC49-4H_Vertical | Y1 |
| 1 | 1k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R10 |
| 1 | 500mA | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | BOOT | Button_Switch_THT:SW_PUSH_6mm | SW2 |
| 1 | GREEN | LED_THT:LED_D3.0mm | LED2 |
| 1 | MCP1700-3302E | Package_TO_SOT_THT:TO-92_Inline_Wide | U3 |
| 1 | RED | LED_THT:LED_D3.0mm | LED1 |
| 1 | RESET | Button_Switch_THT:SW_PUSH_6mm | SW1 |
| 1 | RP2040 | Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm | U1 |
| 1 | USB-C | eugeo:TYPE-C-31-M-12 | J1 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U4 |
| 1 | W25Q16JVSSIQ | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U2 |
Questions
How big is the Eugeo PCB?
It measures 284.9 × 75.4 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Eugeo use?
143 parts, built around the RP2040, W25Q16JVSSIQ, MCP1700-3302E/TT and USBLC6-2SC6. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Eugeo KiCad files?
From the konifar/eugeo repository on GitHub, at the commit this page was made from: the board is eugeo.kicad_pcb and its schematic eugeo.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Eugeo design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 4 layers299 × 127 mm

- 4 layers53 × 42 mm

MioLink
Misaka0x2730/MioLink
ARM JTAG/SWD debugger (BlackMagic port) based on RP2040.
117 parts30GPL-3.0 - 2 layers353.1 × 124.9 mm

- 4 layers110 × 120 mm

DUT Interface board v0.2
krishchan007/DUT_Interface_board_v0.2
v0.2 of DUT interface board with significant changes in layout, architecture etc.
271 parts1 - 4 layers50 × 20 mm

- 4 layers72 × 44 mm

Picflash board
nthclrd/picflash
Programmeur PIC open source en Rust : remplace MPLAB IPE/XC8 pour les PIC16, pilote les PICkit 4/5/Basic ou une carte RP2040 maison (KiCad)
115 parts1MIT - 2 layers185 × 83 mm

Mass Spring Damper SysID Lab
Scalable-Open-Source-Labs/Mass-Spring-Damper-SysID-Lab
An open source Mass-Spring-Damper to assist with teaching System Identification
135 parts1MIT - 2 layers45.5 × 61.4 mm



