11 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Plan de Optimización del Keymap - Corne (Crkbd)
Análisis y recomendaciones basadas en estudios ergonómicos de 2025
📊 Resumen Ejecutivo
Este documento presenta un plan estructurado para optimizar el keymap del teclado Corne basado en:
- Análisis del keymap actual
 - Investigación de layouts ergonómicos de 2025
 - Estudios de frecuencia de bigrams en programación
 - Mejores prácticas de home row mods en QMK
 
✅ Fase 1 - COMPLETADA (Enero 2025)
Cambios Implementados
- Optimización de timing: TAPPING_TERM 220ms → 200ms
 - Configuración avanzada: PERMISSIVE_HOLD, BILATERAL_COMBINATIONS
 - Combos útiles: 5 nuevos combos para operaciones frecuentes
 - Limpieza de capas: Eliminación de copy/paste duplicado
 - Corrección técnica: HM_L de LALT_T a RALT_T
 
Beneficios Obtenidos
- 0 días de adaptación - Solo mejoras aditivas
 - Mejor respuesta de home row mods
 - Reducción de fatiga en pulgares con combos alternativos
 - Mayor consistencia en modifier layout
 
Combos Añadidos
J+K = ESC adicional          (50-100 usos/día)
D+F = TAB adicional          (200+ usos/día)  
K+L = Delete word derecha    (Nuevo - 100+ usos/día)
S+D = Delete word izquierda  (Nuevo - 100+ usos/día)
,+. = ENTER adicional        (300+ usos/día)
🟢 Fase 2 - Impacto Medio (1-2 semanas adaptación)
2.1 Per-Key Tapping Terms
Objetivo: Optimizar timing según fuerza de cada dedo
Implementación:
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case HM_F: case HM_J: return 180;  // Índices más rápidos
        case HM_A: case HM_SCLN: return 250;  // Meñiques más lentos
        default: return TAPPING_TERM;
    }
}
Beneficios:
- Menos activaciones accidentales en dedos débiles
 - Respuesta más rápida en dedos fuertes
 - Typing más natural y menos errores
 
2.2 Implementación de Tap Dance para Símbolos
Objetivo: Consolidar 16+ símbolos frecuentes en 8 tap dances para máxima eficiencia
Análisis de frecuencia personal:
.(1,054,817) -,(443,890) -/(543,499) --(383,003)()(735,492 total) -=(342,151) -{}(462,028 total) -<>(267,609 total)
SYMBOL_NEW layer (implementación con tap dance):
Mano derecha optimizada:
┌─────┬─────┬─────┬─────┬─────┬─────┐
│  `  │TD_AM│  *  │TD_SL│  ^  │     │  Row superior
├─────┼─────┼─────┼─────┼─────┼─────┤
│TD_EQ│TD_J │TD_K │TD_SC│TD_L │     │  Home row (5 TDs)
├─────┼─────┼─────┼─────┼─────┼─────┤
│  ~  │TD_MN│  :  │TD_EX│  %  │     │  Row inferior
└─────┴─────┴─────┴─────┴─────┴─────┘
        Thumbs: @ # $
8 Tap Dances:
- TD_J:  { | {} | }
- TD_K:  ( | () | ("") | () => {} | )
- TD_SC: < | <> | <= | >
- TD_L:  [ | [] | [0] | ]
- TD_EQ: = | == | += | +
- TD_SL: / | // | \
- TD_MN: - | -- | => | _
- TD_AM: & | && | || | |
- TD_EX: ! | != | ?
Estrategia de implementación:
- L_TAB → SYMBOL_NEW (nueva capa optimizada)
 - L_ESC → SYMBOL (mantener como backup temporal)
 - Período de evaluación: 2-3 semanas
 - Una vez validado → eliminar SYMBOL antigua
 
Impacto:
- 16 símbolos consolidados en 8 teclas
 - Reducción 50% en cambios de layer
 - Patrones de código comunes en 2-4 taps
 
2.3 Optimización de Navegación
Problemas identificados:
- Page Up/Down requieren stretching
 - Word navigation poco intuitiva
 - Arrows en posiciones subóptimas para programadores
 
Mejoras:
- Word movement en home row
 - Page navigation más accesible
 - Consistency con vim shortcuts (preparación Fase 4)
 
🟡 Fase 3 - Impacto Alto (2-3 semanas adaptación)
3.1 Transición Gradual y Eliminación de Capas
Problema resuelto: SYMBOL y SYMBOL2 fragmentaban símbolos relacionados
Implementación por fases:
Fase A - Transición (2-3 semanas):
- L_TAB → SYMBOL_NEW (tap dances optimizados)
 - L_ESC → SYMBOL (backup de seguridad)
 - Entrenamiento gradual en tap dances
 - Fallback a SYMBOL cuando sea necesario
 
Fase B - Consolidación (evaluación):
- Medir eficiencia y comfort con SYMBOL_NEW
 - Identificar patrones problemáticos
 - Ajustar timings y configuraciones si necesario
 
Fase C - Finalización:
- Eliminar SYMBOL y SYMBOL2 completamente
 - Liberar L_ESC para otros usos (UTIL, macros, etc.)
 - Una sola capa de símbolos ultra-optimizada
 
Beneficios finales:
- 2 capas eliminadas (SYMBOL + SYMBOL2)
 - 1 tecla de thumb liberada (L_ESC)
 - Símbolos más eficientes por tap dance
 - Patrones de programación integrados
 
3.2 Reasignación de Layer-Tap Problemático
Problema: Z es muy frecuente para ser layer-tap (undo, palabras con Z)
Opciones evaluadas:
- NAV en X (Recomendado): Cut menos frecuente que undo
 - NAV en V: Paste relocatable a combo
 - NAV en Q: Letra menos usada, pero alcance de meñique
 
Implementación:
- Reasignar L_Z → L_X
 - Combo Z+C = Cut (C(KC_X))
 - Mantener NAV en mano izquierda
 
3.3 Optimización de Thumb Keys
Análisis de frecuencia actual:
L_ESC  - SYMBOL2  (medio uso)
L_TAB  - SYMBOL   (alto uso)  
L_SPC  - NUMBER   (muy alto uso)
L_ENT  - DEV      (alto uso)
L_BK   - FUNC     (medio uso)
L_DEL  - MEDIA    (bajo uso)
Optimización propuesta: Mover MEDIA a combo, usar thumb para función más frecuente
🔴 Fase 4 - Impacto Extremo (1-2 meses adaptación)
4.1 Navegación Estilo Vim
Transformación completa:
Actual:    ↑←↓→ en disposición estándar
Propuesto: HJKL (H=←, J=↓, K=↑, L=→)
Justificación:
- Standard en vim/nvim, terminal apps
 - Home row permanente durante navegación
 - Integración natural con shortcuts de desarrollo
 
Consideración: Solo para usuarios avanzados de vim
4.2 Combos Avanzados de Programación
Macros inteligentes:
Combos propuestos:
- Function declaration patterns
- Arrow function sequences  
- Bracket auto-completion
- Common programming constructs
4.3 Capas Contextuales
Sistema adaptativo:
- Capas que cambian según aplicación activa
 - Profiles para diferentes workflows
 - Integration con herramientas de desarrollo
 
🔧 Configuración Técnica de Tap Dance
Configuración QMK necesaria:
// En config.h
#define TAP_DANCE_ENABLE
#define TAPPING_TERM 200
#define TAPPING_TERM_PER_KEY
// Enum para tap dances
enum tap_dances {
    TD_J_BRACES,    // Llaves
    TD_K_PARENS,    // Paréntesis
    TD_SC_ANGLES,   // Ángulos
    TD_L_BRACKETS,  // Corchetes
    TD_EQ_PLUS,     // Equal/Plus
    TD_SL_BACK,     // Slash/Backslash
    TD_MN_UNDER,    // Minus/Underscore
    TD_AM_PIPE,     // Ampersand/Pipe
    TD_EX_QUEST,    // Exclamation/Question
};
// Funciones personalizadas para cada tap dance
void td_k_finished(qk_tap_dance_state_t *state, void *user_data) {
    switch (state->count) {
        case 1:
            if (state->pressed) {
                register_code16(KC_RPRN);  // Hold = )
            } else {
                register_code16(KC_LPRN);  // 1 tap = (
            }
            break;
        case 2:
            SEND_STRING("()");
            tap_code(KC_LEFT);              // 2 taps = ()←
            break;
        case 3:
            SEND_STRING("(\"\"");
            tap_code(KC_LEFT);
            tap_code(KC_LEFT);              // 3 taps = ("")←←
            break;
        case 4:
            SEND_STRING("() => {}");
            tap_code(KC_LEFT);
            tap_code(KC_LEFT);
            tap_code(KC_LEFT);              // 4 taps = () => {}←←←
            break;
    }
}
Timing optimizado por dedo:
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case TD_J_BRACES:
        case TD_K_PARENS:  return 180;  // Índice/medio más rápidos
        case TD_L_BRACKETS: return 220; // Meñique más lento
        case TD_SC_ANGLES:  return 200; // Anular estándar
        default: return TAPPING_TERM;
    }
}
🔧 Fase 5 - Optimizaciones Futuras
5.1 Análisis Post-Implementación
Métricas a evaluar (post tap dance):
- Velocidad de typing en símbolos frecuentes
 - Tasa de error en tap dances vs teclas simples
 - Fatiga subjetiva después de sesiones largas
 - Patrones de uso real de cada tap dance
 
5.2 Expansiones Avanzadas
Si tap dance funciona bien:
- Combos adicionales para símbolos menos frecuentes
 - Macros contextuales por aplicación
 - Auto-shift para pares de símbolos
 - Integration con snippets de código
 
📈 Métricas de Éxito
Objetivos Cuantificables
- Consolidación: 16+ símbolos en 8 tap dances
 - Reducción de capas: Eliminar SYMBOL y SYMBOL2 (2 capas → 1)
 - Eficiencia: Patrones comunes en 2-4 taps (!=, ==, &&, ||, =>, //)
 - Ergonomía: Todo en mano derecha, sin stretching con pulgar ocupado
 - Velocidad: Símbolos frecuentes en 1 tap sin latencia adicional
 
Métricas de Seguimiento
- WPM antes/después de cada fase
 - Análisis de heat maps de dedos
 - Medición de fatiga subjetiva
 - Time to proficiency para cada cambio
 
🚦 Estrategia de Implementación
Principios Guía
- Incremental: Una fase a la vez
 - Evidence-based: Medir antes de avanzar
 - Reversible: Backup configs para rollback
 - Personal: Adaptar a tu workflow específico
 
Cronograma Recomendado
Semana 1-2:  Usar Fase 1, evaluar beneficios
Semana 3-4:  Implementar Fase 2 si Fase 1 exitosa  
Mes 2-3:     Fase 3 solo si necesario
Mes 4+:      Fases 4-5 para usuarios power
Criterios de Avance
- Comfort level: 90% proficiency antes de siguiente fase
 - Benefit validation: Mejoras medibles en velocidad/comfort
 - Stability: Sin regressions en typing accuracy
 
📚 Referencias y Recursos
Estudios Base (2025)
- Home row mods timing optimization research
 - Bigram frequency analysis for programming languages
 - Ergonomic keyboard layout effectiveness studies
 - QMK community best practices
 
Herramientas de Análisis
- KeymapDB para comparación con otros layouts
 - Typing speed analyzers
 - Heat map generators
 - SFB (Same-Finger Bigram) analyzers
 
Comunidad y Soporte
- QMK Discord para troubleshooting
 - r/ErgoMechKeyboards para feedback
 - Keyboard layout optimization forums
 
🔄 Versionado
- v1.0: Análisis inicial y Fase 1 (Enero 2025)
 - v1.1: Corrección HM_L y combos optimizados
 - v2.0: (Planificado) Implementación Tap Dance para símbolos
 - v2.1: (Planificado) Transición gradual con backup SYMBOL
 - v3.0: (Planificado) Eliminación final de capas redundantes
 
Documento creado: Enero 2025
Última actualización: Post-Fase 1
Próxima revisión: Post-implementación Fase 2