From f82d92162cdeba585b5d4f20c25ac00ceaa8f8d1 Mon Sep 17 00:00:00 2001 From: samarthshukla20 Date: Sun, 30 Aug 2026 11:40:03 +0530 Subject: [PATCH 1/3] feat: add Greek keyboard support --- app/src/keyboards/AndroidManifest.xml | 13 + .../java/be/scri/services/GreekKeyboardIME.kt | 41 ++++ .../java/be/scri/models/ScribeLanguage.kt | 1 + app/src/main/res/xml/keys_letters_greek.xml | 161 +++++++++++++ .../res/xml/keys_letters_greek_tablet.xml | 227 ++++++++++++++++++ ...letters_greek_without_period_and_comma.xml | 146 +++++++++++ app/src/main/res/xml/method_greek.xml | 8 + 7 files changed, 597 insertions(+) create mode 100644 app/src/keyboards/java/be/scri/services/GreekKeyboardIME.kt create mode 100644 app/src/main/res/xml/keys_letters_greek.xml create mode 100644 app/src/main/res/xml/keys_letters_greek_tablet.xml create mode 100644 app/src/main/res/xml/keys_letters_greek_without_period_and_comma.xml create mode 100644 app/src/main/res/xml/method_greek.xml diff --git a/app/src/keyboards/AndroidManifest.xml b/app/src/keyboards/AndroidManifest.xml index 1fa97244..7047da2c 100644 --- a/app/src/keyboards/AndroidManifest.xml +++ b/app/src/keyboards/AndroidManifest.xml @@ -41,6 +41,19 @@ android:name="android.view.im" android:resource="@xml/method_german" /> + + + + + + + R.xml.keys_letters_greek_tablet + isPeriodAndCommaEnabled() -> R.xml.keys_letters_greek + else -> R.xml.keys_letters_greek_without_period_and_comma + } + + override val defaultConjugateModeType: String = "2x2" + override val defaultConjugateLayoutXML: Int = R.xml.conjugate_view_2x2 + + override val keyboardLetters: Int = 0 + override val keyboardSymbols: Int = 1 + override val keyboardSymbolShift: Int = 2 + + override var lastShiftPressTS: Long = 0L + override var keyboardMode: Int = keyboardLetters + override var inputTypeClass: Int = InputType.TYPE_CLASS_TEXT + override var enterKeyType: Int = IME_ACTION_NONE + override var switchToLetters: Boolean = false + + private val keyHandler by lazy { KeyHandler(this) } + + override fun onKey(code: Int) { + keyHandler.handleKey(code, language) + } +} diff --git a/app/src/main/java/be/scri/models/ScribeLanguage.kt b/app/src/main/java/be/scri/models/ScribeLanguage.kt index 448181a7..939f40fb 100644 --- a/app/src/main/java/be/scri/models/ScribeLanguage.kt +++ b/app/src/main/java/be/scri/models/ScribeLanguage.kt @@ -15,6 +15,7 @@ enum class ScribeLanguage( ENGLISH("English", "EN"), FRENCH("French", "FR"), GERMAN("German", "DE"), + GREEK("Greek", "EL"), ITALIAN("Italian", "IT"), PORTUGUESE("Portuguese", "PT"), RUSSIAN("Russian", "RU"), diff --git a/app/src/main/res/xml/keys_letters_greek.xml b/app/src/main/res/xml/keys_letters_greek.xml new file mode 100644 index 00000000..ff635599 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_greek.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_greek_tablet.xml b/app/src/main/res/xml/keys_letters_greek_tablet.xml new file mode 100644 index 00000000..d38b93f7 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_greek_tablet.xml @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/keys_letters_greek_without_period_and_comma.xml b/app/src/main/res/xml/keys_letters_greek_without_period_and_comma.xml new file mode 100644 index 00000000..0cc416b0 --- /dev/null +++ b/app/src/main/res/xml/keys_letters_greek_without_period_and_comma.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/method_greek.xml b/app/src/main/res/xml/method_greek.xml new file mode 100644 index 00000000..e364213f --- /dev/null +++ b/app/src/main/res/xml/method_greek.xml @@ -0,0 +1,8 @@ + + + From 5b2bbc1db3dc7e4c1bd5e5a9c418d65d3e9612a8 Mon Sep 17 00:00:00 2001 From: samarthshukla20 Date: Sun, 30 Aug 2026 17:15:39 +0530 Subject: [PATCH 2/3] fix: resolve Greek keyboard lint issue --- app/src/keyboards/java/be/scri/services/GreekKeyboardIME.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/keyboards/java/be/scri/services/GreekKeyboardIME.kt b/app/src/keyboards/java/be/scri/services/GreekKeyboardIME.kt index 260b07ed..735342c4 100644 --- a/app/src/keyboards/java/be/scri/services/GreekKeyboardIME.kt +++ b/app/src/keyboards/java/be/scri/services/GreekKeyboardIME.kt @@ -12,7 +12,6 @@ import be.scri.models.ScribeLanguage * The GreekKeyboardIME class provides the input method for the Greek language keyboard. */ class GreekKeyboardIME : GeneralKeyboardIME(ScribeLanguage.GREEK) { - override fun getKeyboardLayoutXML(): Int = when { isTablet() -> R.xml.keys_letters_greek_tablet From 92c197e28c4a74f4a2a73dcec8665eb1231cf2b8 Mon Sep 17 00:00:00 2001 From: samarthshukla20 Date: Mon, 31 Aug 2026 17:20:37 +0530 Subject: [PATCH 3/3] docs: update changelog for Greek keyboard --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c40eff41..cdb02400 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ Emojis for the following are chosen based on [gitmoji](https://gitmoji.dev/). ### ⌨️ Keyboards -- Keyboards for English, French, German, Italian, Portuguese, Russian, Spanish and Swedish. +- Keyboards for English, French, German, Greek, Italian, Portuguese, Russian, Spanish and Swedish. - Keyboards can easily be individually installed based on the language the user speaks ([#15](https://github.com/scribe-org/Scribe-Android/issues/15)). ### ✨ New Features