KarabinerKeyboard
A layer-based alternative to Karabiner Elements UI
Install / Use
/learn @bilbofroggins/KarabinerKeyboardREADME
Overview
Karabiner Keyboard is a user interface designed to simplify the customization of keyboard configurations using Karabiner-Elements. It eliminates the need to manually edit JSON files by providing a friendly UI for writing configurations directly to the Karabiner-Elements JSON file. This tool took inspiration from qmk, where users can adjust their keyboard settings through layers without diving into complex key overrides.
Instructions
For the latest release, please check the Releases section of this repository. Download & extract the zip file. The app stores a yaml file behind the scenes within ~/.config/karabiner_keyboard that gets translated into a karabiner config rule called "KBKeyboard" underneath complex modifications.
From the Keyboard panel, press the keys you want to change, or click on the key. You can configure keys using several types:
Keybinding: Override the key with a single sequence or an array of "to" sequences.
Layer: Create keyboard layers with different activation modes:
- Layer|MO = Momentary (layer activates while holding the key, resets when released)
- Layer|LT = Layer with Tap (momentary layer, but taps the key if no layer keys were pressed)
- Layer|TO = Toggle (one tap toggles the layer on; use another key to toggle back)
Shell: Execute shell commands when a key is pressed.
Conditional: Use variables to create dynamic behavior:
- Get mode: Make a key only activate when a variable is true (adds an
ifcondition) - Toggle mode: Make a key toggle a variable between true/false
Variables allow you to create modes (like vim mode, gaming mode, etc.) where certain keys only work when that mode is active, and other keys toggle the modes on/off.
Then click "Merge to config" in the top right to merge it to the Karabiner-Elements config file, and you should be good to go!
Note: Configuration and logs are stored in ~/.config/karabiner_keyboard/ (including errors.log and update.log).
Limitations
English only hardcoded default keyboard at the moment Some assumptions are made
- Most key overrides are set to "repeat": false
- Most key overrides have all mod keys as optional
- You will not jump back up layers when using MO type. For example, having a "MO to layer 1" key set on layer 4
Prerequisites
Before using Better Keyboard UI, ensure that Karabiner-Elements is installed on your machine.
Contributing
Prerequisites for Development
First, install uv if you haven't already:
curl -LsSf https://astral.sh/uv/install.sh | sh
Development - Running the app
export PYTHONPATH=.
uv sync
uv run python src/main.py
Building for distribution
uv sync --all-extras # Installs dev dependencies including pyinstaller
uv run bundle-app
The app will be built to dist/KarabinerKeyboard.app and can be run locally.
For public distribution (optional): To notarize the app for macOS Gatekeeper, create a .env file in the project root with your Apple Developer credentials:
APPLE_ID=your-apple-id@example.com
APPLE_TEAM_ID=your-team-id
KK_APP_SPECIFIC_PASSWORD=your-app-specific-password
Related Skills
node-connect
347.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
