app
KiCad - the KiCad Bridge
Public Made by Adomby adom
Reference implementation of the KiCad bridge: multi-instance Python server, forward path via kicad-cli, reverse path via in-process plugin. Most complex of the three bundled bridges.
← Commit history
v0.9.85: win32 tier uses Down+Enter (KiCad filter forwards nav keys to tree)
5 files changed
+15−8
BRIDGE_VERSION+1−1@@ -1 +1 @@-0.9.84+0.9.85
adom-bridge-kicad-manifest.json+5−5@@ -1,15 +1,15 @@ { "manifest_version": 1, "name": "kicad",- "version": "0.9.84",- "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.84/adom-bridge-kicad-v0.9.84.zip",- "sha256": "b613d71ee8cfecc822972efcf226892ddfa004cc278ae6e2c06d0474f67faafa",- "size": 378015,+ "version": "0.9.85",+ "url": "https://wiki.adom.inc/download/adom/kicad-bridge/0.9.85/adom-bridge-kicad-v0.9.85.zip",+ "sha256": "3fd994fd1b2a8c37f6c404715c5fbd8643e77f26dda44e5d525dc896eb97aba7",+ "size": 378108, "verbPrefixes": [ "kicad_" ], "healthEndpoint": "/status",- "released_at": "2026-08-14T15:37:15Z",+ "released_at": "2026-08-14T15:39:13Z", "hero": "https://wiki.adom.inc/blob/app/kicad-bridge/kicad-hero.png", "languages": [ "Python",
adom-bridge-kicad-v0.9.85.zipadded⋯ 1 unchanged line ⋯
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "kicad", "displayName": "KiCad EDA",- "version": "0.9.84",+ "version": "0.9.85", "description": "Reverse bridge for KiCad \u2014 board/schematic introspection, lint via kicad-cli, plugin install, multi-instance probe, in-process DRC.", "homepage": "https://wiki.adom.inc/adom/adom-bridge", "author": "Adom Inc.",
handlers/open_symbol_editor.py+8−1@@ -204,9 +204,16 @@ def _background_navigate_win32(sym_hwnd: int, filter_text: str, verify: str) -> except Exception: return False time.sleep(1.4) # LIB_TREE search debounce runs on the UI thread (~200-500ms) + tree rebuild+ VK_DOWN = 0x28+ # KiCad's filter box forwards navigation keys to the tree: Down selects the+ # first filtered match, Enter activates (= load into canvas). Same sequence+ # a human types; all posted to the Edit hwnd, zero focus needed.+ user32.PostMessageW(edit, WM_KEYDOWN, VK_DOWN, 0)+ user32.PostMessageW(edit, WM_KEYUP, VK_DOWN, 0)+ time.sleep(0.5) user32.PostMessageW(edit, WM_KEYDOWN, VK_RETURN, 0) user32.PostMessageW(edit, WM_KEYUP, VK_RETURN, 0)- for _ in range(8):+ for _ in range(10): time.sleep(0.7) t = (_get_symbol_editor_title() or "").lower() if verify in t and "no symbol loaded" not in t: