
Corne6
kobago/fuide-eda
KiCad 風の基板設計アプリを、fuide (egui 0.36 向けの FUI 部品ライブラリ) の上に作るプロジェクト。今は 試作 (spike) の段階で、「Rust で使えるカーネルの調査」(docs/kernel-research.md) の結論を実際に組んで確かめたもの。

KiCad 風の基板設計アプリを、fuide (egui 0.36 向けの FUI 部品ライブラリ) の上に作るプロジェクト。今は 試作 (spike) の段階で、「Rust で使えるカーネルの調査」(docs/kernel-research.md) の結論を実際に組んで確かめたもの。
Ansi75 is an open-source printed circuit board by kobago, from the kobago/fuide-eda repository on GitHub. It is a 2-layer board of 312 × 146 mm with 176 parts on 108 nets, routed with 1,013 tracks and 101 vias.
It is built around the 1N4148W. Its parts include 84 diodes, 77 switches and 1 IC. It belongs with the RP2040 boards of this library.
KiCad 風の基板設計アプリを、fuide (egui 0.36 向けの FUI 部品ライブラリ) の上に作るプロジェクト。今は 試作 (spike) の段階で、「Rust で使えるカーネルの調査」(docs/kernel-research.md) の結論を実際に組んで確かめたもの。
crates/fuide-eda-core/ 基板カーネル `fuide-eda-core` (GUI 非依存、テスト可)
units.rs i64 nm 座標 (KiCad と同じ)、点、矩形、画面座標系の回転
model.rs 層、ネット、フットプリント / パッド、配線、ビア、ゾーン、図形
kicad.rs .kicad_pcb の読み込み (kiutils-rs の型付き AST + 無損失 CST)
geom.rs パッド / 配線 / 円弧の輪郭を mm の多角形にする
fill.rs ゾーン (銅箔ベタ) の塗りつぶし (i_overlay)
index.rs R* 木によるヒットテスト
tess.rs 表示用の三角形化 (i_triangle)
gerber.rs / excellon.rs Gerber X2 (gerber-types) と Excellon ドリル
dsn.rs Specctra DSN 書き出し (Freerouting / topola 用)
library.rs 内蔵フットプリント (チップ部品、DIP、ピンヘッダ、LED、TO-92、SOT-23、取付穴 …)
kicad_lib.rs KiCad 公式ライブラリ (*.pretty の .kicad_mod) の検索と読み込み、3D モデルパスの解決
step.rs STEP モデル (kicad-packages3D) を truck で読んで三角形化、STYLED_ITEM から面ごとの色
edit.rs 新規基板、部品の配置 / 移動 / 反転、ピンへのネット割り当て、外形いっぱいのベタ
kicad_write.rs .kicad_pcb の書き出し (KiCad 10 形式、自前の読み込みで往復テスト)
mesh3d.rs 実物風 3D モデル (基板・銅箔・パッド・シルク・部品本体) を色付きメッシュで生成
connectivity.rs 銅箔の接続性 (どのパッドが既に繋がっているか) とラッツネスト
route/ 格子ルーター: 占有格子 (grid.rs)、A* (astar.rs)、手配線と自動配線の共通部 (mod.rs)
drc.rs クリアランス検査 (銅箔同士、基板端)
symlib.rs 回路図シンボル: 内蔵 (R / C / LED / トランジスタ / スイッチ / コネクタ / NE555 / ProMicro / 電源) と KiCad .kicad_sym の読み込み
schematic.rs 回路図 (シンボル・配線・ラベル)、KiCad と同じ配置変換、ネットリスト導出、.kicad_sch 入出力、基板への反映 (update_pcb)
apps/eda/ FUIDE EDA — egui アプリ (fuide のシェル・パネル・テーブル・ダイアログ)、app/tools.rs に EDA 専用 MCP ツール、app/sch.rs + schview.rs に回路図ビュー
testdata/ KiCad 公式デモ pic_programmer (2 層、63 部品、370 配線、1 ゾーン)、kicad-lib/ に公式ライブラリの抜粋 (.kicad_mod + .step)
examples/blinker/ MCP 経由でゼロから設計した NE555 LED 点滅基板 (.kicad_pcb と Gerber)fuide 本体と 3D ビューポート fuide-3d は git 依存 (private なので SSH。Cargo.toml の [workspace.dependencies]、egui の版を揃えること)。隣の checkout ../fuide / ../fuide-3d で直しながら動かすときは Cargo.toml 末尾のコメントの [patch] を外す。
.kicad_pcb の (footprint …) 形式 (KiCad 6 以降)。動作確認は 8.0 (Raspberry Pi CM5 IO)、9.0、10.0 (testdata)。書き出しは 10 形式 (version 20260206)。.kicad_sch (KiCad 6 以降)。動作確認は 8.0 (CM5 IO、階層シート) と 9.0。書き出しは 9 形式 (version 20250114)。(module …) の基板、.sch / .lib の回路図) は非対応。3D モデルは STEP のみ (.wrl は読まない)。cargo run -p fuide-eda # 空で起動、OPEN (Ctrl+O) か PATH (Ctrl+L) で開く
cargo run -p fuide-eda -- testdata/pic_programmer.kicad_pcb
FUIDE_DEV_SAMPLE=1 cargo run -p fuide-eda # デモ基板を読み込んで起動
cargo run -p fuide-eda-core --example inspect -- testdata/pic_programmer.kicad_pcb /tmp/out # GUI 無しで読込・塗り・書き出し
cargo test --workspaceOPEN (OS ダイアログ) / PATH (パス入力) / FIT / FILL、ツール SELECT / ROUTE、右に F.CU / B.CU と BOARD / GERBER ビュー。2 段目 UNDO / REDO、AUTOROUTE、UNROUTE NET (選択中の項目のネット)、UNROUTE ALL (確認ダイアログ)、DRC、GERBER / DSN、KICAD FILL (ファイルに保存されている KiCad のベタと自前のベタを切り替えて比較)。ドラッグでパン、ホイールでズーム、クリックで選択、ダブルクリックでフィット。未接続はラッツネスト (細い線) で表示3D) — fuide-3d (wgpu) の実物風レンダリング。ソルダーマスクの緑、FR4 の側面、金色のパッドとビア、マスク下の銅箔、白いシルク、部品の本体 (キースイッチ + キーキャップ、DIP、チップ部品、ピンヘッダ、LED、Pico / Pro Micro …)。ISO / TOP / FRONT / RIGHT のプリセット、PARTS で部品の表示切替。ドラッグでオービット、Shift+ドラッグでパン、ホイールでズーム。fuide-3d に「ホログラムではなく自身の色で陰影を付ける」Style::solid を追加して使っているHIGHLIGHT NET| 操作 | キー |
|---|---|
| 新規 / 保存 | Ctrl+N または NEW (50×40 mm の空の 2 層基板。未保存なら確認)、Ctrl+S または SAVE、Ctrl+Shift+S (パス指定で保存)。読み込んだ .kicad_pcb は無損失で書き戻す (kicad_writeback.rs: kiutils の CST のバイト範囲を使い、変更した部分だけを差し替える。部品の移動・回転は (at …)、ネット変更はパッドの (net …)、配線とビアは全置換、反転した部品はモデルから再生成、削除は行ごと削除、新規部品・ゾーンは追記。3D モデル参照や寸法線、テキストボックスなど、モデルが知らない要素はそのまま残る) |
| 開く | Ctrl+O または OPEN: OS のファイルダイアログ (rfd。Linux は xdg-desktop-portal、macOS は NSOpenPanel。ワーカースレッドで開き、結果は毎フレームのポーリングで受け取る)。Ctrl+L または PATH: アプリ内のパス入力ダイアログ (~ と相対パス、Tab 補完。MCP エージェントはこちら、OS のダイアログの中は見えない) |
| ツール | S (SELECT) / X (ROUTE) |
| 部品の編集 (SELECT) | ドラッグで移動 (0.5 mm グリッドに吸着、Alt で自由)、R で 90° 回転、F で裏面へ反転、Delete で削除。Ctrl+クリックで選択に追加、空いた場所からのドラッグで矩形選択。Shift+ドラッグ / 中・右ボタンでパン |
| フィット | Home またはダブルクリック |
| 手配線 | ROUTE (X) でパッドをクリックして開始 → カーソルまでの経路が格子ルーターの提案で表示される → クリックで確定 (同じネットのパッドをクリックすると完了)。1 / 2 で層を切り替えるとその場にビアを打つ (入らなければ拒否)。Backspace で配線中の内容を取り消し、Esc / 右クリックで終了 |
| 取り消し / やり直し | Ctrl+Z / Ctrl+Shift+Z (40 段。配線・自動配線・削除・剥がしが 1 段) |
| 選択した配線 / ビアを削除 | Delete |
| アクティブ層 | 1 (F.Cu) / 2 (B.Cu) |
| Gerber ビュー切替 | G (未書き出しなら書き出してから表示) |
| KiCad のベタと比較 | K |
| 選択解除 / ネット強調解除 | Esc |
| 設定 / 終了 | Ctrl+, / Ctrl+W |
書き出し先は基板ファイルの隣の fuide-fab/ (<name>-F_Cu.gbr、-B_Cu.gbr、-Edge_Cuts.gbr、-PTH.drl、-NPTH.drl、<name>.dsn)。GERBER は書き出した直後にそのファイルを gerber_parser で読み戻し、gerber_viewer (MakerPnP、egui 描画) で表示する — 自分の出力を自分のモデルではなく別実装で見る往復検証。
fuide-eda --mcp (または ~/.config/fuide/eda.sock に直接 JSON-RPC) で、汎用の observe / click / type / key / screenshot に加えて EDA 専用ツールが使える: board (要約: 寸法、部品、ネットとピン、未接続数、DRC)、library、new_board、add_footprint、move_footprint、remove_footprint、connect (ピンをネットへ。即ラッツネスト)、add_zone、autoroute、unroute、fill、drc、select、view、save、export (gerber / dsn)、open。既存ファイルの上書きと UNROUTE ALL などの確認は、設定で許可しない限り人間留保。
define_footprint で任意のフットプリント (パッドの JSON) を定義して置くこともできる。内蔵ライブラリにはキーボード用の SW_MX_1u (Cherry MX、4 mm 中央穴 + 1.75 mm 位置決め穴)、D_SOD-123、ProMicro (2×12 ピン、ピン名は library の説明に)、SW_Push_6mm もある。
examples/ansi75/ は 75% US 配列の 1 枚基板: 84 キー + ダイオード 84 + Pico (define_footprint で定義) + リセット + 取付穴 6 = 176 部品、261 接続。autoroute は 261/261 を 30 秒 (rip-up 9 回)、配線 1013 本 + ビア 101、DRC 0 件。部品の配置は 176 回の add_footprint で 93 秒かかったので、格子の再構築は配線要求時まで遅延させた (以後は数秒)。
examples/corne6/ は 48 部品 (キースイッチ 21 + ダイオード 21 + Pro Micro + リセット + 取付穴 4)、33 ネット、67 接続の片手キーボード: autoroute が 67/67 を 1.3 秒、配線 240 本 + ビア 18、DRC 0 件。
examples/blinker/ はこの経路だけで作った NE555 の LED 点滅基板: new_board 40×30 → add_footprint ×10 → connect ×7 (15 接続) → autoroute (15/15、22 ms、配線 18 本 + ビア 1) → add_zone GND / B.Cu → drc 0 件 → save → export gerber。
撮影フック: FUIDE_SCREENSHOT=/path/shot.tga、FUIDE_DEV_SAMPLE=1、FUIDE_DEV_VIEW=gerber|3d|schematic (+ FUIDE_DEV_PRESET=top|front|right)、FUIDE_DEV_SELECT=U2 (その部品の 1 番パッドを選択)、FUIDE_DEV_NET=GND (ネット強調)、FUIDE_DEV_UNROUTE=1 (全配線を剥がす)、FUIDE_DEV_AUTOROUTE=1 (剥がして自動配線)、FUIDE_DEV_DRC=1、FUIDE_DEV_ROUTE=U2 (その部品から手配線を開始してプレビューを出す)。TGA は python3 -c "from PIL import Image; Image.open('shot.tga').save('shot.png')" で変換。
調査の結論どおり「PCB 用の単一カーネル」は無いので、領域ごとの crate を fuide-eda-core で束ねている:
| 領域 | 使ったもの | 試作での結果 |
|---|---|---|
| 座標 | 自前 i64 nm | .kicad_pcb の mm 6 桁が丸めなしで往復する。回転は KiCad と同じ「画面上で反時計回りが正」(y 下向き) |
| KiCad 読込 | kiutils-rs 0.2 (kiutils_kicad 0.3 + kiutils_sexpr 0.1) | 層・ネット・フットプリント・パッド・配線・ビアは型付き AST で取れる。ゾーンの輪郭と保存済みベタ、gr_* / fp_* の図形、文字は型付き AST に無いので無損失 CST を自前で辿る。KiCad 10 形式はネット一覧を持たず (net "GND") と名前で参照するため、型付き AST の net: Option<i32> は空になる → 名前からネット表を自分で組む (net_ref)。パッドの角度はファイル上で絶対角、位置はフットプリント基準 |
| ベタ塗り | i_overlay 8.1.1 | 輪郭 − (他ネットの銅箔をクリアランス分太らせたもの) − 基板端、のあと min_thickness/2 で縮小→拡大 (開口)。デモ基板 (B.Cu の GND ベタ、29 島) が 81 ms、面積 11781 mm² vs KiCad 10618 mm² (自前はサーマルリリーフ未実装ぶん大きい)。非ゼロ規則で重なりを union するため輪郭の向きを正に揃える必要がある |
| 表示 | i_triangle 0.48 + egui Painter | ベタ 22k 三角形をフレームごとに座標変換して Shape::mesh、パッド・配線は凸多角形。60 fps 以上 |
| ヒットテスト | rstar 0.13 | locate_in_envelope_intersecting で候補を絞って厳密判定 (パッド > ビア > 配線 > 図形 > ゾーン > フットプリント) |
| Gerber | gerber-types 0.7 → gerber_parser 0.5 → gerber_viewer 0.8 | ベタは領域 (穴は LPC で抜く)、配線は円形アパーチャ、円 / 軸に沿った矩形・長円パッドはフラッシュ、それ以外は領域。書き戻しで 0 エラー (B.Cu 24864 コマンド、22 アパーチャ)。gerber_viewer の座標系は y 上向きなので translation の計算で合わせる |
| Excellon | 自前 (60 行) | PTH / NPTH の 2 ファイル、長穴は G85 |
| DSN | 自前 | topola の Specctra パーサは 順序に厳格 (boundary は 1 つ、pin は (pin padstack (rotate r) id x y) の順、via に (type) を付けない)。合わせれば読める |
| 自動配線 | topola | crates.io の topola 0.1.0 (2026-06) には配線を起動する API が無い (Autorouter::new と Router::navmesher_board だけ)。Codeberg の master (v0.6.3、2026-07) には topola-cli と Invoker / Autorouter / SpecctraDesign があり、topola board.dsn -o board.ses で走る。デモ基板 (111 ネット) では完走せず、常駐 27.8 GB でカーネルの OOM killer に殺された (2 回、物理メモリ 31 GB)。当面は候補から外す |
自動配線ツールの調査 (topola はメモリ暴走、Freerouting は Java) を受けて、Rust だけで完結する配線を自前で持つ。手配線と自動配線は同じ格子ルーター (route/) を使う。
grid.rs): 銅箔層ごとに 0.1 mm ピッチの格子。各セルは「その銅箔 (クリアランス + 配線幅/2 だけ太らせたもの) がどのネットのものか」を持ち、自ネットか空きなら通れる。異なるネットが重なるセルは通行止め。パッド・穴・基板端は固定面、配線・ビアは可動面に分けて持ち、後者は剥がせるastar.rs): (層, x, y) の 8 方向移動 + ビアで層移動。ヒューリスティックは目標の矩形までのオクタイル距離。rip-up モードでは他ネットの配線を有料で通過でき、通った先のネットを報告するRouter::propose): アンカーからカーソルのセルまで、いま作業中の層だけで経路を出す。同じネットのパッドの上ではそこへ吸着する。数十 ms 以下なので毎フレームカーソルに追従するRouter::autoroute): ラッツネストの接続を短い順に配線し、失敗分は rip-up モードで通して邪魔なネットを剥がし、剥がしたネットを再配線する (最大 6 周)drc.rs): rstar で候補を絞り、多角形間の距離で銅箔同士 (異ネット) と基板端のクリアランスを検査するRouter::simplify_run): 格子経路は 0° / 45° の階段になるので、見通し線で間引く (前の頂点から直線で届く限り中間点を捨てる、任意角度)。直線は格子の中心を通らないため、格子に描く余裕を半セルぶん (0.05 mm) 足して DRC を満たすようにしているconnect_pads の yes / no / thru_hole_only と、パッドごとの zone_connect に従う。KiCad の保存済みベタとの面積比はデモ基板で 1.10。(priority N) の高いゾーンから塗り、低いゾーンは高いゾーンの塗り結果をクリアランスぶん避ける。(layers F.Cu B.Cu) を両端として間の内層すべてに触れる (Board::via_span。4 層基板でここが抜けていると GND が 39 本未接続に見える)。.kicad_pro の drc_exclusions (種類と位置) に当たる違反は除外し、ログに件数を出す。.kicad_pro があれば net_settings.classes (ネット名・netclass_patterns の * ワイルドカード・netclass_assignments) と design_settings.rules を読む。ルーターはネットごとのクラス幅で配線し (格子はいちばん広い幅で余裕を取る)、DRC は 2 ネットのクラスの大きい方のクリアランスで判定する。RouteOptions::snap45、既定 on)。SW_MX_2u / 2.25u / 2.75u / 6.25u / 7u は Cherry の PCB マウントスタビライザ穴付き (片側 3.05 mm と 4.0 mm、間隔 23.876 / 100 / 114.3 mm)。3D ビューのキーキャップ幅も名前から決まる。Lib:Name (例 Resistor_SMD:R_0805_2012Metric) や .kicad_mod のパスを add_footprint に渡すと、検索パス上の *.pretty から読み込む (kicad_lib.rs: パッドは kiutils の型付き AST、図形と 3D モデル参照は CST)。検索パスは FUIDE_KICAD_FOOTPRINTS / FUIDE_KICAD_3DMODELS (: 区切り)、KICAD*_FOOTPRINT_DIR / KICAD*_3DMODEL_DIR、/usr/share/kicad、~/.local/share/kicad/<ver>、macOS のアプリ内、そして MCP の library_paths で追加した場所。library に search を渡すと Lib:Name を検索できる。(model …) は ${KICAD*_3DMODEL_DIR} をモデル検索パスに、${KIPRJMOD} を基板のディレクトリに解決し、見つかった STEP を truck で読んで三角形化 する (step.rs)。色は STYLED_ITEM → … → COLOUR_RGB の連鎖を辿って面ごと (無ければソリッドごと) に付ける。KiCad の offset / scale / rotate を適用し、裏面の部品は基板の下に鏡像で置く。モデルが見つからない部品は従来の簡易形状。読み込み結果はパスごとにキャッシュ。examples/libdemo/ は testdata/kicad-lib の抜粋 (DIP-8 と 0805) だけで組んだ基板で、FUIDE_KICAD_FOOTPRINTS=testdata/kicad-lib FUIDE_KICAD_3DMODELS=testdata/kicad-lib cargo run --release -p fuide-eda -- examples/libdemo/libdemo.kicad_pcb で 3D ビューに公式モデルが出る。testdata/step/periodic_pcurve.step に再現ファイル)。ヘッダが Latin-1 の STEP も読む。WRL は KiCad 9 以降ソースに無いので未対応。回路図側のシンボルライブラリ (.kicad_sym) は「回路図」の項を参照。SCH タブ (または .kicad_sch を開く / 基板の隣にある .kicad_sch は基板と一緒に開く) で 1 枚の回路図を扱う。座標は mm・y 下向き、格子 1.27 mm (KiCad の 50 mil)。
symlib.rs): 内蔵は R C C_Polarized L D LED Q_NPN_BCE Q_PNP_BCE SW_Push SW_MX Conn_01xNN NE555 ProMicro と電源 GND VCC +5V +3V3 +12V VBUS VDD。どれも既定のフットプリント (内蔵ライブラリの id) を持つので、そのまま基板に落とせる。KiCad の .kicad_sym は FUIDE_KICAD_SYMBOLS / KICAD*_SYMBOL_DIR / /usr/share/kicad/symbols などから Lib:Name で読む (extends 解決、単位 1 のみ)。define_symbol で辺ごとにピンを並べた箱シンボルも作れる。(at x y angle) + (mirror x|y) を行列 (mirror ∘ rot ∘ y反転) で再現し、R は反時計回り 90°、M は左右反転。testdata の非安定マルチバイブレータ (KiCad 9 で描いたもの) を読むと、13 シンボルのピンが全て配線か他のピンに乗り、導出したネットリストが KiCad が作った基板のパッド割り当てと完全に一致する (テスト netlist_of_the_kicad_sample_matches_its_board)。Schematic::netlist): ピン・配線・ラベルを union-find で束ねる。配線は端点が他の配線やピンに触れれば接続 (中点の交差は非接続)、同名ラベルは接続、電源シンボルは値の名前のグローバルラベル、非表示の power_in ピンはピン名のネット。ネット名の優先は KiCad と同じくグローバル > ローカル > 階層ラベル > 自動名で、ローカル・階層ラベルのネットはシートのパス付き (/CLK、/Power/VBUS)。自動名は Net-(REF-PINNAME): 名前付きピン (空・~・番号と同じ・同じシンボル内で重複する名前は除く) を優先し、無名なら PadN、マルチユニットはユニット文字 (U1A)、ピン名の / は {slash}。Raspberry Pi CM5 IO 基板 (161 ネット) で基板のネット名・ピンと完全に一致する。1 ピンだけのネットは「未接続」として数え、no_connect 印があれば数えない。SELECT でドラッグ移動 (格子スナップ、Alt で自由)、WIRE (W) はクリックで L 字に折れる配線を足し、同じ点をもう一度 / ダブルクリック / Enter / Esc で確定、ADD SYMBOL (A) は R R1 10k のような 1 行、LABEL (L) はネット名 (<NAME> でグローバル)。R / M / Delete、Ctrl+Z / Ctrl+Shift+Z は回路図側の取り消し。右の DRC 欄はネットリスト表になり、行を押すとそのネットへ寄る。UPDATE PCB / MCP update_pcb): 回路図の部品のうち基板に無い参照はフットプリント (シンボルの Footprint、無ければシンボル既定) を基板外形の下に一列で置き、ある参照は値だけ更新、全パッドにネットリストのネットを割り当てる (remove_extra で回路図に無い部品を消す)。基板が無ければ 60×40 mm を作る。あとは通常どおり move_footprint / autoroute。.kicad_sch (KiCad 9、version 20250114) の読み書き。読んだ lib_symbols は原文のまま書き戻し、内蔵シンボルは生成する (symbol_text)。書いたものは自前で再読込して同じネットリストになる (テスト)。KiCad で開けるかは要確認: instances はルートシートの uuid に対して書き、sheet_instances はページ 1 のみ。schematic (要約とネットリスト)、symbols (検索)、new_schematic、define_symbol、sch_add_symbol (ピン座標を返す)、sch_move_symbol、sch_remove、sch_wire (点列)、sch_connect (REF.PIN 同士を L 字 / Z 字で結ぶ。他のピン・他の配線・シンボル本体を横切らない候補を選ぶ)、sch_label (ピンに短い枝を付けてラベル)、update_pcb、view mode: schematic、open / save は拡張子で回路図と基板を判別。examples/blinker555/ はこの経路で作った例: new_schematic → sch_add_symbol ×9 → sch_connect ×10 → sch_label ×3 → update_pcb (6 部品、5 ネット、17 ピン) → save ×2。read_sch はルートの (sheet …) を辿って子シートのファイルを読み、ルートの右に並べて 1 枚に平坦化する (SHEET <名前> のテキスト付き)。シートピンと子の階層ラベルは名前で繋ぎ、子のシンボルの参照は instances のパス (/<root uuid>/<sheet uuid>) から取る。保存は 1 枚として書く。未実装 (順不同): ゾーンの島の除去、配線のドラッグ編集 (今は削除して引き直す)、回路図のバス、階層を保ったままの保存、逆注釈。
update_pcb、.kicad_sch の書き出しと再読込は確認済み (2026-09-08)。書き出したファイルを KiCad で開く確認は未実施。(offset (xyz 16.5 -10.6 -128)) どおり基板の 128 mm 下に出る (KiCad と同じ変換順序: scale → rotate → offset)。docs/kernel-research.md の追記。試すなら小さな DSN + systemd-run --scope -p MemoryMax=4G。| Qty | Value | Footprint | References |
|---|---|---|---|
| 84 | 1N4148W | fuide:D_SOD-123 | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +68 |
| 6 | M3 | fuide:MountingHole_3.2mm | H1, H2, H3, H4, H5, H6 |
| 1 | ' | fuide:SW_MX_1u | SW58 |
| 1 | , | fuide:SW_MX_1u | SW69 |
| 1 | - | fuide:SW_MX_1u | SW28 |
| 1 | . | fuide:SW_MX_1u | SW70 |
| 1 | / | fuide:SW_MX_1u | SW71 |
| 1 | 0 | fuide:SW_MX_1u | SW27 |
| 1 | 1 | fuide:SW_MX_1u | SW18 |
| 1 | 2 | fuide:SW_MX_1u | SW19 |
| 1 | 3 | fuide:SW_MX_1u | SW20 |
| 1 | 4 | fuide:SW_MX_1u | SW21 |
| 1 | 5 | fuide:SW_MX_1u | SW22 |
| 1 | 6 | fuide:SW_MX_1u | SW23 |
| 1 | 7 | fuide:SW_MX_1u | SW24 |
| 1 | 8 | fuide:SW_MX_1u | SW25 |
| 1 | 9 | fuide:SW_MX_1u | SW26 |
| 1 | ; | fuide:SW_MX_1u | SW57 |
| 1 | = | fuide:SW_MX_1u | SW29 |
| 1 | A | fuide:SW_MX_1u | SW48 |
| 1 | B | fuide:SW_MX_1u | SW66 |
| 1 | Backspace | fuide:SW_MX_1u | SW30 |
| 1 | C | fuide:SW_MX_1u | SW64 |
| 1 | Caps | fuide:SW_MX_1u | SW47 |
| 1 | D | fuide:SW_MX_1u | SW50 |
| 1 | Del | fuide:SW_MX_1u | SW15 |
| 1 | Down | fuide:SW_MX_1u | SW83 |
| 1 | E | fuide:SW_MX_1u | SW35 |
| 1 | End | fuide:SW_MX_1u | SW31 |
| 1 | Enter | fuide:SW_MX_1u | SW59 |
| 1 | Esc | fuide:SW_MX_1u | SW1 |
| 1 | F | fuide:SW_MX_1u | SW51 |
| 1 | F1 | fuide:SW_MX_1u | SW2 |
| 1 | F10 | fuide:SW_MX_1u | SW11 |
| 1 | F11 | fuide:SW_MX_1u | SW12 |
| 1 | F12 | fuide:SW_MX_1u | SW13 |
| 1 | F2 | fuide:SW_MX_1u | SW3 |
| 1 | F3 | fuide:SW_MX_1u | SW4 |
| 1 | F4 | fuide:SW_MX_1u | SW5 |
| 1 | F5 | fuide:SW_MX_1u | SW6 |
| 1 | F6 | fuide:SW_MX_1u | SW7 |
| 1 | F7 | fuide:SW_MX_1u | SW8 |
| 1 | F8 | fuide:SW_MX_1u | SW9 |
| 1 | F9 | fuide:SW_MX_1u | SW10 |
| 1 | Fn | fuide:SW_MX_1u | SW74 |
| 1 | G | fuide:SW_MX_1u | SW52 |
| 1 | H | fuide:SW_MX_1u | SW53 |
| 1 | Home | fuide:SW_MX_1u | SW16 |
| 1 | I | fuide:SW_MX_1u | SW40 |
| 1 | J | fuide:SW_MX_1u | SW54 |
| 1 | K | fuide:SW_MX_1u | SW55 |
| 1 | L | fuide:SW_MX_1u | SW56 |
| 1 | LAlt | fuide:SW_MX_1u | SW77 |
| 1 | LCtrl | fuide:SW_MX_1u | SW75 |
| 1 | LShift | fuide:SW_MX_1u | SW61 |
| 1 | Left | fuide:SW_MX_1u | SW82 |
| 1 | M | fuide:SW_MX_1u | SW68 |
| 1 | Menu | fuide:SW_MX_1u | SW80 |
| 1 | N | fuide:SW_MX_1u | SW67 |
| 1 | O | fuide:SW_MX_1u | SW41 |
| 1 | P | fuide:SW_MX_1u | SW42 |
| 1 | PgDn | fuide:SW_MX_1u | SW60 |
| 1 | PgUp | fuide:SW_MX_1u | SW46 |
| 1 | Pico | custom:RPi_Pico | U1 |
| 1 | PrtSc | fuide:SW_MX_1u | SW14 |
| 1 | Q | fuide:SW_MX_1u | SW33 |
| 1 | R | fuide:SW_MX_1u | SW36 |
| 1 | RAlt | fuide:SW_MX_1u | SW79 |
| 1 | RCtrl | fuide:SW_MX_1u | SW81 |
| 1 | RESET | fuide:SW_Push_6mm | SW99 |
| 1 | RShift | fuide:SW_MX_1u | SW72 |
| 1 | Right | fuide:SW_MX_1u | SW84 |
| 1 | S | fuide:SW_MX_1u | SW49 |
| 1 | Space | fuide:SW_MX_1u | SW78 |
| 1 | T | fuide:SW_MX_1u | SW37 |
| 1 | Tab | fuide:SW_MX_1u | SW32 |
| 1 | U | fuide:SW_MX_1u | SW39 |
| 1 | Up | fuide:SW_MX_1u | SW73 |
| 1 | V | fuide:SW_MX_1u | SW65 |
| 1 | W | fuide:SW_MX_1u | SW34 |
The 168 most common of 176 parts.

kobago/fuide-eda
KiCad 風の基板設計アプリを、fuide (egui 0.36 向けの FUI 部品ライブラリ) の上に作るプロジェクト。今は 試作 (spike) の段階で、「Rust で使えるカーネルの調査」(docs/kernel-research.md) の結論を実際に組んで確かめたもの。

kobago/fuide-eda
KiCad 風の基板設計アプリを、fuide (egui 0.36 向けの FUI 部品ライブラリ) の上に作るプロジェクト。今は 試作 (spike) の段階で、「Rust で使えるカーネルの調査」(docs/kernel-research.md) の結論を実際に組んで確かめたもの。

kobago/fuide-eda
KiCad 風の基板設計アプリを、fuide (egui 0.36 向けの FUI 部品ライブラリ) の上に作るプロジェクト。今は 試作 (spike) の段階で、「Rust で使えるカーネルの調査」(docs/kernel-research.md) の結論を実際に組んで確かめたもの。

kobago/fuide-eda
KiCad 風の基板設計アプリを、fuide (egui 0.36 向けの FUI 部品ライブラリ) の上に作るプロジェクト。今は 試作 (spike) の段階で、「Rust で使えるカーネルの調査」(docs/kernel-research.md) の結論を実際に組んで確かめたもの。

fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io

pierrechevalier83/ferris
A low profile split keyboard designed to satisfy one single use case elegantly



MickiusMousius/Rolio46Keyboard
A split wireless keyboard based on the Corne and Sofle


sadekbaroudi/bgkeeb
This is a reversible 100mm x 100mm pcb with support for mx or choc switches (no hotswap), per key led, rotary encoders, and exposes the SDA/SCL/GND/VCC lines in the form of the pimoroni trackball pins (meaning you can…

It measures 312 × 146 mm and has 2 copper layers, 1.6 mm thick.
176 parts, built around the 1N4148W. 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.
From the kobago/fuide-eda repository on GitHub, at the commit this page was made from: the board is examples/ansi75/ansi75.kicad_pcb and its schematic examples/blinker555/blinker555.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask kobago before reusing the design.