mirror of
				https://github.com/qmk/qmk_userspace.git
				synced 2025-11-04 02:40:06 -05:00 
			
		
		
		
	Add handedness support and firmware build scripts for Fingerpunch Sweeeeep keyboard
This commit is contained in:
		
					parent
					
						
							
								cbaa62fa0d
							
						
					
				
			
			
				commit
				
					
						a26527d2ae
					
				
			
		
					 9 changed files with 673 additions and 13 deletions
				
			
		
							
								
								
									
										124
									
								
								BUILD_GUIDE.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								BUILD_GUIDE.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,124 @@
 | 
				
			||||||
 | 
					# QMK Firmware Build Guide for Fingerpunch Sweeeeep
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This guide explains how to build and flash firmware for your split keyboard with EE_HANDS.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Quick Start
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Build All Firmware Files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					./build_all.sh
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This creates three files:
 | 
				
			||||||
 | 
					- `fingerpunch_sweeeeep_smathev.uf2` - Regular firmware
 | 
				
			||||||
 | 
					- `fingerpunch_sweeeeep_smathev_LEFT.uf2` - LEFT hand initialization
 | 
				
			||||||
 | 
					- `fingerpunch_sweeeeep_smathev_RIGHT.uf2` - RIGHT hand initialization
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## First-Time Setup (One-Time Only)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You only need to do this ONCE to set the handedness in EEPROM:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. **Initialize LEFT keyboard half:**
 | 
				
			||||||
 | 
					   - Unplug both halves
 | 
				
			||||||
 | 
					   - Plug in the LEFT half
 | 
				
			||||||
 | 
					   - Double-tap RESET button on Liatris controller
 | 
				
			||||||
 | 
					   - Drag `fingerpunch_sweeeeep_smathev_LEFT.uf2` to the RPI-RP2 drive
 | 
				
			||||||
 | 
					   - Wait for it to disconnect/reconnect
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. **Initialize RIGHT keyboard half:**
 | 
				
			||||||
 | 
					   - Unplug both halves
 | 
				
			||||||
 | 
					   - Plug in the RIGHT half
 | 
				
			||||||
 | 
					   - Double-tap RESET button on Liatris controller
 | 
				
			||||||
 | 
					   - Drag `fingerpunch_sweeeeep_smathev_RIGHT.uf2` to the RPI-RP2 drive
 | 
				
			||||||
 | 
					   - Wait for it to disconnect/reconnect
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3. **Test:** Plug either half in via USB - keys should work correctly regardless of which side is plugged in!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Regular Firmware Updates
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					After handedness is initialized, use the regular firmware for all future updates:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. **Flash regular firmware to BOTH halves:**
 | 
				
			||||||
 | 
					   - Double-tap RESET on each half
 | 
				
			||||||
 | 
					   - Drag `fingerpunch_sweeeeep_smathev.uf2` to each
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					2. **Handedness is preserved:** The EEPROM remembers which half is which, so you don't need the `_LEFT` or `_RIGHT` files anymore (unless you want to change handedness).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## How It Works
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### EE_HANDS (EEPROM Handedness)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Each keyboard half stores its identity (LEFT or RIGHT) in EEPROM
 | 
				
			||||||
 | 
					- The handedness firmware (`_LEFT.uf2` and `_RIGHT.uf2`) initializes this EEPROM value on first flash
 | 
				
			||||||
 | 
					- After initialization, either half can be plugged in as master
 | 
				
			||||||
 | 
					- Regular firmware preserves the EEPROM handedness value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Build Process
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `build_all.sh` script:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. **Regular firmware:** Builds with `EE_HANDS` defined
 | 
				
			||||||
 | 
					2. **LEFT firmware:** Temporarily adds `INIT_EE_HANDS_LEFT` to config.h and builds
 | 
				
			||||||
 | 
					3. **RIGHT firmware:** Temporarily adds `INIT_EE_HANDS_RIGHT` to config.h and builds
 | 
				
			||||||
 | 
					4. **Restores:** Original config.h is restored after builds
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `INIT_EE_HANDS_LEFT/RIGHT` defines tell QMK to write the handedness to EEPROM on boot.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Troubleshooting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Keys are backwards when plugging in one side
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- You probably flashed the wrong `_LEFT` or `_RIGHT` file to the wrong keyboard half
 | 
				
			||||||
 | 
					- Solution: Re-flash with the correct handedness files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Master side always seems to be the same regardless of which I plug in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- The `EE_HANDS` setting may not be properly configured
 | 
				
			||||||
 | 
					- Check that `config.h` has `#define EE_HANDS` (not `MASTER_LEFT` or `MASTER_RIGHT`)
 | 
				
			||||||
 | 
					- Rebuild and reflash handedness files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### How do I reset/change handedness?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Simply flash the opposite handedness firmware to swap a keyboard half's identity
 | 
				
			||||||
 | 
					- Example: Flash `_RIGHT.uf2` to what was previously the LEFT half
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## File Structure
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					qmk_userspace/
 | 
				
			||||||
 | 
					├── build_all.sh                          # Main build script (builds all 3 files)
 | 
				
			||||||
 | 
					├── build_handedness_manual.sh            # Legacy handedness-only builder
 | 
				
			||||||
 | 
					├── fingerpunch_sweeeeep_smathev.uf2      # Regular firmware
 | 
				
			||||||
 | 
					├── fingerpunch_sweeeeep_smathev_LEFT.uf2 # LEFT initialization
 | 
				
			||||||
 | 
					├── fingerpunch_sweeeeep_smathev_RIGHT.uf2# RIGHT initialization
 | 
				
			||||||
 | 
					├── keyboards/
 | 
				
			||||||
 | 
					│   └── fingerpunch/
 | 
				
			||||||
 | 
					│       └── sweeeeep/
 | 
				
			||||||
 | 
					│           └── keymaps/
 | 
				
			||||||
 | 
					│               └── smathev/
 | 
				
			||||||
 | 
					│                   ├── config.h          # Keyboard-specific config (EE_HANDS)
 | 
				
			||||||
 | 
					│                   └── keymap.c          # Your keymap
 | 
				
			||||||
 | 
					└── users/
 | 
				
			||||||
 | 
					    └── smathev/
 | 
				
			||||||
 | 
					        ├── config.h                      # Userspace config
 | 
				
			||||||
 | 
					        ├── combos.c/h                    # Combo definitions
 | 
				
			||||||
 | 
					        └── ...
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Additional Notes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Liatris Controller
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- The Liatris uses RP2040 (same as Raspberry Pi Pico)
 | 
				
			||||||
 | 
					- Firmware files are `.uf2` format
 | 
				
			||||||
 | 
					- Double-tap RESET to enter bootloader mode (appears as RPI-RP2 drive)
 | 
				
			||||||
 | 
					- No need for QMK Toolbox - just drag and drop files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Configuration Hierarchy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. **users/smathev/config.h** - User preferences (applies to all keyboards)
 | 
				
			||||||
 | 
					2. **keyboards/.../keymaps/smathev/config.h** - Keyboard-specific overrides
 | 
				
			||||||
 | 
					3. **Keyboard defaults** - Base keyboard configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `EE_HANDS` setting is in the keyboard-specific config because it's hardware-dependent.
 | 
				
			||||||
							
								
								
									
										122
									
								
								CONFIG_HIERARCHY.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								CONFIG_HIERARCHY.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,122 @@
 | 
				
			||||||
 | 
					# 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! 🚀
 | 
				
			||||||
							
								
								
									
										163
									
								
								FLASH_HANDEDNESS.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								FLASH_HANDEDNESS.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,163 @@
 | 
				
			||||||
 | 
					# Flashing Split Keyboard Handedness (EE_HANDS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Your fingerpunch/sweeeeep keyboard with **Liatris controllers** uses `EE_HANDS` for split keyboard handedness detection. This means each half needs to be flashed with its handedness information stored in EEPROM.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> **Note:** The Liatris is an RP2040-based Pro Micro replacement controller. It uses `.uf2` files and bootloader mode for flashing.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Visual Guide
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					┌─────────────────────────────────────────────────────────┐
 | 
				
			||||||
 | 
					│  STEP 1: Build handedness firmware files                │
 | 
				
			||||||
 | 
					│  $ ./build_handedness.sh                                │
 | 
				
			||||||
 | 
					│    → Creates _LEFT.uf2 and _RIGHT.uf2                   │
 | 
				
			||||||
 | 
					└─────────────────────────────────────────────────────────┘
 | 
				
			||||||
 | 
					                        ↓
 | 
				
			||||||
 | 
					┌─────────────────────────────────────────────────────────┐
 | 
				
			||||||
 | 
					│  STEP 2: Flash LEFT half                                │
 | 
				
			||||||
 | 
					│  1. Unplug both halves                                  │
 | 
				
			||||||
 | 
					│  2. Plug in LEFT half                                   │
 | 
				
			||||||
 | 
					│  3. Double-tap RESET button on Liatris                  │
 | 
				
			||||||
 | 
					│  4. Drag _LEFT.uf2 to RPI-RP2 drive                     │
 | 
				
			||||||
 | 
					└─────────────────────────────────────────────────────────┘
 | 
				
			||||||
 | 
					                        ↓
 | 
				
			||||||
 | 
					┌─────────────────────────────────────────────────────────┐
 | 
				
			||||||
 | 
					│  STEP 3: Flash RIGHT half                               │
 | 
				
			||||||
 | 
					│  1. Unplug both halves                                  │
 | 
				
			||||||
 | 
					│  2. Plug in RIGHT half                                  │
 | 
				
			||||||
 | 
					│  3. Double-tap RESET button on Liatris                  │
 | 
				
			||||||
 | 
					│  4. Drag _RIGHT.uf2 to RPI-RP2 drive                    │
 | 
				
			||||||
 | 
					└─────────────────────────────────────────────────────────┘
 | 
				
			||||||
 | 
					                        ↓
 | 
				
			||||||
 | 
					┌─────────────────────────────────────────────────────────┐
 | 
				
			||||||
 | 
					│  STEP 4: Test                                           │
 | 
				
			||||||
 | 
					│  • Test each half independently (plug in solo)          │
 | 
				
			||||||
 | 
					│  • Both halves should work when connected               │
 | 
				
			||||||
 | 
					│  • If one acts wrong, re-flash that specific half       │
 | 
				
			||||||
 | 
					└─────────────────────────────────────────────────────────┘
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Quick Reference
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Build Commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					# Build LEFT hand firmware with EEPROM handedness
 | 
				
			||||||
 | 
					qmk compile -kb fingerpunch/sweeeeep -km smathev -e INIT_EE_HANDS_LEFT=yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build RIGHT hand firmware with EEPROM handedness  
 | 
				
			||||||
 | 
					qmk compile -kb fingerpunch/sweeeeep -km smathev -e INIT_EE_HANDS_RIGHT=yes
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Generated Files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					After building, you'll have:
 | 
				
			||||||
 | 
					- `fingerpunch_sweeeeep_smathev.uf2` - The most recent build (left OR right)
 | 
				
			||||||
 | 
					- Copy this immediately after building to preserve it!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Recommended Workflow
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					cd /home/smathev/git_dev/keyboards/qmk_userspace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build and save LEFT hand
 | 
				
			||||||
 | 
					qmk compile -kb fingerpunch/sweeeeep -km smathev -e INIT_EE_HANDS_LEFT=yes
 | 
				
			||||||
 | 
					cp fingerpunch_sweeeeep_smathev.uf2 fingerpunch_sweeeeep_smathev_LEFT.uf2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build and save RIGHT hand
 | 
				
			||||||
 | 
					qmk compile -kb fingerpunch/sweeeeep -km smathev -e INIT_EE_HANDS_RIGHT=yes
 | 
				
			||||||
 | 
					cp fingerpunch_sweeeeep_smathev.uf2 fingerpunch_sweeeeep_smathev_RIGHT.uf2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Now you have both files ready to flash
 | 
				
			||||||
 | 
					ls -lh fingerpunch_sweeeeep_smathev_*.uf2
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Flashing Instructions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### For Liatris Controllers (RP2040-based):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The **Liatris** has a **RESET button** (small button on the controller). To enter bootloader mode:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Method 1: Double-tap Reset (Recommended)
 | 
				
			||||||
 | 
					1. **Left Half:**
 | 
				
			||||||
 | 
					   - Unplug both halves
 | 
				
			||||||
 | 
					   - Plug in LEFT half
 | 
				
			||||||
 | 
					   - **Quickly double-tap the RESET button** on the Liatris controller
 | 
				
			||||||
 | 
					   - The controller will appear as a USB drive named `RPI-RP2`
 | 
				
			||||||
 | 
					   - Copy/drag `fingerpunch_sweeeeep_smathev_LEFT.uf2` to the `RPI-RP2` drive
 | 
				
			||||||
 | 
					   - The board will reboot automatically and disappear
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. **Right Half:**
 | 
				
			||||||
 | 
					   - Unplug both halves  
 | 
				
			||||||
 | 
					   - Plug in RIGHT half
 | 
				
			||||||
 | 
					   - **Quickly double-tap the RESET button** on the Liatris controller
 | 
				
			||||||
 | 
					   - The controller will appear as a USB drive named `RPI-RP2`
 | 
				
			||||||
 | 
					   - Copy/drag `fingerpunch_sweeeeep_smathev_RIGHT.uf2` to the `RPI-RP2` drive
 | 
				
			||||||
 | 
					   - The board will reboot automatically and disappear
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Method 2: Hold Boot + Plug In
 | 
				
			||||||
 | 
					1. If double-tap doesn't work, you can hold the BOOT button while plugging in the USB cable
 | 
				
			||||||
 | 
					2. The Liatris has a small BOOT button - check the controller PCB for its location
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> **💡 Tip:** If the `RPI-RP2` drive doesn't appear, try:
 | 
				
			||||||
 | 
					> - Double-tapping faster or slower
 | 
				
			||||||
 | 
					> - Using a different USB cable/port
 | 
				
			||||||
 | 
					> - Checking that the Liatris is properly seated in the sockets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3. **Test:**
 | 
				
			||||||
 | 
					   - Plug in ONLY the left half → keyboard should work
 | 
				
			||||||
 | 
					   - Plug in ONLY the right half → keyboard should work
 | 
				
			||||||
 | 
					   - If either half doesn't work solo, re-flash that half
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## After Initial Handedness Setup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Once each half has been flashed with its handedness, you can flash regular firmware to BOTH halves:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```bash
 | 
				
			||||||
 | 
					# Normal build (no handedness parameter)
 | 
				
			||||||
 | 
					qmk compile -kb fingerpunch/sweeeeep -km smathev
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Flash this to BOTH halves - handedness is preserved in EEPROM
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The handedness information persists in EEPROM through normal firmware updates!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Troubleshooting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### "Wrong half detected"
 | 
				
			||||||
 | 
					- Re-flash the problematic half with the handedness firmware
 | 
				
			||||||
 | 
					- Make sure you're copying the correct file (LEFT vs RIGHT)
 | 
				
			||||||
 | 
					- Verify you're flashing the correct physical half
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### "Both halves act as the same side"
 | 
				
			||||||
 | 
					- You need to flash different files to each half
 | 
				
			||||||
 | 
					- `*_LEFT.uf2` → left physical half (usually has the TRRS jack on the left side)
 | 
				
			||||||
 | 
					- `*_RIGHT.uf2` → right physical half (usually has the TRRS jack on the right side)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### "RPI-RP2 drive doesn't appear"
 | 
				
			||||||
 | 
					- **Liatris-specific:** Try double-tapping the RESET button faster or slower
 | 
				
			||||||
 | 
					- The timing can be finicky - practice a few times
 | 
				
			||||||
 | 
					- Make sure you're using a data USB cable (not charge-only)
 | 
				
			||||||
 | 
					- Try a different USB port
 | 
				
			||||||
 | 
					- Check that the Liatris is properly installed in the Pro Micro sockets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### "Keyboard not detected as USB device"
 | 
				
			||||||
 | 
					- Check USB cable (must be a data cable, not charge-only)
 | 
				
			||||||
 | 
					- Try a different USB port
 | 
				
			||||||
 | 
					- Verify the Liatris is correctly inserted (orientation matters!)
 | 
				
			||||||
 | 
					- Check for bent pins on the Liatris controller
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### "Compile fails with 'converter not found'"
 | 
				
			||||||
 | 
					- Your keymap should have `"converter": "liatris"` in `keymap.json`
 | 
				
			||||||
 | 
					- This tells QMK to build for the Liatris controller
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## File Naming Convention
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To avoid confusion, use this naming:
 | 
				
			||||||
 | 
					- `*_LEFT.uf2` - For the **left physical half**
 | 
				
			||||||
 | 
					- `*_RIGHT.uf2` - For the **right physical half**  
 | 
				
			||||||
 | 
					- `*.uf2` (no suffix) - Regular firmware (both halves)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Build Script
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Created: `build_handedness.sh` for easier building
 | 
				
			||||||
							
								
								
									
										81
									
								
								LIATRIS_QUICK_START.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								LIATRIS_QUICK_START.txt
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,81 @@
 | 
				
			||||||
 | 
					╔══════════════════════════════════════════════════════════════════╗
 | 
				
			||||||
 | 
					║  LIATRIS SPLIT KEYBOARD - HANDEDNESS QUICK REFERENCE            ║
 | 
				
			||||||
 | 
					╚══════════════════════════════════════════════════════════════════╝
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					🎯 YOUR SETUP: Fingerpunch Sweeeeep + Liatris (RP2040) Controllers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					 STEP 1: BUILD HANDEDNESS FIRMWARE
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Run this script to build both files:
 | 
				
			||||||
 | 
					  $ ./build_handedness.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Or manually:
 | 
				
			||||||
 | 
					  $ qmk compile -kb fingerpunch/sweeeeep -km smathev -e INIT_EE_HANDS_LEFT=yes
 | 
				
			||||||
 | 
					  $ cp fingerpunch_sweeeeep_smathev.uf2 fingerpunch_sweeeeep_smathev_LEFT.uf2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  $ qmk compile -kb fingerpunch/sweeeeep -km smathev -e INIT_EE_HANDS_RIGHT=yes
 | 
				
			||||||
 | 
					  $ cp fingerpunch_sweeeeep_smathev.uf2 fingerpunch_sweeeeep_smathev_RIGHT.uf2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					 STEP 2: FLASH LEFT HALF
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. ⚡ Unplug BOTH keyboard halves
 | 
				
			||||||
 | 
					2. 🔌 Plug in LEFT half to computer
 | 
				
			||||||
 | 
					3. 🔘 Double-tap RESET button on Liatris
 | 
				
			||||||
 | 
					   └─► A drive named "RPI-RP2" will appear
 | 
				
			||||||
 | 
					4. 📋 Copy fingerpunch_sweeeeep_smathev_LEFT.uf2 to the RPI-RP2 drive
 | 
				
			||||||
 | 
					5. ⏳ Board reboots automatically (drive disappears = success!)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					 STEP 3: FLASH RIGHT HALF
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. ⚡ Unplug BOTH keyboard halves
 | 
				
			||||||
 | 
					2. 🔌 Plug in RIGHT half to computer
 | 
				
			||||||
 | 
					3. 🔘 Double-tap RESET button on Liatris
 | 
				
			||||||
 | 
					   └─► A drive named "RPI-RP2" will appear
 | 
				
			||||||
 | 
					4. 📋 Copy fingerpunch_sweeeeep_smathev_RIGHT.uf2 to the RPI-RP2 drive
 | 
				
			||||||
 | 
					5. ⏳ Board reboots automatically (drive disappears = success!)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					 STEP 4: TEST
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					✓ Plug in ONLY left half  → Should type normally
 | 
				
			||||||
 | 
					✓ Plug in ONLY right half → Should type normally
 | 
				
			||||||
 | 
					✓ Connect both halves     → Should work as full split keyboard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If a half types the wrong keys, re-flash that specific half.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					 💡 TIPS & TROUBLESHOOTING
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					🔘 Finding the RESET button:
 | 
				
			||||||
 | 
					   - Small tactile button on the Liatris controller PCB
 | 
				
			||||||
 | 
					   - Usually located near the USB connector
 | 
				
			||||||
 | 
					   - Requires a small tool or fingernail to press
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					📱 Double-tap timing:
 | 
				
			||||||
 | 
					   - Tap quickly like a mouse double-click
 | 
				
			||||||
 | 
					   - Too slow = won't work, too fast = won't work
 | 
				
			||||||
 | 
					   - Practice a few times to get the timing right
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					❌ RPI-RP2 drive doesn't appear?
 | 
				
			||||||
 | 
					   - Try double-tapping faster or slower
 | 
				
			||||||
 | 
					   - Use a data USB cable (not charge-only)
 | 
				
			||||||
 | 
					   - Try a different USB port
 | 
				
			||||||
 | 
					   - Verify Liatris is properly seated in sockets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					🔄 After initial setup:
 | 
				
			||||||
 | 
					   - Future firmware updates can be flashed to BOTH halves
 | 
				
			||||||
 | 
					   - Handedness is saved in EEPROM and persists
 | 
				
			||||||
 | 
					   - Only need handedness files for the FIRST flash or after EEPROM reset
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					📚 Detailed documentation: FLASH_HANDEDNESS.md
 | 
				
			||||||
 | 
					🔧 Build script: ./build_handedness.sh
 | 
				
			||||||
							
								
								
									
										125
									
								
								build_all.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										125
									
								
								build_all.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,125 @@
 | 
				
			||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					# Complete firmware builder for fingerpunch/sweeeeep with Liatris
 | 
				
			||||||
 | 
					# Builds three versions:
 | 
				
			||||||
 | 
					#   1. Regular firmware (for normal use after handedness is set)
 | 
				
			||||||
 | 
					#   2. LEFT handedness initialization firmware
 | 
				
			||||||
 | 
					#   3. RIGHT handedness initialization firmware
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e  # Exit on error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					KEYBOARD="fingerpunch/sweeeeep"
 | 
				
			||||||
 | 
					KEYMAP="smathev"
 | 
				
			||||||
 | 
					OUTPUT_NAME="fingerpunch_sweeeeep_smathev"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CONFIG_FILE="$HOME/git_dev/keyboards/qmk_userspace/keyboards/fingerpunch/sweeeeep/keymaps/smathev/config.h"
 | 
				
			||||||
 | 
					BACKUP_FILE="${CONFIG_FILE}.backup"
 | 
				
			||||||
 | 
					QMK_FIRMWARE_DIR="$HOME/git_dev/keyboards/qmk_firmware"
 | 
				
			||||||
 | 
					OUTPUT_DIR="$HOME/git_dev/keyboards/latest_firmware"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					echo "🔨 Building ALL firmware versions for $KEYBOARD"
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "⚙️  Keyboard: $KEYBOARD"
 | 
				
			||||||
 | 
					echo "⚙️  Keymap: $KEYMAP"
 | 
				
			||||||
 | 
					echo "⚙️  Controller: Liatris (RP2040)"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Clean build
 | 
				
			||||||
 | 
					echo "🧹 Cleaning previous build..."
 | 
				
			||||||
 | 
					qmk clean > /dev/null 2>&1
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ============================================================================
 | 
				
			||||||
 | 
					# 1. Build REGULAR firmware (for normal use)
 | 
				
			||||||
 | 
					# ============================================================================
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					echo "📦 [1/3] Building REGULAR firmware..."
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					qmk compile -kb "$KEYBOARD" -km "$KEYMAP"
 | 
				
			||||||
 | 
					if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
					    cp "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}.uf2"
 | 
				
			||||||
 | 
					    echo "✅ Regular firmware: ${OUTPUT_NAME}.uf2"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    echo "❌ Regular firmware build failed!"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Backup original config for handedness builds
 | 
				
			||||||
 | 
					cp "$CONFIG_FILE" "$BACKUP_FILE"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ============================================================================
 | 
				
			||||||
 | 
					# 2. Build LEFT handedness initialization firmware
 | 
				
			||||||
 | 
					# ============================================================================
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					echo "📍 [2/3] Building LEFT hand initialization firmware..."
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					# Add INIT_EE_HANDS_LEFT to config
 | 
				
			||||||
 | 
					sed -i '/^#define EE_HANDS/a #define INIT_EE_HANDS_LEFT' "$CONFIG_FILE"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					qmk compile -kb "$KEYBOARD" -km "$KEYMAP"
 | 
				
			||||||
 | 
					if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
					    cp "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}_LEFT.uf2"
 | 
				
			||||||
 | 
					    echo "✅ LEFT hand firmware: ${OUTPUT_NAME}_LEFT.uf2"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    echo "❌ LEFT hand build failed!"
 | 
				
			||||||
 | 
					    cp "$BACKUP_FILE" "$CONFIG_FILE"
 | 
				
			||||||
 | 
					    rm "$BACKUP_FILE"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Restore config
 | 
				
			||||||
 | 
					cp "$BACKUP_FILE" "$CONFIG_FILE"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ============================================================================
 | 
				
			||||||
 | 
					# 3. Build RIGHT handedness initialization firmware
 | 
				
			||||||
 | 
					# ============================================================================
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					echo "📍 [3/3] Building RIGHT hand initialization firmware..."
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					# Add INIT_EE_HANDS_RIGHT to config
 | 
				
			||||||
 | 
					sed -i '/^#define EE_HANDS/a #define INIT_EE_HANDS_RIGHT' "$CONFIG_FILE"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					qmk compile -kb "$KEYBOARD" -km "$KEYMAP"
 | 
				
			||||||
 | 
					if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
					    cp "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}_RIGHT.uf2"
 | 
				
			||||||
 | 
					    echo "✅ RIGHT hand firmware: ${OUTPUT_NAME}_RIGHT.uf2"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    echo "❌ RIGHT hand build failed!"
 | 
				
			||||||
 | 
					    cp "$BACKUP_FILE" "$CONFIG_FILE"
 | 
				
			||||||
 | 
					    rm "$BACKUP_FILE"
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Restore original config
 | 
				
			||||||
 | 
					cp "$BACKUP_FILE" "$CONFIG_FILE"
 | 
				
			||||||
 | 
					rm "$BACKUP_FILE"
 | 
				
			||||||
 | 
					rm "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					echo "🎉 ALL FIRMWARE FILES BUILT SUCCESSFULLY!"
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "📁 Files created:"
 | 
				
			||||||
 | 
					ls -lh "$OUTPUT_DIR/${OUTPUT_NAME}.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}_LEFT.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}_RIGHT.uf2"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					echo "📝 USAGE GUIDE:"
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "🔧 FIRST-TIME SETUP (Set handedness in EEPROM):"
 | 
				
			||||||
 | 
					echo "   1. Flash ${OUTPUT_NAME}_LEFT.uf2 to LEFT keyboard half"
 | 
				
			||||||
 | 
					echo "   2. Flash ${OUTPUT_NAME}_RIGHT.uf2 to RIGHT keyboard half"
 | 
				
			||||||
 | 
					echo "   3. Only do this ONCE to initialize handedness"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "🔄 REGULAR UPDATES (After handedness is set):"
 | 
				
			||||||
 | 
					echo "   1. Flash ${OUTPUT_NAME}.uf2 to BOTH keyboard halves"
 | 
				
			||||||
 | 
					echo "   2. Handedness is preserved in EEPROM"
 | 
				
			||||||
 | 
					echo "   3. Either half can be plugged in as master"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "💡 TIP: To enter bootloader, double-tap RESET on Liatris"
 | 
				
			||||||
 | 
					echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 | 
				
			||||||
							
								
								
									
										46
									
								
								keyboards/fingerpunch/sweeeeep/keymaps/smathev/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								keyboards/fingerpunch/sweeeeep/keymaps/smathev/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,46 @@
 | 
				
			||||||
 | 
					/* Copyright 2022 Sadek Baroudi
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is free software: you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 * the Free Software Foundation, either version 2 of the License, or
 | 
				
			||||||
 | 
					 * (at your option) any later version.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					 * GNU General Public License for more details.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ============================================================================
 | 
				
			||||||
 | 
					// KEYBOARD-SPECIFIC CONFIGURATION (fingerpunch/sweeeeep)
 | 
				
			||||||
 | 
					// These settings override userspace and keyboard defaults
 | 
				
			||||||
 | 
					// ============================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Split keyboard handedness detection method
 | 
				
			||||||
 | 
					// IMPORTANT: This must be set for EE_HANDS to work properly
 | 
				
			||||||
 | 
					#define EE_HANDS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Alternative methods (comment out EE_HANDS and use one of these if needed):
 | 
				
			||||||
 | 
					// #define MASTER_LEFT       // Left half is always master (USB connection side)
 | 
				
			||||||
 | 
					// #define MASTER_RIGHT      // Right half is always master (USB connection side)
 | 
				
			||||||
 | 
					// #define SPLIT_HAND_PIN    // Use a specific pin to detect handedness
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Split keyboard communication settings
 | 
				
			||||||
 | 
					// NOTE: SPLIT_USB_DETECT is NOT needed with EE_HANDS
 | 
				
			||||||
 | 
					// EE_HANDS automatically detects USB side as master
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Split keyboard features synchronization
 | 
				
			||||||
 | 
					#define SPLIT_LAYER_STATE_ENABLE   // Sync layer state between halves
 | 
				
			||||||
 | 
					#define SPLIT_MODS_ENABLE          // Sync modifier keys between halves
 | 
				
			||||||
 | 
					#define SPLIT_WPM_ENABLE           // Sync WPM counter between halves
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// OLED configuration (sweeeeep-specific)
 | 
				
			||||||
 | 
					#define OLED_FONT_H "keyboards/fingerpunch/sweeeeep/keymaps/smathev/glcdfont.c"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Backwards compatibility with existing keymaps
 | 
				
			||||||
 | 
					#define LAYOUT_sweeeeep LAYOUT_split_3x5_3
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,8 @@ const uint16_t PROGMEM ctcl_combo[] = {FP_SUPER_TAB, KC_PGDN, COMBO_END}; // L1_
 | 
				
			||||||
const uint16_t PROGMEM cancel_combo[] = {KC_LEFT, KC_HOME, COMBO_END}; // l2_K1 + L2_K2
 | 
					const uint16_t PROGMEM cancel_combo[] = {KC_LEFT, KC_HOME, COMBO_END}; // l2_K1 + L2_K2
 | 
				
			||||||
const uint16_t PROGMEM ctrop_combo[] = {FP_SUPER_TAB, KC_PGDN, KC_UP, COMBO_END}; // L1_K3 + L1_K4 + L1_K5
 | 
					const uint16_t PROGMEM ctrop_combo[] = {FP_SUPER_TAB, KC_PGDN, KC_UP, COMBO_END}; // L1_K3 + L1_K4 + L1_K5
 | 
				
			||||||
const uint16_t PROGMEM ffive_combo[] = {KC_U, KC_G, COMBO_END}; // L1_K3 + L1_K4
 | 
					const uint16_t PROGMEM ffive_combo[] = {KC_U, KC_G, COMBO_END}; // L1_K3 + L1_K4
 | 
				
			||||||
const uint16_t PROGMEM reset_keyboard_combo[] = {KC_U, KC_G, KC_J, COMBO_END}; // L1_K3 + L1_K4 + L1_K5
 | 
					const uint16_t PROGMEM reset_keyboard_left_combo[] = {KC_J, KC_M, KC_C, COMBO_END}; // L1_K3 + L1_K4 + L1_K5
 | 
				
			||||||
 | 
					const uint16_t PROGMEM reset_keyboard_right_combo[] = {KC_B, KC_P, KC_W, COMBO_END}; // L1_K3 + L1_K4 + L1_K5
 | 
				
			||||||
combo_t key_combos[COMBO_COUNT] = {
 | 
					combo_t key_combos[COMBO_COUNT] = {
 | 
				
			||||||
  COMBO(undo_combo, LCTL(KC_Z)),
 | 
					  COMBO(undo_combo, LCTL(KC_Z)),
 | 
				
			||||||
  COMBO(copy_combo, LCTL(KC_C)),
 | 
					  COMBO(copy_combo, LCTL(KC_C)),
 | 
				
			||||||
| 
						 | 
					@ -36,7 +37,8 @@ combo_t key_combos[COMBO_COUNT] = {
 | 
				
			||||||
  COMBO(bcksp_combo, KC_BSPC),
 | 
					  COMBO(bcksp_combo, KC_BSPC),
 | 
				
			||||||
  COMBO(del_combo, KC_DEL),
 | 
					  COMBO(del_combo, KC_DEL),
 | 
				
			||||||
  COMBO(esc_combo, KC_ESC),
 | 
					  COMBO(esc_combo, KC_ESC),
 | 
				
			||||||
  COMBO(reset_keyboard_combo, QK_BOOT)
 | 
					  COMBO(reset_keyboard_left_combo, QK_BOOT),
 | 
				
			||||||
 | 
					  COMBO(reset_keyboard_right_combo, QK_BOOT)
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Define the number of combos
 | 
					// Define the number of combos
 | 
				
			||||||
#define COMBO_COUNT 17
 | 
					#define COMBO_COUNT 18
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Combo array declaration
 | 
					// Combo array declaration
 | 
				
			||||||
extern combo_t key_combos[COMBO_COUNT];
 | 
					extern combo_t key_combos[COMBO_COUNT];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,22 +16,19 @@
 | 
				
			||||||
#define ENABLE_COMPILE_KEYCODE
 | 
					#define ENABLE_COMPILE_KEYCODE
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Userspace-specific configuration
 | 
					// ============================================================================
 | 
				
			||||||
// Hardware-specific settings should be in the keyboard's config.h or info.json
 | 
					// USERSPACE-WIDE CONFIGURATION
 | 
				
			||||||
 | 
					// These settings apply to ALL keyboards using the smathev userspace
 | 
				
			||||||
 | 
					// For keyboard-specific settings, use keyboards/.../keymaps/smathev/config.h
 | 
				
			||||||
 | 
					// ============================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Tapping and timing configuration
 | 
					// Tapping and timing configuration
 | 
				
			||||||
#define TAPPING_TERM 140
 | 
					#define TAPPING_TERM 140
 | 
				
			||||||
#define PERMISSIVE_HOLD         // Activate mod immediately when another key pressed
 | 
					#define PERMISSIVE_HOLD         // Activate mod immediately when another key pressed
 | 
				
			||||||
#define AUTO_SHIFT_TIMEOUT 170  // Slightly longer than TAPPING_TERM
 | 
					#define AUTO_SHIFT_TIMEOUT 170  // Slightly longer than TAPPING_TERM
 | 
				
			||||||
#define RETRO_SHIFT
 | 
					#define RETRO_SHIFT             // Enable retroactive shift
 | 
				
			||||||
#define RETRO_TAPPING
 | 
					#define RETRO_TAPPING           // Enable retroactive tapping
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Combo configuration
 | 
					// Combo configuration
 | 
				
			||||||
#define CASEMODES_ENABLE
 | 
					#define CASEMODES_ENABLE
 | 
				
			||||||
#define COMBO_REF_DEFAULT _NORTO
 | 
					#define COMBO_REF_DEFAULT _NORTO
 | 
				
			||||||
 | 
					 | 
				
			||||||
// Backwards compatibility with existing keymaps
 | 
					 | 
				
			||||||
#define LAYOUT_sweeeeep LAYOUT_split_3x5_3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Custom font for OLED (if keyboard has OLED enabled)
 | 
					 | 
				
			||||||
#define OLED_FONT_H "keyboards/fingerpunch/sweeeeep/keymaps/smathev/glcdfont.c"
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue