English | 简体中文
This project turns a Nintendo Switch Joy-Con into a lightweight controller for agent-assisted coding, replacing a small set of frequent desktop actions with mapped button shortcuts.
With Karabiner-Elements, the Joy-Con buttons are remapped to common keyboard shortcuts so it becomes easier to switch sessions, send instructions, and control tools like Claude Code and other coding agents without constantly reaching back to the keyboard.
It is mainly designed for an agent-assisted coding workflow:
- quickly switch between multiple Claude Code sessions
- pair with speech input tools to turn your ideas into agent-readable instructions faster
- move a small set of high-frequency actions onto the Joy-Con to reduce keyboard context switching
The current mapping focuses on a few actions that come up often when working with coding agents:
enterescapedelete_or_backspacecmd+enterctrl+ccmd+ccmd+v
src/json/joycon.json: editable source filedist/joycon.json: distributable Karabiner import filescripts/install.sh: installs the rule into Karabiner's local complex modifications directoryassets/screenshots/: screenshots for the GitHub README
./scripts/install.shThen open:
Karabiner-Elements > Complex Modifications > Add rule
Look for the rule set titled Switch Joycon Vibe Coding Karabiner Rules, then enable Joycon.
This copies the local rule file into Karabiner's complex_modifications directory.
Open Karabiner-Elements > Complex Modifications > Add rule, then find Switch Joycon Vibe Coding Karabiner Rules and enable Joycon.
After enabling it, the Joycon rule appears in the active Complex Modifications list.
You can also inspect the imported JSON directly from Karabiner's edit view.
button11->cmd+tabdpad_left->cmd+ctrl+[dpad_right->cmd+ctrl+]dpad_down->cmd+shift+[dpad_up->cmd+shift+]button5->cmd+cbutton6->cmd+vbutton9->delete_or_backspacebutton16->right_optionbutton14->cmd+grave_accent_and_tildebutton2->cmd+enterbutton1->ctrl+cbutton3->escapebutton4->enterbutton12->right_option+right_shiftbutton15->right_option+spacebar
If you want to add more rules later, it is recommended to update src/json/joycon.json first, verify the changes there, and then sync them to dist/joycon.json. This keeps the repository easier to maintain and makes it simpler to expand with more controller mappings over time.



