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>
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)