
Galagino pcb set
harbaum/galagino
A Galaga, Pac-Man and Donkey Kong arcade emulator for the ESP32

Repo for simple GUI that makes Serial data from a MacroPad work as a macro input device
KeyboardMacroPad is an open-source printed circuit board by brimgit, from the brimgit/MacroPad-Serial-To-Macros-GUI repository on GitHub. It is a 2-layer board of 190 × 75 mm with 75 parts on 88 nets, routed with 972 tracks and 53 vias.
It is built around the ESP32-DEVKITC-VE and SK6812MINI-E. Its parts include 52 diodes, 12 switches and 1 IC. It belongs with the keyboards and input and interfaces and adapters boards and the ESP32 boards of this library.
A full-featured desktop app for controlling a custom ESP32-based macropad over serial. Built with a React + Vite frontend running inside a pywebview frameless window, backed by a pure-Python layer for serial communication, audio control, and macro execution.
Assign press and hold actions to all 8 keys and 4 encoder buttons
Configurable hold duration per key (100–3000 ms, default 500 ms)
Drag keys to swap their assignments directly on the grid
Copy / Paste macros between keys with one click
Undo the last macro edit with a single button
Supported macro types:
| Type | Description |
|---|---|
| Keyboard Key | Any letter, number, or special key |
| Media Control | Play/pause, next/prev track, volume up/down, mute |
| Function Key | F1–F24 |
| Modifier Key | Ctrl, Shift, Alt, Win, and combos (Ctrl+C, Alt+Tab, etc.) |
| Type Text | Types a free-form string |
| Launch | Opens a file, folder, application, or URL |
| System | Lock screen, sleep, shutdown, or restart |
| Mute App | Toggles mute for the encoder's assigned audio source |
| Recorded | Records a full keyboard sequence and replays it with original timing |
| Multi Action | Chains multiple macro steps into a single key press |
Each encoder card shows a live 10-LED ring preview that mirrors the physical device:
Volume display — LEDs fill proportional to current volume %, shown for 2 s after each turn
Idle animations:
| Effect | Description |
|---|---|
| Off | Strip turns off after timeout |
| Breathe | All LEDs pulse in and out (smootherstep curve) |
| Wave | Brightness ripples across the ring |
| Rainbow | Hue band scrolls around the ring |
| Chase | Bright spot bounces with fade trail |
| Color Cycle | All LEDs drift through the full spectrum |
| Sparkle | Random LEDs flash in the encoder's color |
LED modes (color while active):
.json filesData/profiles/{name}.json) — easy to back up, diff, and share| Setting | Description |
|---|---|
| Serial Port & Baud Rate | Connect to the MacroPad over any COM port |
| LED Brightness | Global brightness (0–100%) sent to device on change |
| Enc LED Off | Idle timeout before encoder strip turns off (2 / 5 / 10 s) |
| Effect Speed | Animation frame rate: 5 ms (Ultra) → 50 ms (Light) |
| Export / Import Profile | Save or load the active profile as a .json file |
| Start with Windows | Adds MacroPad to the Windows startup registry key |
PING to the configured port and looks for MACROPAD_OK; if the wrong port is saved it scans all available ports automatically and updates the setting.ino sketches directly from the app via Arduino CLI with a live log outputPCB designed in KiCad — schematic, board files, and Gerber files are in PCB_files/. Order directly from any PCB manufacturer with the Gerbers.
ESP32 microcontroller with:
git clone https://github.com/brimgit/MacroPad-Serial-To-Macros-GUI
cd MacroPad-Serial-To-Macros-GUI
# Python dependencies
pip install -r requirements.txt
# Frontend dependencies
cd frontend
npm install
cd ..# Terminal 1 — Vite dev server
cd frontend
npm run dev
# Terminal 2 — Python backend (connects to Vite at localhost:5173)
python src/main_webview.py --dev# Build the frontend once
cd frontend
npm run build
cd ..
# Run the app
python src/main_webview.py| Package | Purpose |
|---|---|
| pywebview | Native frameless window hosting the React frontend |
| pyserial | Serial communication with ESP32 |
| keyboard | Macro execution and keystroke recording |
| pycaw | Windows audio session / endpoint volume control |
| psutil | Process name lookup for auto profile switching |
| Package | Purpose |
|---|---|
| React 19 | UI framework |
| Vite | Build tool and dev server |
src/
main_webview.py # Entry point — creates frameless pywebview window
api.py # Python API exposed to React via pywebview JS bridge
macro_manager.py # Macro storage, persistence, and execution
profile_manager.py # Profile CRUD, per-file JSON persistence
serial_manager.py # Serial connection, device identification, auto-reconnect
volume_manager.py # Per-app, master, and microphone volume control (pycaw)
foreground_watcher.py# Polls foreground window for auto profile switching
utils.py # Path helpers for PyInstaller and data directory
frontend/
src/
App.jsx # Root component, state, event listeners
components/
Sidebar.jsx # Navigation, profile management, theme toggle, collapse
TitleBar.jsx # Custom frameless title bar with window controls
MacroModal.jsx # Shared macro assignment modal (all types + Multi Action)
pages/
MacrosPage.jsx # 2×4 key grid — drag/swap, copy/paste, undo
EncodersPage.jsx # Encoder cards with LED ring, volume, button macros
SettingsPage.jsx # Serial, brightness, LED, startup, import/export
UploadPage.jsx # Arduino CLI firmware upload with live log
TestPage.jsx # Live key-press display and event log
The Arduino sketch is in MacroPad_Arduino_Code/. Upload it via the Upload Firmware page in the app (requires Arduino CLI) or via the Arduino IDE.
The firmware handles:
E:{id}:{+/-} serial output (0-indexed)KP:{key}:DOWN / KP:{key}:UP:{ms}PING with MACROPAD_OKBRIGHT:, {n}:color(r,g,b), {n}:colorfade(...), EFFECT:{n}:{id}, ENC_TIMEOUT:, EFFECT_SPEED:| Qty | Value | Footprint | References |
|---|---|---|---|
| 40 | SK6812MINI | LED_SMD:LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mm | D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28 +24 |
| 12 | Diode | ScottoKeebs_Components:Diode_SOD-123 | D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12 |
| 8 | Keyswitch | ScottoKeebs_Hotswap:Hotswap_MX_1.00u | S1, S2, S3, S4, S5, S6, S7, S8 |
| 4 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles | SW1, SW2, SW3, SW4 |
| 1 | ESP32-DEVKITC | ESP32-DEVKITC:MODULE_ESP32-DEVKITC | U1 |
The 65 most common of 75 parts.

harbaum/galagino
A Galaga, Pac-Man and Donkey Kong arcade emulator for the ESP32
RParkerE/OpenSilicon
OpenSilicon enables DIY semiconductor fabrication with open-source guides for building IC equipment at home. The project includes BOMs, 3D files, firmware, and PDKs, supporting makers and researchers in chip fabrication.

cole8888/SRNE-Solar-Charge-Controller-Monitor
Read data from SRNE solar charge controllers.




ste2425/PSP-Bluetooth-AVConnector
An AV-Out Breakout library for the PSP. Providing Kicad symbols and footprints to interface with the PSP 2/3K AVOut socket (also known as the TVOut socket)

It measures 190 × 75 mm and has 2 copper layers, 1.6 mm thick.
75 parts, built around the ESP32-DEVKITC-VE and SK6812MINI-E. 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 brimgit/MacroPad-Serial-To-Macros-GUI repository on GitHub, at the commit this page was made from: the board is PCB_files/KeyboardMacroPad.kicad_pcb and its schematic PCB_files/KeyboardMacroPad.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 brimgit before reusing the design.