gioser

sergio/humanoid

HTML 13TOML 10 Sutichaykuna

Trazo: layout MessagEase auténtico + fila de funciones sobre la barra de nav

- Mapa de swipes reemplazado por el layout MessagEase real (verificado contra la
  fuente de Thumb-Key, sucesor FOSS): A↘v N↓l I↙x H→k R←m T↗y S↖f; centro O con
  ↖q↑u↗p→b↘j↓d↙g←c; E con w/z/'/:/./, . Añadida Ñ (↑ en la N) para español.
- navigationBarsPadding en el teclado para que la fila de funciones (?123, espacio,
  borrar, enter, shift) no quede tapada por la barra de navegación.

Ref: github.com/dessalines/thumb-key (ENMessagEase.kt)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

f809af7f4e2025f1b8c420daa6cf585dd2b7966e · ruwaq sergio · (4 killa ñawpaq) · tayta efc233ed8 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

2 qillqakuna · +26 −17

diff --git a/keyboard/src/main/java/com/rizoma/trazo/model/KeyLayout.kt b/keyboard/src/main/java/com/rizoma/trazo/model/KeyLayout.kt
index ef3a776..4d1756c 100644
--- a/keyboard/src/main/java/com/rizoma/trazo/model/KeyLayout.kt
+++ b/keyboard/src/main/java/com/rizoma/trazo/model/KeyLayout.kt
@@ -20,30 +20,36 @@ data class KeyDef(
 object Layouts {
 
     /**
-     * Letras — remaster del espíritu MessagEase para español.
-     * Los 9 toques son las letras más frecuentes en su posición MessagEase clásica
-     * (A N I / H O R / T E S). Las 8 direcciones del centro (O) llevan las secundarias
-     * frecuentes; las raras y la Ñ van en los bordes. Tweakable a gusto.
+     * Letras — layout MessagEase AUTÉNTICO (inglés), tomado de la fuente de Thumb-Key
+     * (sucesor FOSS de MessagEase). Toques A N I / H O R / T E S; las secundarias en su
+     * dirección de trazo original (V = A↘ hacia O, D = O↓, C = O←, etc.).
+     * Añadido para español: Ñ con trazo ↑ en la N. Puntuación frecuente en la E.
      */
     val letters: List<KeyDef> = listOf(
-        // fila superior
-        KeyDef('a', mapOf(Dir.E to 'q', Dir.S to 'z')),
-        KeyDef('n', mapOf(Dir.S to 'f', Dir.E to 'v')),
-        KeyDef('i', mapOf(Dir.S to 'j', Dir.W to 'k')),
-        // fila media
-        KeyDef('h', mapOf(Dir.N to 'w', Dir.S to 'x')),
+        // fila superior: A N I
+        KeyDef('a', mapOf(Dir.SE to 'v')),
+        KeyDef('n', mapOf(Dir.S to 'l', Dir.N to 'ñ')),
+        KeyDef('i', mapOf(Dir.SW to 'x')),
+        // fila media: H O R
+        KeyDef('h', mapOf(Dir.E to 'k')),
         KeyDef(
             'o',
             mapOf(
-                Dir.N to 'u', Dir.NE to 'b', Dir.E to 'c', Dir.SE to 'd',
-                Dir.S to 'g', Dir.SW to 'p', Dir.W to 'm', Dir.NW to 'l',
+                Dir.NW to 'q', Dir.N to 'u', Dir.NE to 'p', Dir.E to 'b',
+                Dir.SE to 'j', Dir.S to 'd', Dir.SW to 'g', Dir.W to 'c',
             ),
         ),
-        KeyDef('r', mapOf(Dir.S to 'y')),
-        // fila inferior
-        KeyDef('t', mapOf(Dir.N to 'ñ')),
-        KeyDef('e', emptyMap()),
-        KeyDef('s', emptyMap()),
+        KeyDef('r', mapOf(Dir.W to 'm')),
+        // fila inferior: T E S
+        KeyDef('t', mapOf(Dir.NE to 'y')),
+        KeyDef(
+            'e',
+            mapOf(
+                Dir.N to 'w', Dir.NE to '\'', Dir.E to 'z',
+                Dir.SE to ':', Dir.S to '.', Dir.SW to ',',
+            ),
+        ),
+        KeyDef('s', mapOf(Dir.NW to 'f')),
     )
 
     /**
diff --git a/keyboard/src/main/java/com/rizoma/trazo/ui/KeyboardScreen.kt b/keyboard/src/main/java/com/rizoma/trazo/ui/KeyboardScreen.kt
index bfdcf54..ea448e2 100644
--- a/keyboard/src/main/java/com/rizoma/trazo/ui/KeyboardScreen.kt
+++ b/keyboard/src/main/java/com/rizoma/trazo/ui/KeyboardScreen.kt
@@ -11,6 +11,7 @@ import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.navigationBarsPadding
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.material3.Text
@@ -45,6 +46,8 @@ fun KeyboardScreen(controller: KeyboardController) {
         Modifier
             .fillMaxWidth()
             .background(Vacio)
+            // Evita que la barra de navegación del sistema tape la fila de funciones.
+            .navigationBarsPadding()
             .padding(4.dp),
     ) {
         SuggestionBar(controller.suggestions, onPick = controller::commitSuggestion)