diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 12abf84693ebe915a20871844f1a96b5a27a37f8..cb793cb4d13517c517a3b16635f408b38db6b639 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -303,6 +303,15 @@
     <!-- Description for English (United States) keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
          This should be identical to subtype_en_US aside from the trailing (%s). -->
     <string name="subtype_with_layout_en_US">English (US) (<xliff:g id="layout">%s</xliff:g>)</string>
+    <!-- TODO: Uncomment once we can handle IETF language tag with script name specified.
+         Description for Serbian Cyrillic keyboard subtype [CHAR LIMIT=25]
+    <string name="subtype_serbian_cyrillic">Serbian (Cyrillic)</string>
+         Description for Serbian Latin keyboard subtype [CHAR LIMIT=25]
+    <string name="subtype_serbian_latin">Serbian (Latin)</string>
+         Description for Serbian Latin keyboard subtype with explicit keyboard layout [CHAR LIMIT=25]
+         This should be identical to subtype_serbian_latin aside from the trailing (%s).
+    <string name="subtype_with_layout_sr-Latn">Serbian (Latin) (<xliff:g id="layout">%s</xliff:g>)</string>
+    -->
     <!-- Description for language agnostic keyboard subtype [CHAR LIMIT=25] -->
     <string name="subtype_no_language">No language</string>
     <!-- Description for language agnostic QWERTY keyboard subtype [CHAR LIMIT=25] -->
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 27efc84c05040f0526b66d6d0ddec54d55f27dea..41d439e951ffc7297a3ff31d2bef754cc5d674dc 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -62,6 +62,7 @@
     sk: Slovak/qwerty
     sl: Slovenian/qwerty
     sr: Serbian/south_slavic
+    (sr-Latn: Serbian/qwerty) # not yet implemented.
     sv: Swedish/nordic
     th: Thai/thai
     tl: Tagalog/spanish
@@ -317,6 +318,20 @@
             android:imeSubtypeMode="keyboard"
             android:imeSubtypeExtraValue="SupportTouchPositionCorrection"
     />
+    <!-- TODO: Uncomment once we can handle IETF language tag with script name specified.
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:label="@string/subtype_serbian_cyrillic"
+            android:imeSubtypeLocale="sr"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="SupportTouchPositionCorrection"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:label="@string/subtype_serbian_latin"
+            android:imeSubtypeLocale="sr-Latn"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable"
+    />
+    -->
     <subtype android:icon="@drawable/ic_subtype_keyboard"
             android:label="@string/subtype_generic"
             android:imeSubtypeLocale="sv"
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index 1bf90003af7b205300e841f2d2528d429686518e..fc8939b7ee70632b190ab9ccefc8753f742e4939 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -2098,6 +2098,24 @@ public final class KeyboardTextsSet {
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null,
         /* ~34 */
+        // TODO: Move these to sr-Latn once we can handle IETF language tag with script name specified.
+        // BEGIN: More keys definitions for Serbian (Latin)
+        // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
+        // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+        // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
+        // <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;</string>
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
+        // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+        // <string name="more_keys_for_d">&#x010F;</string>
+        // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+        // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+        // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+        // <string name="more_keys_for_z">&#x017E;,&#x017A;,&#x017C;</string>
+        // END: More keys definitions for Serbian (Latin)
+        // BEGIN: More keys definitions for Serbian (Cyrillic)
         // U+0437: "з" CYRILLIC SMALL LETTER ZE
         /* 35 */ "\u0437",
         // U+045B: "Ñ›" CYRILLIC SMALL LETTER TSHE
@@ -2111,6 +2129,7 @@ public final class KeyboardTextsSet {
         // U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE
         /* 40 */ "\u045D",
         /* 41 */ null,
+        // END: More keys definitions for Serbian (Cyrillic)
         // U+2018: "‘" LEFT SINGLE QUOTATION MARK
         // U+2019: "’" RIGHT SINGLE QUOTATION MARK
         // U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
diff --git a/tools/maketext/res/values-sr/donottranslate-more-keys.xml b/tools/maketext/res/values-sr/donottranslate-more-keys.xml
index e85d3d7a2043c874d706452be066b1d319804d54..dcf0e857e21ff3f6ddd2e5eec3c85047b9263f89 100644
--- a/tools/maketext/res/values-sr/donottranslate-more-keys.xml
+++ b/tools/maketext/res/values-sr/donottranslate-more-keys.xml
@@ -18,6 +18,24 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- TODO: Move these to sr-Latn once we can handle IETF language tag with script name specified.
+         BEGIN: More keys definitions for Serbian (Latin)
+         U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
+    <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;</string>
+         U+010D: "č" LATIN SMALL LETTER C WITH CARON
+         U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+         U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+    <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
+         U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+    <string name="more_keys_for_d">&#x010F;</string>
+         U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+         U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+         U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+    <string name="more_keys_for_z">&#x017E;,&#x017A;,&#x017C;</string>
+         END: More keys definitions for Serbian (Latin) -->
+    <!-- BEGIN: More keys definitions for Serbian (Cyrillic) -->
     <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
     <string name="keylabel_for_south_slavic_row1_6">&#x0437;</string>
     <!-- U+045B: "Ñ›" CYRILLIC SMALL LETTER TSHE -->
@@ -30,6 +48,7 @@
     <string name="more_keys_for_cyrillic_ie">&#x0450;</string>
     <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
     <string name="more_keys_for_cyrillic_i">&#x045D;</string>
+    <!-- END: More keys definitions for Serbian (Cyrillic) -->
     <!-- U+2018: "‘" LEFT SINGLE QUOTATION MARK
          U+2019: "’" RIGHT SINGLE QUOTATION MARK
          U+201A: "‚" SINGLE LOW-9 QUOTATION MARK