A Python-based configuration generator for Karabiner Elements that transforms your Caps Lock into a powerful Hyper key with multiple sublayers of functionality.
- Primary Hyper Key: Caps Lock transforms into a powerful modifier key
- When pressed alone: Acts as Escape
- When held: Activates Hyper mode for accessing all sublayers
Direct commands without entering a sublayer:
Spacebar- Open/Close AlfredPeriod- Open/Close AlfredT- Open Things3K- Open Authy
B + X- Open X (Twitter)B + T- Open TokopediaB + G- Open Google MeetB + R- Open RedditB + S- Open Shopee
O + P- Open PasswordsO + V- Open OpenVPN ConnectO + S- Open SlackO + C- Open CanvaO + N- Open ObsidianO + T- Open iTermO + F- Open FinderO + M- Open MessagesO + A- Open ArcO + R- Open Screen Studio Beta
W + ;- Hide windowW + Y/O- Move to previous/next displayW + K/J- Top/bottom halfW + H/L- Left/right halfW + F- MaximizeW + R- RestoreW + C- CenterW + [/]- Smaller/largerW + U/I- Previous/next tabW + T- Switch window in same app
I + K- Run Kitabisa download scriptI + F- Run Fastfetch
S + D- Run delete old media scriptS + .- Start Screen SaverS + L- Lock systemS + V- Quick Look
V + H/J/K/L- Arrow keysV + U/I- Page Down/Up
C + P- Play/pauseC + N- Next trackC + B- Previous track
A + Space- Continue ChatA + H- History ChatA + I- Action Inference ChatA + C- Clipboard HistoryA + S- Snippets
- New Content:
X + N- New designX + P- New presentationX + I- New Instagram postX + S- New storyX + F- New Facebook postX + V- New video
- Resources:
X + T- TemplatesX + H- PhotosX + E- ElementsX + O- Fonts
- Management:
X + M- ProjectsX + B- Brand kitX + D- DesignsX + L- Logos
Special shortcuts when Arc browser is active:
Hyper + N- New incognito windowHyper + L- Open little browserHyper + =- Toggle split view
- Karabiner Elements installed
- Python 3.x installed
- Rectangle for window management
- iTerm2 for terminal commands
- Alfred for Alfred workflows
- Arc Browser for Arc-specific features
- Clone the repository:
git clone https://github.com/ariestwn/karabiner.git
cd karabiner- Generate the configuration:
python generate.py- Copy the generated configuration:
cp karabiner.json ~/.config/karabiner/karabiner/
├── config/
│ ├── __init__.py # Package initialization and exports
│ ├── models.py # Data models for Karabiner configuration
│ ├── types.py # Type definitions
│ ├── actions.py # Action helper functions
│ ├── sublayers.py # Sublayer creation logic
│ ├── settings.py # Sublayer configurations
│ └── apps/
│ └── arc.py # Arc browser specific configurations
└── generate.py # Main configuration generator
Edit config/settings.py to modify existing sublayers or add new ones:
SUBLAYER_BROWSER = {
"x": open_app("https://x.com"),
# Add more browser shortcuts
}
SUBLAYER_APPS = {
"s": app("Slack"),
# Add more app shortcuts
}Add new action helpers in config/actions.py:
def my_custom_action(param: str) -> Dict:
return {
"to": [To(shell_command=f"my_command {param}")],
"description": f"My custom action: {param}"
}Edit device profiles in config/device_profiles.py:
def create_device_profile() -> Dict[str, Any]:
return {
"disable_built_in_keyboard_if_exists": True,
"identifiers": {
"product_id": YOUR_PRODUCT_ID,
"vendor_id": YOUR_VENDOR_ID
}
}- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a new Pull Request
MIT License - feel free to use and modify as needed.