Magic Stick is a palm-sized Bluetooth input device designed for vibe coding.
I built it because AI-assisted coding changes the way I interact with a computer. Instead of typing every line manually, I often want to speak ideas, guide the AI, move around the screen, click, scroll, and trigger shortcuts with as little friction as possible. A full keyboard and mouse feel too heavy for this workflow, so I wanted a tiny handheld controller that could replace both in a lightweight way.
The device is based on an M5StickC-Plus and a JoyC joystick HAT. The joystick works as a Bluetooth mouse: moving the stick moves the cursor, pressing it clicks, and a special press-and-hold gesture enters scroll mode. The built-in microphone works as a Bluetooth system microphone, so I can use voice input with Typeless or other speech-to-text tools instead of typing. The device also sends an F15 shortcut, which can be mapped on macOS to launch or control a voice input workflow.
The screen shows a retro “Magic” dashboard with joystick position, IMU cube, microphone spectrum, and battery cells. A separate Status page shows Bluetooth mouse, HFP microphone, audio channel, battery, and pairing state.
The hardest part was making the joystick and microphone share the same compact hardware safely. They cannot run at the same time on the shared PortA pins, so the firmware switches hardware ownership when changing modes while keeping the Bluetooth connection alive.
Magic Stick is not just a gadget; it is an experiment in a new coding interface: speak to write, joystick to navigate, and one hand to stay in flow.









Comments