diff --git a/app/src/main/java/com/dessalines/thumbkey/keyboards/ThumbKeyMATHv1.kt b/app/src/main/java/com/dessalines/thumbkey/keyboards/ThumbKeyMATHv1.kt new file mode 100644 index 00000000..81cefa9b --- /dev/null +++ b/app/src/main/java/com/dessalines/thumbkey/keyboards/ThumbKeyMATHv1.kt @@ -0,0 +1,545 @@ +package com.dessalines.thumbkey.keyboards + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.ArrowDropDown +import androidx.compose.material.icons.outlined.ArrowDropUp +import com.dessalines.thumbkey.utils.ColorVariant +import com.dessalines.thumbkey.utils.FontSizeVariant +import com.dessalines.thumbkey.utils.KeyAction +import com.dessalines.thumbkey.utils.KeyC +import com.dessalines.thumbkey.utils.KeyDisplay +import com.dessalines.thumbkey.utils.KeyItemC +import com.dessalines.thumbkey.utils.KeyboardC +import com.dessalines.thumbkey.utils.KeyboardMode +import com.dessalines.thumbkey.utils.SwipeDirection +import com.dessalines.thumbkey.utils.SwipeNWay + +val THUMBKEY_MATH_V1_MAIN = KeyboardC( + listOf( + listOf( + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("∀"), + action = KeyAction.CommitText("∀"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.FOUR_WAY_DIAGONAL, + swipes = mapOf( + SwipeDirection.TOP_LEFT to KeyC( + display = KeyDisplay.TextDisplay("⊊"), + action = KeyAction.CommitText("⊊"), + ), + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay("⊆"), + action = KeyAction.CommitText("⊆"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("⊂"), + action = KeyAction.CommitText("⊂"), + ), + ), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("∫"), + action = KeyAction.CommitText("∫"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.TWO_WAY_VERTICAL, + swipes = mapOf( + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay("+"), + action = KeyAction.CommitText("+"), + ), + SwipeDirection.TOP_LEFT to KeyC( + display = KeyDisplay.TextDisplay("±"), + action = KeyAction.CommitText("±"), + ), + SwipeDirection.RIGHT to KeyC( + display = KeyDisplay.TextDisplay("!"), + action = KeyAction.CommitText("!"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("∋"), + action = KeyAction.CommitText("∋"), + ), + SwipeDirection.BOTTOM_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("∈"), + action = KeyAction.CommitText("∈"), + ), + SwipeDirection.BOTTOM to KeyC( + display = KeyDisplay.TextDisplay("∂"), + action = KeyAction.CommitText("∂"), + ), + ), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("∃"), + action = KeyAction.CommitText("∃"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.FOUR_WAY_DIAGONAL, + swipes = mapOf( + SwipeDirection.TOP_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("⊋"), + action = KeyAction.CommitText("⊋"), + ), + SwipeDirection.RIGHT to KeyC( + display = KeyDisplay.TextDisplay("⊇"), + action = KeyAction.CommitText("⊇"), + ), + SwipeDirection.BOTTOM_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("⊃"), + action = KeyAction.CommitText("⊃"), + ), + SwipeDirection.BOTTOM to KeyC( + display = KeyDisplay.TextDisplay("="), + action = KeyAction.CommitText("="), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("∣"), + action = KeyAction.CommitText("∣"), + ), + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay("≡"), + action = KeyAction.CommitText("≡"), + ), + ), + ), + EMOJI_KEY_ITEM, + ), + listOf( + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("∅"), + action = KeyAction.CommitText("∅"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.TWO_WAY_HORIZONTAL, + swipes = mapOf( + SwipeDirection.TOP_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("∩"), + action = KeyAction.CommitText("∩"), + ), + SwipeDirection.RIGHT to KeyC( + display = KeyDisplay.TextDisplay("∪"), + action = KeyAction.CommitText("∪"), + ), + SwipeDirection.BOTTOM_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("⊍"), + action = KeyAction.CommitText("⊍"), + ), + SwipeDirection.TOP_LEFT to KeyC( + display = KeyDisplay.TextDisplay("{"), + action = KeyAction.CommitText("{"), + ), + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay("("), + action = KeyAction.CommitText("("), + ), + SwipeDirection.BOTTOM to KeyC( + display = KeyDisplay.TextDisplay("𝒫"), + action = KeyAction.CommitText("𝒫"), + ), + ), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("∎"), + action = KeyAction.CommitText("∎"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipes = mapOf( + SwipeDirection.BOTTOM_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("⇒"), + action = KeyAction.CommitText("⇒"), + ), + SwipeDirection.BOTTOM to KeyC( + display = KeyDisplay.TextDisplay("⇔"), + action = KeyAction.CommitText("⇔"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("⇐"), + action = KeyAction.CommitText("⇐"), + ), + ), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("¬"), + action = KeyAction.CommitText("¬"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.FOUR_WAY_CROSS, + swipes = mapOf( + SwipeDirection.TOP_LEFT to KeyC( + display = KeyDisplay.TextDisplay("∧"), + action = KeyAction.CommitText("∧"), + ), + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay("∨"), + action = KeyAction.CommitText("∨"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("⩒"), + action = KeyAction.CommitText("⩒"), + ), + SwipeDirection.TOP to KeyC( + display = KeyDisplay.IconDisplay(Icons.Outlined.ArrowDropUp), + action = KeyAction.ToggleShiftMode(true), + color = ColorVariant.MUTED, + ), + SwipeDirection.TOP_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("}"), + action = KeyAction.CommitText("}"), + ), + SwipeDirection.RIGHT to KeyC( + display = KeyDisplay.TextDisplay(")"), + action = KeyAction.CommitText(")"), + ), + ), + ), + NUMERIC_KEY_ITEM, + ), + listOf( + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("→"), + action = KeyAction.CommitText("→"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.FOUR_WAY_DIAGONAL, + swipes = mapOf( + SwipeDirection.TOP_LEFT to KeyC( + display = KeyDisplay.TextDisplay("~"), + action = KeyAction.CommitText("~"), + ), + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay("≤"), + action = KeyAction.CommitText("≤"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("<"), + action = KeyAction.CommitText("<"), + ), + SwipeDirection.BOTTOM to KeyC( + display = KeyDisplay.TextDisplay("÷"), + action = KeyAction.CommitText("÷"), + ), + SwipeDirection.BOTTOM_RIGHT to KeyC( + display = KeyDisplay.TextDisplay(":"), + action = KeyAction.CommitText(":"), + ), + SwipeDirection.RIGHT to KeyC( + display = KeyDisplay.TextDisplay("↦"), + action = KeyAction.CommitText("↦"), + ), + SwipeDirection.TOP to KeyC( + display = KeyDisplay.TextDisplay("∘"), + action = KeyAction.CommitText("∘"), + ), + SwipeDirection.TOP_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("⋅"), + action = KeyAction.CommitText("⋅"), + ), + ), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("∑"), + action = KeyAction.CommitText("∑"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipes = mapOf( + SwipeDirection.TOP to KeyC( + display = KeyDisplay.TextDisplay("⨯"), + action = KeyAction.CommitText("⨯"), + ), + SwipeDirection.TOP_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("'"), + action = KeyAction.CommitText("'"), + color = ColorVariant.MUTED, + ), + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay(","), + action = KeyAction.CommitText(","), + ), + SwipeDirection.BOTTOM_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("-"), + action = KeyAction.CommitText("-"), + color = ColorVariant.MUTED, + ), + SwipeDirection.BOTTOM to KeyC( + display = KeyDisplay.TextDisplay("."), + action = KeyAction.CommitText("."), + color = ColorVariant.MUTED, + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("*"), + action = KeyAction.CommitText("*"), + color = ColorVariant.MUTED, + ), + SwipeDirection.RIGHT to KeyC( + display = KeyDisplay.TextDisplay("∏"), + action = KeyAction.CommitText("∏"), + color = ColorVariant.MUTED, + ), + SwipeDirection.TOP_LEFT to KeyC( + display = KeyDisplay.TextDisplay("∞"), + action = KeyAction.CommitText("∞"), + color = ColorVariant.MUTED, + ), + ), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("ℕ"), + action = KeyAction.CommitText("ℕ"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.FOUR_WAY_DIAGONAL, + swipes = mapOf( + SwipeDirection.TOP_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("°"), + action = KeyAction.CommitText("°"), + ), + SwipeDirection.RIGHT to KeyC( + display = KeyDisplay.TextDisplay("≥"), + action = KeyAction.CommitText("≥"), + ), + SwipeDirection.BOTTOM_RIGHT to KeyC( + display = KeyDisplay.TextDisplay(">"), + action = KeyAction.CommitText(">"), + ), + SwipeDirection.TOP to KeyC( + display = KeyDisplay.TextDisplay("ℂ"), + action = KeyAction.CommitText("ℂ"), + ), + SwipeDirection.TOP_LEFT to KeyC( + display = KeyDisplay.TextDisplay("ℝ"), + action = KeyAction.CommitText("ℝ"), + ), + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay("ℚ"), + action = KeyAction.CommitText("ℚ"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("ℙ"), + action = KeyAction.CommitText("ℙ"), + ), + SwipeDirection.BOTTOM to KeyC( + display = KeyDisplay.TextDisplay("ℤ"), + action = KeyAction.CommitText("ℤ"), + ), + ), + ), + BACKSPACE_KEY_ITEM, + ), + listOf( + SPACEBAR_KEY_ITEM, + RETURN_KEY_ITEM, + ), + ), +) + +val THUMBKEY_MATH_V1_SLASH = KeyboardC( + listOf( + listOf( + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay(""), + action = KeyAction.CommitText(""), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.FOUR_WAY_DIAGONAL, + swipes = mapOf( + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay("⊈"), + action = KeyAction.CommitText("⊈"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("⊄"), + action = KeyAction.CommitText("⊄"), + ), + ), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("∮"), + action = KeyAction.CommitText("∮"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.TWO_WAY_VERTICAL, + swipes = mapOf( + SwipeDirection.TOP_LEFT to KeyC( + display = KeyDisplay.TextDisplay("∓"), + action = KeyAction.CommitText("∓"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("∌"), + action = KeyAction.CommitText("∌"), + ), + SwipeDirection.BOTTOM_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("∉"), + action = KeyAction.CommitText("∉"), + ), + ), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("∄"), + action = KeyAction.CommitText("∄"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.FOUR_WAY_DIAGONAL, + swipes = mapOf( + SwipeDirection.RIGHT to KeyC( + display = KeyDisplay.TextDisplay("⊉"), + action = KeyAction.CommitText("⊉"), + ), + SwipeDirection.BOTTOM_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("⊅"), + action = KeyAction.CommitText("⊅"), + ), + SwipeDirection.BOTTOM to KeyC( + display = KeyDisplay.TextDisplay("≠"), + action = KeyAction.CommitText("≠"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("∤"), + action = KeyAction.CommitText("∤"), + ), + ), + ), + EMOJI_KEY_ITEM, + ), + listOf( + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("∅"), + action = KeyAction.CommitText("∅"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.TWO_WAY_HORIZONTAL, + swipes = mapOf(), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("↯"), + action = KeyAction.CommitText("↯"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipes = mapOf( + SwipeDirection.BOTTOM_RIGHT to KeyC( + display = KeyDisplay.TextDisplay("⇏"), + action = KeyAction.CommitText("⇏"), + ), + SwipeDirection.BOTTOM to KeyC( + display = KeyDisplay.TextDisplay("⇎"), + action = KeyAction.CommitText("⇎"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("⇍"), + action = KeyAction.CommitText("⇍"), + ), + ), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("¬"), + action = KeyAction.CommitText("¬"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.FOUR_WAY_CROSS, + swipes = mapOf( + SwipeDirection.BOTTOM to KeyC( + display = KeyDisplay.IconDisplay(Icons.Outlined.ArrowDropDown), + action = KeyAction.ToggleShiftMode(false), + color = ColorVariant.MUTED, + ), + ), + ), + NUMERIC_KEY_ITEM, + ), + listOf( + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay("↛"), + action = KeyAction.CommitText("↛"), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.FOUR_WAY_DIAGONAL, + swipes = mapOf( + SwipeDirection.TOP_LEFT to KeyC( + display = KeyDisplay.TextDisplay("≁"), + action = KeyAction.CommitText("≁"), + ), + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay("≰"), + action = KeyAction.CommitText("≰"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("≮"), + action = KeyAction.CommitText("≮"), + ), + ), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay(""), + action = KeyAction.CommitText(""), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipes = mapOf(), + ), + KeyItemC( + center = KeyC( + display = KeyDisplay.TextDisplay(""), + action = KeyAction.CommitText(""), + size = FontSizeVariant.LARGE, + color = ColorVariant.PRIMARY, + ), + swipeType = SwipeNWay.FOUR_WAY_DIAGONAL, + swipes = mapOf( + SwipeDirection.LEFT to KeyC( + display = KeyDisplay.TextDisplay("≱"), + action = KeyAction.CommitText("≱"), + ), + SwipeDirection.BOTTOM_LEFT to KeyC( + display = KeyDisplay.TextDisplay("≯"), + action = KeyAction.CommitText("≯"), + ), + ), + ), + BACKSPACE_KEY_ITEM, + ), + listOf( + SPACEBAR_KEY_ITEM, + RETURN_KEY_ITEM, + ), + ), +) + +val THUMBKEY_MATH_V1_KEYBOARD_MODES: Map = mapOf( + KeyboardMode.MAIN to THUMBKEY_MATH_V1_MAIN, + KeyboardMode.SHIFTED to THUMBKEY_MATH_V1_SLASH, + KeyboardMode.NUMERIC to NUMERIC_KEYBOARD, +) diff --git a/app/src/main/java/com/dessalines/thumbkey/utils/KeyboardLayout.kt b/app/src/main/java/com/dessalines/thumbkey/utils/KeyboardLayout.kt index 8c6e476a..90ed79ab 100644 --- a/app/src/main/java/com/dessalines/thumbkey/utils/KeyboardLayout.kt +++ b/app/src/main/java/com/dessalines/thumbkey/utils/KeyboardLayout.kt @@ -51,6 +51,7 @@ import com.dessalines.thumbkey.keyboards.THUMBKEY_JA_V1_KATAKANA_KEYBOARD_MODES import com.dessalines.thumbkey.keyboards.THUMBKEY_KA_V1_KEYBOARD_MODES import com.dessalines.thumbkey.keyboards.THUMBKEY_LT_V1_KEYBOARD_MODES import com.dessalines.thumbkey.keyboards.THUMBKEY_LV_LTG_V1_KEYBOARD_MODES +import com.dessalines.thumbkey.keyboards.THUMBKEY_MATH_V1_KEYBOARD_MODES import com.dessalines.thumbkey.keyboards.THUMBKEY_NL_V1_KEYBOARD_MODES import com.dessalines.thumbkey.keyboards.THUMBKEY_NO_V1_KEYBOARD_MODES import com.dessalines.thumbkey.keyboards.THUMBKEY_PL_V2_KEYBOARD_MODES @@ -143,4 +144,5 @@ enum class KeyboardLayout(val title: String, val index: Int, val modes: Map