- Added OLED functionality in keymap.c with custom rendering for layers and modifiers. - Created a Python script to generate simple icons for OLED displays. - Introduced a new rules.mk file to enable OLED features for the keymap. - Developed an OLED font helper script for visualizing and designing custom graphics. - Redesigned OLED layout to fit 128x32 displays, optimizing space for logos and layer indicators. - Implemented flow tap functionality in flow_tap.c for enhanced key responsiveness.
		
			
				
	
	
		
			133 lines
		
	
	
	
		
			6.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
	
		
			6.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/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"
 | 
						|
 | 
						|
QMK_USERSPACE_DIR="$HOME/git_dev/keyboards/qmk_userspace"
 | 
						|
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 "🧹 Cleaning previous output files..."
 | 
						|
rm -rf "$OUTPUT_DIR/${OUTPUT_NAME}.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}_LEFT.uf2" "$OUTPUT_DIR/${OUTPUT_NAME}_RIGHT.uf2"
 | 
						|
mkdir -p "$OUTPUT_DIR"
 | 
						|
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"
 | 
						|
echo "removing $QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2"
 | 
						|
rm "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2"
 | 
						|
echo "$QMK_FIRMWARE_DIR/${OUTPUT_NAME}.uf2 removed successfully"
 | 
						|
echo "removing $QMK_USERSPACE_DIR/${OUTPUT_NAME}.uf2"
 | 
						|
rm "$QMK_USERSPACE_DIR/${OUTPUT_NAME}.uf2"
 | 
						|
echo "$QMK_USERSPACE_DIR/${OUTPUT_NAME}.uf2 removed successfully"
 | 
						|
 | 
						|
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 "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
 |