qmk_userspace/root_files_backup/CONFIG_HIERARCHY.md
Smathev 63991df09d Add QMK configuration and flashing documentation for fingerpunch/sweeeeep keyboard
- Created CONFIG_HIERARCHY.md to explain configuration file hierarchy and settings placement.
- Added FLASH_HANDEDNESS.md detailing the flashing process for split keyboard handedness using Liatris controllers.
- Introduced LIATRIS_QUICK_START.txt as a quick reference for handedness setup and flashing steps.
- Included LICENSE file for GNU General Public License v2.
- Added Makefile for building QMK firmware with user-specific configurations.
- Updated README.md with instructions for configuring and building QMK userspace.
- Created build_all.sh script to automate the building of regular and handedness initialization firmware.
- Added qmk.json to define userspace version and build targets.
2025-10-07 16:49:14 +02:00

122 lines
3.7 KiB
Markdown

# QMK Configuration Hierarchy
Understanding where to put your settings in QMK userspace.
## Configuration Priority (Highest to Lowest)
```
1. keyboards/.../keymaps/smathev/config.h ← HIGHEST PRIORITY (keyboard-specific)
↓ overrides
2. users/smathev/config.h ← USER DEFAULTS (all keyboards)
↓ overrides
3. keyboards/.../config.h ← KEYBOARD DEFAULTS
↓ overrides
4. QMK defaults ← LOWEST PRIORITY
```
## Your Current Setup
### 📁 `users/smathev/config.h`
**Purpose:** Settings that apply to ALL your keyboards
**What belongs here:**
- ✅ Tapping terms (`TAPPING_TERM`, `PERMISSIVE_HOLD`)
- ✅ Auto-shift settings (`AUTO_SHIFT_TIMEOUT`, `RETRO_SHIFT`)
- ✅ Combo preferences (`COMBO_REF_DEFAULT`)
- ✅ Personal preferences that don't change between keyboards
- ✅ Layout aliases (`LAYOUT_sweeeeep`)
**Example:**
```c
#define TAPPING_TERM 140
#define PERMISSIVE_HOLD
#define CASEMODES_ENABLE
```
### 📁 `keyboards/fingerpunch/sweeeeep/keymaps/smathev/config.h`
**Purpose:** Settings specific to THIS keyboard/keymap
**What belongs here:**
- ✅ Split keyboard settings (`EE_HANDS`, `SPLIT_USB_DETECT`)
- ✅ Hardware-specific features (`OLED_FONT_H`)
- ✅ Keyboard-specific overrides
- ✅ Split communication settings
**Example:**
```c
#define EE_HANDS
#define SPLIT_USB_DETECT
#define OLED_FONT_H "path/to/font.c"
```
## Why This Matters
### ❌ Wrong Approach:
Putting everything in `users/smathev/config.h`
- Split keyboard settings affect non-split keyboards
- OLED settings break keyboards without OLED
- Hardware-specific settings cause conflicts
### ✅ Correct Approach:
- **Userspace (`users/`)**: Personal preferences that work everywhere
- **Keymap (`keymaps/`)**: Keyboard-specific hardware and features
## Common Settings Placement
| Setting | Location | Reason |
|---------|----------|--------|
| `TAPPING_TERM` | `users/` | Personal preference |
| `EE_HANDS` | `keymaps/` | Split keyboard specific |
| `OLED_FONT_H` | `keymaps/` | Hardware specific |
| `COMBO_REF_DEFAULT` | `users/` | User preference |
| `SPLIT_USB_DETECT` | `keymaps/` | Split keyboard specific |
| `AUTO_SHIFT_TIMEOUT` | `users/` | Personal preference |
| `PERMISSIVE_HOLD` | `users/` | Personal preference |
## Your Configuration Files
### Current Structure:
```
qmk_userspace/
├── users/smathev/
│ ├── config.h ← User-wide settings
│ ├── rules.mk ← User-wide features
│ ├── combos.c/h
│ └── ...
└── keyboards/
└── fingerpunch/sweeeeep/
└── keymaps/smathev/
├── config.h ← Keyboard-specific settings (EE_HANDS here!)
├── keymap.c
└── keymap.json
```
## Testing Your Configuration
```bash
# Compile to see if settings are applied correctly
qmk compile -kb fingerpunch/sweeeeep -km smathev
# Check for configuration conflicts in warnings
qmk compile -kb fingerpunch/sweeeeep -km smathev 2>&1 | grep "config.h"
```
## Pro Tips
💡 **Use Comments:** Clearly mark which config file is for what purpose
💡 **Test on Multiple Keyboards:** If you add more keyboards, userspace settings will automatically apply
💡 **Override When Needed:** Keymap config.h can override userspace defaults
💡 **Keep It DRY:** Don't repeat settings - put them in the most appropriate place
## If You Add More Keyboards
When you add another keyboard (e.g., a 60% board):
1. **User settings automatically apply** (tapping, combos, etc.)
2. **Create keyboard-specific config.h** only for that keyboard's unique needs
3. **Split settings don't affect** your non-split boards
This is the power of QMK userspace! 🚀