diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0f163804..8ee4f398 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
+### Added
+- German QWERTZ layout without dedicated umlaut keys ([#47])
## [1.4.0] - 2025-08-22
### Added
@@ -70,6 +72,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Initial release
+[#47]: https://github.com/FossifyOrg/Keyboard/issues/47
[#78]: https://github.com/FossifyOrg/Keyboard/issues/78
[#157]: https://github.com/FossifyOrg/Keyboard/issues/157
[#202]: https://github.com/FossifyOrg/Keyboard/issues/202
diff --git a/app/src/main/kotlin/org/fossify/keyboard/extensions/Context.kt b/app/src/main/kotlin/org/fossify/keyboard/extensions/Context.kt
index 0cb72d29..060abca7 100644
--- a/app/src/main/kotlin/org/fossify/keyboard/extensions/Context.kt
+++ b/app/src/main/kotlin/org/fossify/keyboard/extensions/Context.kt
@@ -54,6 +54,7 @@ import org.fossify.keyboard.helpers.LANGUAGE_ESPERANTO
import org.fossify.keyboard.helpers.LANGUAGE_FRENCH_AZERTY
import org.fossify.keyboard.helpers.LANGUAGE_FRENCH_BEPO
import org.fossify.keyboard.helpers.LANGUAGE_GERMAN
+import org.fossify.keyboard.helpers.LANGUAGE_GERMAN_QWERTZ
import org.fossify.keyboard.helpers.LANGUAGE_GREEK
import org.fossify.keyboard.helpers.LANGUAGE_HEBREW
import org.fossify.keyboard.helpers.LANGUAGE_ITALIAN
@@ -289,6 +290,7 @@ fun Context.getKeyboardLanguageText(language: Int): String {
LANGUAGE_FRENCH_AZERTY -> "${getString(R.string.translation_french)} (AZERTY)"
LANGUAGE_FRENCH_BEPO -> "${getString(R.string.translation_french)} (BEPO)"
LANGUAGE_GERMAN -> getString(R.string.translation_german)
+ LANGUAGE_GERMAN_QWERTZ -> "${getString(R.string.translation_german)} (QWERTZ)"
LANGUAGE_GREEK -> getString(R.string.translation_greek)
LANGUAGE_HEBREW -> getString(R.string.translation_hebrew)
LANGUAGE_ITALIAN -> getString(R.string.translation_italian)
diff --git a/app/src/main/kotlin/org/fossify/keyboard/helpers/Constants.kt b/app/src/main/kotlin/org/fossify/keyboard/helpers/Constants.kt
index dec47b8f..2de11f79 100644
--- a/app/src/main/kotlin/org/fossify/keyboard/helpers/Constants.kt
+++ b/app/src/main/kotlin/org/fossify/keyboard/helpers/Constants.kt
@@ -60,6 +60,7 @@ const val LANGUAGE_KABYLE_AZERTY = 29
const val LANGUAGE_CZECH_QWERTY = 30
const val LANGUAGE_ITALIAN = 31
const val LANGUAGE_CZECH_QWERTZ = 32
+const val LANGUAGE_GERMAN_QWERTZ = 33
// Keep this sorted
val SUPPORTED_LANGUAGES = listOf(
@@ -80,6 +81,7 @@ val SUPPORTED_LANGUAGES = listOf(
LANGUAGE_FRENCH_AZERTY,
LANGUAGE_FRENCH_BEPO,
LANGUAGE_GERMAN,
+ LANGUAGE_GERMAN_QWERTZ,
LANGUAGE_GREEK,
LANGUAGE_HEBREW,
LANGUAGE_ITALIAN,
diff --git a/app/src/main/kotlin/org/fossify/keyboard/services/SimpleKeyboardIME.kt b/app/src/main/kotlin/org/fossify/keyboard/services/SimpleKeyboardIME.kt
index 250012d9..6a9ddca7 100644
--- a/app/src/main/kotlin/org/fossify/keyboard/services/SimpleKeyboardIME.kt
+++ b/app/src/main/kotlin/org/fossify/keyboard/services/SimpleKeyboardIME.kt
@@ -459,6 +459,7 @@ class SimpleKeyboardIME : InputMethodService(), OnKeyboardActionListener, Shared
LANGUAGE_FRENCH_AZERTY -> R.xml.keys_letters_french_azerty
LANGUAGE_FRENCH_BEPO -> R.xml.keys_letters_french_bepo
LANGUAGE_GERMAN -> R.xml.keys_letters_german
+ LANGUAGE_GERMAN_QWERTZ -> R.xml.keys_letters_german_qwertz
LANGUAGE_GREEK -> R.xml.keys_letters_greek
LANGUAGE_HEBREW -> R.xml.keys_letters_hebrew
LANGUAGE_ITALIAN -> R.xml.keys_letters_italian
diff --git a/app/src/main/res/xml/keys_letters_german.xml b/app/src/main/res/xml/keys_letters_german.xml
index 1263b81c..37e7ea93 100644
--- a/app/src/main/res/xml/keys_letters_german.xml
+++ b/app/src/main/res/xml/keys_letters_german.xml
@@ -75,7 +75,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+