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.