diff --git a/lib/flyt/build.gradle.kts b/lib/flyt/build.gradle.kts new file mode 100644 index 00000000..ba3680d3 --- /dev/null +++ b/lib/flyt/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + alias(libs.plugins.kotlin.jvm) +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/MyClass.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/MyClass.kt new file mode 100644 index 00000000..f5b70c9b --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/MyClass.kt @@ -0,0 +1,4 @@ +package org.florisboard.lib.flyt + +class MyClass { +} \ No newline at end of file diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchAction.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchAction.kt new file mode 100644 index 00000000..644b0e0d --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchAction.kt @@ -0,0 +1,6 @@ +package org.florisboard.lib.flyt.touch + +sealed class TouchAction { + inner class Output(val ch: String) + inner class SwitchLayer(val to: String) +} diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchKey.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchKey.kt new file mode 100644 index 00000000..8f2b3058 --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchKey.kt @@ -0,0 +1,7 @@ +package org.florisboard.lib.flyt.touch + +import org.florisboard.lib.flyt.xml.FlytKey + +class TouchKey(val base: FlytKey) { + +} diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchKeyboard.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchKeyboard.kt new file mode 100644 index 00000000..73dee699 --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchKeyboard.kt @@ -0,0 +1,9 @@ +package org.florisboard.lib.flyt.touch + +import org.florisboard.lib.flyt.xml.FlytKeyboard + +class TouchKeyboard(val base: FlytKeyboard) { + private val layers = mutableMapOf() + + fun compute(widthPx: Int, heightPx: Int) {} +} diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchLayer.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchLayer.kt new file mode 100644 index 00000000..9cdf6012 --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchLayer.kt @@ -0,0 +1,7 @@ +package org.florisboard.lib.flyt.touch + +import org.florisboard.lib.flyt.xml.FlytLayer + +class TouchLayer(val base: FlytLayer) { + private val rows = mutableListOf() +} diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchRow.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchRow.kt new file mode 100644 index 00000000..b11531a5 --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/touch/TouchRow.kt @@ -0,0 +1,7 @@ +package org.florisboard.lib.flyt.touch + +import org.florisboard.lib.flyt.xml.FlytRow + +class TouchRow(val base: FlytRow) { + private val keys = mutableListOf() +} diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytDisplay.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytDisplay.kt new file mode 100644 index 00000000..2f862bc5 --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytDisplay.kt @@ -0,0 +1,7 @@ +package org.florisboard.lib.flyt.xml + +data class FlytDisplay( + val output: String?, + val keyId: String?, + val display: String, +) diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytDisplayOptions.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytDisplayOptions.kt new file mode 100644 index 00000000..e2a79db6 --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytDisplayOptions.kt @@ -0,0 +1,5 @@ +package org.florisboard.lib.flyt.xml + +data class FlytDisplayOptions( + val baseCharacter: String, +) diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytInfo.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytInfo.kt new file mode 100644 index 00000000..57ee5a63 --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytInfo.kt @@ -0,0 +1,8 @@ +package org.florisboard.lib.flyt.xml + +data class FlytInfo( + val name: String, + val author: String?, + val layout: String?, + val indicator: String?, +) diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytKey.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytKey.kt new file mode 100644 index 00000000..6732916c --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytKey.kt @@ -0,0 +1,35 @@ +package org.florisboard.lib.flyt.xml + +/* +Not all keys need to be listed explicitly. The following two can be assumed to already exist: + + + + +In addition, these 62 keys, comprising 10 digit keys, 26 Latin lower-case keys, and 26 Latin upper-case keys, where the id is the same as the to, are assumed to exist: + + + + +… + + + +… + + + + */ + +data class FlytKey( + val id: String, + val flickId: String?, + val gap: Boolean, + val output: String, + val longPressKeyIds: List, + val longPressDefaultKeyId: String?, + val multiTapKeyIds: List, + val stretch: Boolean, + val layerId: String, + val width: Double, +) diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytKeyboard.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytKeyboard.kt new file mode 100644 index 00000000..a8260b08 --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytKeyboard.kt @@ -0,0 +1,17 @@ +package org.florisboard.lib.flyt.xml + +import java.util.* + +data class FlytKeyboard( + val conformsTo: Int, // >= 45 + val primaryLocale: Locale, + val secondaryLocales: List, + val version: String, + val info: FlytInfo, + val settings: FlytSettings, + val displays: List, + val displayOptions: FlytDisplayOptions, + val keys: List, + val layers: List, + val variables: List> +) diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytLayer.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytLayer.kt new file mode 100644 index 00000000..e9252847 --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytLayer.kt @@ -0,0 +1,7 @@ +package org.florisboard.lib.flyt.xml + +data class FlytLayer( + val id: String?, + val modifiers: String?, + val rows: List, +) diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytRow.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytRow.kt new file mode 100644 index 00000000..fa3bb892 --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytRow.kt @@ -0,0 +1,5 @@ +package org.florisboard.lib.flyt.xml + +data class FlytRow( + val keys: List, +) diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytSettings.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytSettings.kt new file mode 100644 index 00000000..f3a3fdfa --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytSettings.kt @@ -0,0 +1,5 @@ +package org.florisboard.lib.flyt.xml + +data class FlytSettings( + val normalization: Boolean, +) diff --git a/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytVariable.kt b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytVariable.kt new file mode 100644 index 00000000..eef3424a --- /dev/null +++ b/lib/flyt/src/main/kotlin/org/florisboard/lib/flyt/xml/FlytVariable.kt @@ -0,0 +1,21 @@ +package org.florisboard.lib.flyt.xml + +sealed class FlytVariable { + abstract val id: String + abstract val value: T +} + +data class FlytStringVariable( + override val id: String, + override val value: String, +) : FlytVariable() + +data class FlytSetVariable( + override val id: String, + override val value: List, +) : FlytVariable>() + +data class FlytUsetVariable( + override val id: String, + override val value: List, +) : FlytVariable>() diff --git a/settings.gradle.kts b/settings.gradle.kts index 6f150abb..d8ece76c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -36,6 +36,7 @@ dependencyResolutionManagement { include(":app") include(":benchmark") include(":lib:android") +include(":lib:flyt") include(":lib:kotlin") include(":lib:native") include(":lib:snygg")