- 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.
124 lines
4.4 KiB
Markdown
124 lines
4.4 KiB
Markdown
# 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.
|