diff --git a/java/res/xml-sw600dp/key_space_5kw.xml b/java/res/xml-sw600dp/key_space_5kw.xml
index 71ae5fd..8302184 100644
--- a/java/res/xml-sw600dp/key_space_5kw.xml
+++ b/java/res/xml-sw600dp/key_space_5kw.xml
@@ -22,8 +22,12 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <switch>
+        <!-- fa: Perisan
+             kn: Kannada
+             ne: Nepali
+             te: Telugu -->
         <case
-            latin:languageCode="fa|ne"
+            latin:languageCode="fa|kn|ne|te"
             latin:languageSwitchKeyEnabled="true"
         >
             <Key
@@ -35,7 +39,7 @@
                 latin:keyStyle="zwnjKeyStyle" />
         </case>
         <case
-            latin:languageCode="fa|ne"
+            latin:languageCode="fa|kn|ne|te"
             latin:languageSwitchKeyEnabled="false"
         >
             <Key
diff --git a/java/res/xml-sw600dp/rows_kannada.xml b/java/res/xml-sw600dp/rows_kannada.xml
new file mode 100644
index 0000000..55eedc5
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_kannada.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml-sw600dp/rows_telugu.xml b/java/res/xml-sw600dp/rows_telugu.xml
new file mode 100644
index 0000000..c9aeb7e
--- /dev/null
+++ b/java/res/xml-sw600dp/rows_telugu.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu1" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu2" />
+        <Key
+            latin:keyStyle="enterKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <Row
+        latin:keyWidth="8.182%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu3" />
+        <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
diff --git a/java/res/xml/kbd_kannada.xml b/java/res/xml/kbd_kannada.xml
new file mode 100644
index 0000000..0c59228
--- /dev/null
+++ b/java/res/xml/kbd_kannada.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_kannada" />
+</Keyboard>
diff --git a/java/res/xml/kbd_telugu.xml b/java/res/xml/kbd_telugu.xml
new file mode 100644
index 0000000..b4fc337
--- /dev/null
+++ b/java/res/xml/kbd_telugu.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<Keyboard
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <include
+        latin:keyboardLayout="@xml/rows_telugu" />
+</Keyboard>
diff --git a/java/res/xml/key_space_5kw.xml b/java/res/xml/key_space_5kw.xml
index b6d38fb..b1fe0bb 100644
--- a/java/res/xml/key_space_5kw.xml
+++ b/java/res/xml/key_space_5kw.xml
@@ -22,8 +22,12 @@
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
 >
     <switch>
+        <!-- fa: Perisan
+             kn: Kannada
+             ne: Nepali
+             te: Telugu -->
         <case
-            latin:languageCode="fa|ne"
+            latin:languageCode="fa|kn|ne|te"
             latin:languageSwitchKeyEnabled="true"
         >
             <Key
@@ -35,7 +39,7 @@
                 latin:keyStyle="zwnjKeyStyle" />
         </case>
         <case
-            latin:languageCode="fa|ne"
+            latin:languageCode="fa|kn|ne|te"
             latin:languageSwitchKeyEnabled="false"
         >
             <Key
diff --git a/java/res/xml/keyboard_layout_set_kannada.xml b/java/res/xml/keyboard_layout_set_kannada.xml
new file mode 100644
index 0000000..8dcf996
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_kannada.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_kannada"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/keyboard_layout_set_telugu.xml b/java/res/xml/keyboard_layout_set_telugu.xml
new file mode 100644
index 0000000..aca47b9
--- /dev/null
+++ b/java/res/xml/keyboard_layout_set_telugu.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<KeyboardLayoutSet
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Element
+        latin:elementName="alphabet"
+        latin:elementKeyboard="@xml/kbd_telugu"
+        latin:enableProximityCharsCorrection="true" />
+    <Element
+        latin:elementName="symbols"
+        latin:elementKeyboard="@xml/kbd_symbols" />
+    <Element
+        latin:elementName="symbolsShifted"
+        latin:elementKeyboard="@xml/kbd_symbols_shift" />
+    <Element
+        latin:elementName="phone"
+        latin:elementKeyboard="@xml/kbd_phone" />
+    <Element
+        latin:elementName="phoneSymbols"
+        latin:elementKeyboard="@xml/kbd_phone_symbols" />
+    <Element
+        latin:elementName="number"
+        latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardLayoutSet>
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 6d4d3f2..5021f33 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -63,6 +63,7 @@
     ka_GE: Georgian (Georgia)/georgian
     kk: Kazakh/east_slavic
     km_KH: Khmer (Cambodia)/khmer
+    (kn_IN: Kannada (India)/kannada) # This is a preliminary keyboard layout.
     ky: Kyrgyz/east_slavic
     lo_LA: Lao (Laos)/lao
     lt: Lithuanian/qwerty
@@ -90,7 +91,8 @@
     (sr-Latn: Serbian/qwerty) # not yet implemented.
     sv: Swedish/nordic
     sw: Swahili/qwerty
-    (ta: Tamil/tamil) # This is a preliminary keyboard layout.
+    (ta_IN: Tamil (India)/tamil) # This is a preliminary keyboard layout.
+    (te_IN: Telugu (India)/telugu) # This is a preliminary keyboard layout.
     th: Thai/thai
     tl: Tagalog/spanish
     tr: Turkish/qwerty
@@ -444,6 +446,16 @@
             android:imeSubtypeExtraValue="KeyboardLayoutSet=khmer,EmojiCapable"
             android:isAsciiCapable="false"
     />
+    <!-- TODO: This kannada keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x8c78064f"
+            android:imeSubtypeLocale="kn_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=kannada,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0x2e391c04"
@@ -688,6 +700,16 @@
             android:imeSubtypeExtraValue="KeyboardLayoutSet=tamil,EmojiCapable"
             android:isAsciiCapable="false"
     />
+    <!-- TODO: This telugu keyboard is a preliminary layout.
+               This isn't based on the final specification. -->
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x1e177389"
+            android:imeSubtypeLocale="te_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=telugu,EmojiCapable"
+            android:isAsciiCapable="false"
+    />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0x1f94d5d4"
diff --git a/java/res/xml/rowkeys_kannada1.xml b/java/res/xml/rowkeys_kannada1.xml
new file mode 100644
index 0000000..e7aecd8
--- /dev/null
+++ b/java/res/xml/rowkeys_kannada1.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0CCC: "ೌ" KANNADA VOWEL SIGN AU
+         U+0C94: "ಔ" KANNADA LETTER AU
+         U+0CE7: "೧" KANNADA DIGIT ONE -->
+    <Key
+        latin:keySpec="&#x0CCC;"
+        latin:moreKeys="&#x0C94;,&#x0CE7;,%"
+        latin:keyHintLabel="1"
+        latin:additionalMoreKeys="1" />
+    <!-- U+0CC8: "ೈ" KANNADA VOWEL SIGN AI
+         U+0C90: "ಐ" KANNADA LETTER AI
+         U+0CE8: "೨" KANNADA DIGIT TWO -->
+    <Key
+        latin:keySpec="&#x0CC8;"
+        latin:moreKeys="&#x0C90;,&#x0CE8;,%"
+        latin:keyHintLabel="2"
+        latin:additionalMoreKeys="2" />
+    <!-- U+0CBE: "ಾ" KANNADA VOWEL SIGN AA
+         U+0C86: "ಆ" KANNADA LETTER AA
+         U+0CE9: "೩" KANNADA DIGIT THREE -->
+    <Key
+        latin:keySpec="&#x0CBE;"
+        latin:moreKeys="&#x0C86;,&#x0CE9;,%"
+        latin:keyHintLabel="3"
+        latin:additionalMoreKeys="3" />
+    <!-- U+0CC0: "ೀ" KANNADA VOWEL SIGN II
+         U+0C88: "ಈ" KANNADA LETTER II
+         U+0CEA: "೪" KANNADA DIGIT FOUR -->
+    <Key
+        latin:keySpec="&#x0CC0;"
+        latin:moreKeys="&#x0C88;,&#x0CEA;,%"
+        latin:keyHintLabel="4"
+        latin:additionalMoreKeys="4" />
+    <!-- U+0CC2: "ೂ" KANNADA VOWEL SIGN UU
+         U+0C8A: "ಊ" KANNADA LETTER UU
+         U+0CEB: "೫" KANNADA DIGIT FIVE -->
+    <Key
+        latin:keySpec="&#x0CC2;"
+        latin:moreKeys="&#x0C8A;,&#x0CEB;,%"
+        latin:keyHintLabel="5"
+        latin:additionalMoreKeys="5" />
+    <!-- U+0CAC: "ಬ" KANNADA LETTER BA
+         U+0CAD: "ಭ" KANNADA LETTER BHA
+         U+0CEC: "೬" KANNADA DIGIT SIX -->
+    <Key
+        latin:keySpec="&#x0CAC;"
+        latin:moreKeys="&#x0CAD;,&#x0CEC;,%"
+        latin:keyHintLabel="6"
+        latin:additionalMoreKeys="6" />
+    <!-- U+0CB9: "ಹ" KANNADA LETTER HA
+         U+0C99: "ಙ" KANNADA LETTER NGA
+         U+0CED: "೭" KANNADA DIGIT SEVEN -->
+    <Key
+        latin:keySpec="&#x0CB9;"
+        latin:moreKeys="&#x0C99;,&#x0CED;,%"
+        latin:keyHintLabel="7"
+        latin:additionalMoreKeys="7" />
+    <!-- U+0C97: "ಗ" KANNADA LETTER GA
+         U+0C98: "ಘ" KANNADA LETTER GHA
+         U+0CEE: "೮" KANNADA DIGIT EIGHT -->
+    <Key
+        latin:keySpec="&#x0C97;"
+        latin:moreKeys="&#x0C98;,&#x0CEE;,%"
+        latin:keyHintLabel="8"
+        latin:additionalMoreKeys="8" />
+    <!-- U+0CA6: "ದ" KANNADA LETTER DA
+         U+0CA7: "ಧ" KANNADA LETTER DHA
+         U+0CEF: "೯" KANNADA DIGIT NINE -->
+    <Key
+        latin:keySpec="&#x0CA6;"
+        latin:moreKeys="&#x0CA7;,&#x0CEF;,%"
+        latin:keyHintLabel="9"
+        latin:additionalMoreKeys="9" />
+    <!-- U+0C9C: "ಜ" KANNADA LETTER JA
+         U+0C9D: "ಝ" KANNADA LETTER JHA
+         U+0CE6: "೦" KANNADA DIGIT ZERO -->
+    <Key
+        latin:keySpec="&#x0C9C;"
+        latin:moreKeys="&#x0C9D;,&#x0CE6;,%"
+        latin:keyHintLabel="0"
+        latin:additionalMoreKeys="0" />
+    <!-- U+0CA1: "ಡ" KANNADA LETTER DDA
+         U+0CA2: "ಢ" KANNADA LETTER DDHA -->
+    <Key
+        latin:keySpec="&#x0CA1;"
+        latin:moreKeys="&#x0CA2;" />
+</merge>
diff --git a/java/res/xml/rowkeys_kannada2.xml b/java/res/xml/rowkeys_kannada2.xml
new file mode 100644
index 0000000..f3e6c18
--- /dev/null
+++ b/java/res/xml/rowkeys_kannada2.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0CCB: "ೋ" KANNADA VOWEL SIGN OO
+         U+0C93: "ಓ" KANNADA LETTER OO -->
+    <Key
+        latin:keySpec="&#x0CCB;"
+        latin:moreKeys="&#x0C93;" />
+    <!-- U+0CC7: "ೇ" KANNADA VOWEL SIGN EE
+         U+0C8F: "ಏ" KANNADA LETTER EE -->
+    <Key
+        latin:keySpec="&#x0CC7;"
+        latin:moreKeys="&#x0C8F;" />
+    <!-- U+0CCD: "್" KANNADA SIGN VIRAMA
+         U+0C85: "ಅ" KANNADA LETTER A -->
+    <Key
+        latin:keySpec="&#x0CCD;"
+        latin:moreKeys="&#x0C85;" />
+    <!-- U+0CBF: "ಿ" KANNADA VOWEL SIGN I
+         U+0C87: "ಇ" KANNADA LETTER I -->
+    <Key
+        latin:keySpec="&#x0CBF;"
+        latin:moreKeys="&#x0C87;" />
+    <!-- U+0CC1: "ು" KANNADA VOWEL SIGN U
+         U+0C89: "ಉ" KANNADA LETTER U -->
+    <Key
+        latin:keySpec="&#x0CC1;"
+        latin:moreKeys="&#x0C89;" />
+    <!-- U+0CAA: "ಪ" KANNADA LETTER PA
+         U+0CAB: "ಫ" KANNADA LETTER PHA -->
+    <Key
+        latin:keySpec="&#x0CAA;"
+        latin:moreKeys="&#x0CAB;" />
+    <!-- U+0CB0: "ರ" KANNADA LETTER RA
+         U+0CB1: "ಱ" KANNADA LETTER RRA
+         U+0CC3: "ೃ" KANNADA VOWEL SIGN VOCALIC R -->
+    <Key
+        latin:keySpec="&#x0CB0;"
+        latin:moreKeys="&#x0CB1;,&#x0CC3;" />
+    <!-- U+0C95: "ಕ" KANNADA LETTER KA
+         U+0C96: "ಖ" KANNADA LETTER KHA -->
+    <Key
+        latin:keySpec="&#x0C95;"
+        latin:moreKeys="&#x0C96;" />
+    <!-- U+0CA4: "ತ" KANNADA LETTER TA
+         U+0CA5: "ಥ" KANNADA LETTER THA -->
+    <Key
+        latin:keySpec="&#x0CA4;"
+        latin:moreKeys="&#x0CA5;" />
+    <!-- U+0C9A: "ಚ" KANNADA LETTER CA
+         U+0C9B: "ಛ" KANNADA LETTER CHA -->
+    <Key
+        latin:keySpec="&#x0C9A;"
+        latin:moreKeys="&#x0C9B;" />
+    <!-- U+0C9F: "ಟ" KANNADA LETTER TTA
+         U+0CA0: "ಠ" KANNADA LETTER TTHA -->
+    <Key
+        latin:keySpec="&#x0C9F;"
+        latin:moreKeys="&#x0CA0;" />
+</merge>
diff --git a/java/res/xml/rowkeys_kannada3.xml b/java/res/xml/rowkeys_kannada3.xml
new file mode 100644
index 0000000..0f1aecb
--- /dev/null
+++ b/java/res/xml/rowkeys_kannada3.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0CC6: "ೆ" KANNADA VOWEL SIGN E
+         U+0C92: "ಒ" KANNADA LETTER O -->
+    <Key
+        latin:keySpec="&#x0CC6;"
+        latin:moreKeys="&#x0C92;" />
+    <!-- U+0C82: "ಂ" KANNADA SIGN ANUSVARA
+         U+0C8E: "ಎ" KANNADA LETTER E -->
+    <Key
+        latin:keySpec="&#x0C82;"
+        latin:moreKeys="&#x0C8E;" />
+    <!-- U+0CAE: "ಮ" KANNADA LETTER MA
+         U+0CA3: "ಣ" KANNADA LETTER NNA -->
+    <Key
+        latin:keySpec="&#x0CAE;"
+        latin:moreKeys="&#x0CA3;" />
+    <!-- U+0CA8: "ನ" KANNADA LETTER NA -->
+    <Key latin:keySpec="&#x0CA8;" />
+    <!-- U+0CB5: "ವ" KANNADA LETTER VA -->
+    <Key latin:keySpec="&#x0CB5;" />
+    <!-- U+0CB2: "ಲ" KANNADA LETTER LA
+         U+0CB3: "ಳ" KANNADA LETTER LLA -->
+    <Key
+        latin:keySpec="&#x0CB2;"
+        latin:moreKeys="&#x0CB3;" />
+    <!-- U+0CB8: "ಸ" KANNADA LETTER SA
+         U+0CB6: "ಶ" KANNADA LETTER SHA -->
+    <Key
+        latin:keySpec="&#x0CB8;"
+        latin:moreKeys="&#x0CB6;" />
+    <!-- U+0C8B: "ಋ" KANNADA LETTER VOCALIC R
+         U+0CCD/U+0CB0: "್ರ" KANNADA SIGN VIRAMA/KANNADA LETTER RA -->
+    <Key
+        latin:keySpec="&#x0C8B;"
+        latin:moreKeys="&#x0CCD;&#x0CB0;" />
+    <!-- U+0CB7: "ಷ" KANNADA LETTER SSA
+         U+0C95/U+0CCD/U+0CB7: "ಕ್ಷ" KANNADA LETTER RA/KANNADA SIGN VIRAMA/KANNADA LETTER SSA -->
+    <Key
+        latin:keySpec="&#x0CB7;"
+        latin:moreKeys="&#x0C95;&#x0CCD;&#x0CB7;" />
+    <!-- U+0CAF: "ಯ" KANNADA LETTER YA
+         U+0C9C/U+0CCD/U+0C9E: "ಜ್ಞ" KANNADA LETTER JA/KANNADA SIGN VIRAMA/KANNADA LETTER NYA -->
+    <Key
+        latin:keySpec="&#x0CAF;"
+        latin:moreKeys="&#x0C9C;&#x0CCD;&#x0C9E;" />
+</merge>
diff --git a/java/res/xml/rowkeys_telugu1.xml b/java/res/xml/rowkeys_telugu1.xml
new file mode 100644
index 0000000..8a5c850
--- /dev/null
+++ b/java/res/xml/rowkeys_telugu1.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0C4C: "ౌ" TELUGU VOWEL SIGN AU
+         U+0C14: "ఔ" TELUGU LETTER AU -->
+    <Key
+        latin:keySpec="&#x0C4C;"
+        latin:moreKeys="&#x0C14;,%"
+        latin:keyHintLabel="1"
+        latin:additionalMoreKeys="1" />
+    <!-- U+0C48: "ై" TELUGU VOWEL SIGN AI
+         U+0C10: "ఐ" TELUGU LETTER AI -->
+    <Key
+        latin:keySpec="&#x0C48;"
+        latin:moreKeys="&#x0C10;,%"
+        latin:keyHintLabel="2"
+        latin:additionalMoreKeys="2" />
+    <!-- U+0C3E: "ా" TELUGU VOWEL SIGN AA
+         U+0C06: "ఆ" TELUGU LETTER AA -->
+    <Key
+        latin:keySpec="&#x0C3E;"
+        latin:moreKeys="&#x0C06;,%"
+        latin:keyHintLabel="3"
+        latin:additionalMoreKeys="3" />
+    <!-- U+0C40: "ీ" TELUGU VOWEL SIGN II
+         U+0C08: "ఈ" TELUGU LETTER II -->
+    <Key
+        latin:keySpec="&#x0C40;"
+        latin:moreKeys="&#x0C08;,%"
+        latin:keyHintLabel="4"
+        latin:additionalMoreKeys="4" />
+    <!-- U+0C42: "ూ" TELUGU VOWEL SIGN UU
+         U+0C0A: "ఊ" TELUGU LETTER UU -->
+    <Key
+        latin:keySpec="&#x0C42;"
+        latin:moreKeys="&#x0C0A;,%"
+        latin:keyHintLabel="5"
+        latin:additionalMoreKeys="5" />
+    <!-- U+0C2C: "బ" TELUGU LETTER BA
+         U+0C2D: "భ" TELUGU LETTER BHA -->
+    <Key
+        latin:keySpec="&#x0C2C;"
+        latin:moreKeys="&#x0C2D;,%"
+        latin:keyHintLabel="6"
+        latin:additionalMoreKeys="6" />
+    <!-- U+0C39: "హ" TELUGU LETTER HA
+         U+0C03: "ః" TELUGU SIGN VISARGA -->
+    <Key
+        latin:keySpec="&#x0C39;"
+        latin:moreKeys="&#x0C03;,%"
+        latin:keyHintLabel="7"
+        latin:additionalMoreKeys="7" />
+    <!-- U+0C17: "గ" TELUGU LETTER GA
+         U+0C18: "ఘ" TELUGU LETTER GHA -->
+    <Key
+        latin:keySpec="&#x0C17;"
+        latin:moreKeys="&#x0C18;,%"
+        latin:keyHintLabel="8"
+        latin:additionalMoreKeys="8" />
+    <!-- U+0C26: "ద" TELUGU LETTER DA
+         U+0C27: "ధ" TELUGU LETTER DHA -->
+    <Key
+        latin:keySpec="&#x0C26;"
+        latin:moreKeys="&#x0C27;,%"
+        latin:keyHintLabel="9"
+        latin:additionalMoreKeys="9" />
+    <!-- U+0C1C: "జ" TELUGU LETTER JA
+         U+0C1D: "ఝ" TELUGU LETTER JHA -->
+    <Key
+        latin:keySpec="&#x0C1C;"
+        latin:moreKeys="&#x0C1D;,%"
+        latin:keyHintLabel="0"
+        latin:additionalMoreKeys="0" />
+    <!-- U+0C21: "డ" TELUGU LETTER DDA
+         U+0C22: "ఢ" TELUGU LETTER DDHA -->
+    <Key
+        latin:keySpec="&#x0C21;"
+        latin:moreKeys="&#x0C22;" />
+</merge>
diff --git a/java/res/xml/rowkeys_telugu2.xml b/java/res/xml/rowkeys_telugu2.xml
new file mode 100644
index 0000000..a472fd3
--- /dev/null
+++ b/java/res/xml/rowkeys_telugu2.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0C4B: "ో" TELUGU VOWEL SIGN OO
+         U+0C13: "ఓ" TELUGU LETTER OO -->
+    <Key
+        latin:keySpec="&#x0C4B;"
+        latin:moreKeys="&#x0C13;" />
+    <!-- U+0C47: "ే" TELUGU VOWEL SIGN EE
+         U+0C0F: "ఏ" TELUGU LETTER EE -->
+    <Key
+        latin:keySpec="&#x0C47;"
+        latin:moreKeys="&#x0C0F;" />
+    <!-- U+0C4D: "్" TELUGU SIGN VIRAMA
+         U+0C05: "అ" TELUGU LETTER A -->
+    <Key
+        latin:keySpec="&#x0C4D;"
+        latin:moreKeys="&#x0C05;" />
+    <!-- U+0C3F: "ి" TELUGU VOWEL SIGN I
+         U+0C07: "ఇ" TELUGU LETTER I -->
+    <Key
+        latin:keySpec="&#x0C3F;"
+        latin:moreKeys="&#x0C07;" />
+    <!-- U+0C41: "ు" TELUGU VOWEL SIGN U
+         U+0C09: "ఉ" TELUGU LETTER U -->
+    <Key
+        latin:keySpec="&#x0C41;"
+        latin:moreKeys="&#x0C09;" />
+    <!-- U+0C2A: "ప" TELUGU LETTER PA
+         U+0C2B: "ఫ" TELUGU LETTER PHA -->
+    <Key
+        latin:keySpec="&#x0C2A;"
+        latin:moreKeys="&#x0C2B;" />
+    <!-- U+0C30: "ర" TELUGU LETTER RA
+         U+0C31: "ఱ" TELUGU LETTER RRA
+         U+0C43: "ృ" TELUGU VOWEL SIGN VOCALIC R -->
+    <Key
+        latin:keySpec="&#x0C30;"
+        latin:moreKeys="&#x0C31;,&#x0C43;" />
+    <!-- U+0C15: "క" TELUGU LETTER KA
+         U+0C16: "ఖ" TELUGU LETTER KHA -->
+    <Key
+        latin:keySpec="&#x0C15;"
+        latin:moreKeys="&#x0C16;" />
+    <!-- U+0C24: "త" TELUGU LETTER TA
+         U+0C25: "థ" TELUGU LETTER THA -->
+    <Key
+        latin:keySpec="&#x0C24;"
+        latin:moreKeys="&#x0C25;" />
+    <!-- U+0C1A: "చ" TELUGU LETTER CA
+         U+0C1B: "ఛ" TELUGU LETTER CHA -->
+    <Key
+        latin:keySpec="&#x0C1A;"
+        latin:moreKeys="&#x0C1B;" />
+    <!-- U+0C1F: "ట" TELUGU LETTER TTA
+         U+0C20: "ఠ" TELUGU LETTER TTHA -->
+    <Key
+        latin:keySpec="&#x0C1F;"
+        latin:moreKeys="&#x0C20;" />
+</merge>
diff --git a/java/res/xml/rowkeys_telugu3.xml b/java/res/xml/rowkeys_telugu3.xml
new file mode 100644
index 0000000..05755ec
--- /dev/null
+++ b/java/res/xml/rowkeys_telugu3.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <!-- U+0C46: "ె" TELUGU VOWEL SIGN E
+         U+0C12: "ఒ" TELUGU LETTER O -->
+    <Key
+        latin:keySpec="&#x0C46;"
+        latin:moreKeys="&#x0C12;" />
+    <!-- U+0C02: "ం" TELUGU SIGN ANUSVARA
+         U+0C0E: "ఎ" TELUGU LETTER E -->
+    <Key
+        latin:keySpec="&#x0C02;"
+        latin:moreKeys="&#x0C0E;" />
+    <!-- U+0C2E: "మ" TELUGU LETTER MA -->
+    <Key latin:keySpec="&#x0C2E;" />
+    <!-- U+0C28: "న" TELUGU LETTER NA
+         U+0C23: "ణ" TELUGU LETTER NNA
+         U+0C19: "ఙ" TELUGU LETTER NGA -->
+    <Key
+        latin:keySpec="&#x0C28;"
+        latin:moreKeys="&#x0C23;,&#x0C19;" />
+    <!-- U+0C35: "వ" TELUGU LETTER VA -->
+    <Key latin:keySpec="&#x0C35;" />
+    <!-- U+0C32: "ల" TELUGU LETTER LA
+         U+0C33: "ళ" TELUGU LETTER LLA -->
+    <Key
+        latin:keySpec="&#x0C32;"
+        latin:moreKeys="&#x0C33;" />
+    <!-- U+0C38: "స" TELUGU LETTER SA
+         U+0C36: "శ" TELUGU LETTER SHA -->
+    <Key
+        latin:keySpec="&#x0C38;"
+        latin:moreKeys="&#x0C36;" />
+    <!-- U+0C0B: "ఋ" TELUGU LETTER VOCALIC R
+         U+0C4D/U+0C30: "్ర" TELUGU SIGN VIRAMA/TELUGU LETTER RA -->
+    <Key
+        latin:keySpec="&#x0C0B;"
+        latin:moreKeys="&#x0C4D;&#x0C30;" />
+    <!-- U+0C37: "ష" TELUGU LETTER SSA
+         U+0C15/U+0C4D/U+0C37: "క్ష" TELUGU LETTER KA/TELUGU SIGN VIRAMA/TELUGU LETTER SSA -->
+    <Key
+        latin:keySpec="&#x0C37;"
+        latin:moreKeys="&#x0C15;&#x0C4D;&#x0C37;" />
+    <!-- U+0C2F: "య" TELUGU LETTER YA
+         U+0C1C/U+0C4D/U+0C1E: "జ్ఞ" TELUGU LETTER JA/TELUGU SIGN VIRAMA/TELUGU LETTER NYA -->
+    <Key
+        latin:keySpec="&#x0C2F;"
+        latin:moreKeys="&#x0C1C;&#x0C4D;&#x0C1E;" />
+</merge>
diff --git a/java/res/xml/rows_kannada.xml b/java/res/xml/rows_kannada.xml
new file mode 100644
index 0000000..5dc6271
--- /dev/null
+++ b/java/res/xml/rows_kannada.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_kannada3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
\ No newline at end of file
diff --git a/java/res/xml/rows_telugu.xml b/java/res/xml/rows_telugu.xml
new file mode 100644
index 0000000..4a31d5d
--- /dev/null
+++ b/java/res/xml/rows_telugu.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <include latin:keyboardLayout="@xml/key_styles_common" />
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu1" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu2" />
+    </Row>
+    <Row
+        latin:keyWidth="9.091%p"
+        latin:keyLabelFlags="fontNormal|autoXScale"
+    >
+        <include latin:keyboardLayout="@xml/rowkeys_telugu3" />
+        <Key
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="fillRight" />
+    </Row>
+    <include latin:keyboardLayout="@xml/row_qwerty4" />
+</merge>
\ No newline at end of file
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 4c8c37a..eb49427 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -88,15 +88,15 @@
         /*   2:30 */ "morekeys_u",
         /*   3:29 */ "morekeys_e",
         /*   4:28 */ "morekeys_i",
-        /*   5:26 */ "keylabel_to_alpha",
+        /*   5:28 */ "keylabel_to_alpha",
         /*   6:23 */ "morekeys_c",
         /*   7:23 */ "double_quotes",
         /*   8:22 */ "morekeys_n",
         /*   9:22 */ "single_quotes",
         /*  10:20 */ "morekeys_s",
-        /*  11:14 */ "morekeys_y",
-        /*  12:13 */ "morekeys_d",
-        /*  13:13 */ "keyspec_currency",
+        /*  11:15 */ "keyspec_currency",
+        /*  12:14 */ "morekeys_y",
+        /*  13:13 */ "morekeys_d",
         /*  14:12 */ "morekeys_z",
         /*  15:10 */ "morekeys_t",
         /*  16:10 */ "morekeys_l",
@@ -266,12 +266,10 @@
         /* double_quotes */ "!text/double_lqm_rqm",
         /* morekeys_n */ EMPTY,
         /* single_quotes */ "!text/single_lqm_rqm",
-        /* morekeys_s ~ */
-        EMPTY, EMPTY, EMPTY,
-        /* ~ morekeys_d */
+        /* morekeys_s */ EMPTY,
         /* keyspec_currency */ "$",
-        /* morekeys_z ~ */
-        EMPTY, EMPTY, EMPTY, EMPTY,
+        /* morekeys_y ~ */
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
         /* ~ morekeys_g */
         /* single_angle_quotes */ "!text/single_laqm_raqm",
         /* double_angle_quotes */ "!text/double_laqm_raqm",
@@ -516,8 +514,9 @@
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* morekeys_n */ "\u00F1,\u0144",
-        /* single_quotes */ null,
-        /* morekeys_s */ null,
+        /* single_quotes ~ */
+        null, null, null,
+        /* ~ keyspec_currency */
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
         /* morekeys_y */ "\u00FD,\u0133",
@@ -697,7 +696,7 @@
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u015F,\u00DF,\u015B,\u0161",
-        /* morekeys_y ~ */
+        /* keyspec_currency ~ */
         null, null, null, null, null, null,
         /* ~ morekeys_l */
         // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
@@ -764,8 +763,8 @@
         // U+0997: "ग" BENGALI LETTER GA
         /* keylabel_to_alpha */ "\u0995\u0996\u0997",
         /* morekeys_c ~ */
-        null, null, null, null, null, null, null,
-        /* ~ morekeys_d */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
         // U+09F3: "৳" BENGALI RUPEE SIGN
         /* keyspec_currency */ "\u09F3",
     };
@@ -904,12 +903,12 @@
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         /* morekeys_s */ "\u0161,\u00DF,\u015B",
+        /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
         // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
         /* morekeys_d */ "\u010F",
-        /* keyspec_currency */ null,
         // 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
@@ -963,14 +962,14 @@
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u00DF,\u015B,\u0161",
+        /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
         // U+00F0: "ð" LATIN SMALL LETTER ETH
         /* morekeys_d */ "\u00F0",
-        /* keyspec_currency ~ */
-        null, null, null,
-        /* ~ morekeys_t */
+        /* morekeys_z */ null,
+        /* morekeys_t */ null,
         // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
         /* morekeys_l */ "\u0142",
         /* morekeys_g */ null,
@@ -1039,7 +1038,7 @@
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u00DF,\u015B,\u0161",
-        /* morekeys_y ~ */
+        /* keyspec_currency ~ */
         null, null, null, null, null, null, null,
         /* ~ morekeys_g */
         /* single_angle_quotes */ "!text/single_raqm_laqm",
@@ -1200,6 +1199,7 @@
         // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
         /* morekeys_s */ "\u00DF,\u0161,\u015B,\u0219,\u015F",
+        /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
@@ -1209,7 +1209,6 @@
         // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
         // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
         /* morekeys_d */ "\u00F0,\u010F,\u0111",
-        /* keyspec_currency */ null,
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
@@ -1398,12 +1397,12 @@
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
         /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F",
+        /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
         // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
         /* morekeys_d */ "\u010F",
-        /* keyspec_currency */ null,
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
@@ -1505,13 +1504,13 @@
         // U+067E: "پ" ARABIC LETTER PEH
         /* keylabel_to_alpha */ "\u0627\u200C\u0628\u200C\u067E",
         /* morekeys_c ~ */
-        null, null, null, null, null, null, null,
-        /* ~ morekeys_d */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
         // U+FDFC: "﷼" RIAL SIGN
         /* keyspec_currency */ "\uFDFC",
-        /* morekeys_z ~ */
+        /* morekeys_y ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null,
+        null, null, null, null, null,
         /* ~ morekeys_cyrillic_soft_sign */
         // U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE
         /* keyspec_symbols_1 */ "\u06F1",
@@ -1663,9 +1662,9 @@
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         /* morekeys_s */ "\u0161,\u00DF,\u015B",
-        /* morekeys_y ~ */
+        /* keyspec_currency ~ */
         null, null, null,
-        /* ~ keyspec_currency */
+        /* ~ morekeys_d */
         // 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
@@ -1738,14 +1737,14 @@
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* morekeys_c */ "\u00E7,%,\u0107,\u010D",
         /* double_quotes ~ */
-        null, null, null, null,
-        /* ~ morekeys_s */
+        null, null, null, null, null,
+        /* ~ keyspec_currency */
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "%,\u00FF",
         /* morekeys_d ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ keyspec_tablet_comma */
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         /* keyspec_swiss_row1_11 */ "\u00E8",
@@ -1827,13 +1826,13 @@
         // U+0917: "ग" DEVANAGARI LETTER GA
         /* keylabel_to_alpha */ "\u0915\u0916\u0917",
         /* morekeys_c ~ */
-        null, null, null, null, null, null, null,
-        /* ~ morekeys_d */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keyspec_currency */ "\u20B9",
-        /* morekeys_z ~ */
+        /* morekeys_y ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null,
+        null, null, null, null, null,
         /* ~ morekeys_cyrillic_soft_sign */
         // U+0967: "१" DEVANAGARI DIGIT ONE
         /* keyspec_symbols_1 */ "\u0967",
@@ -1887,10 +1886,10 @@
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* morekeys_s */ "\u0161,\u015B,\u00DF",
+        /* keyspec_currency */ null,
         /* morekeys_y */ null,
         // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
         /* morekeys_d */ "\u0111",
-        /* keyspec_currency */ null,
         // 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
@@ -2065,12 +2064,12 @@
         /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
         /* morekeys_s */ null,
+        /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
         // U+00F0: "ð" LATIN SMALL LETTER ETH
         /* morekeys_d */ "\u00F0",
-        /* keyspec_currency */ null,
         /* morekeys_z */ null,
         // U+00FE: "þ" LATIN SMALL LETTER THORN
         /* morekeys_t */ "\u00FE",
@@ -2153,16 +2152,14 @@
         /* double_quotes */ "!text/double_rqm_9qm",
         /* morekeys_n */ null,
         /* single_quotes */ "!text/single_rqm_9qm",
-        /* morekeys_s ~ */
-        null, null, null,
-        /* ~ morekeys_d */
+        /* morekeys_s */ null,
         // U+20AA: "₪" NEW SHEQEL SIGN
         /* keyspec_currency */ "\u20AA",
-        /* morekeys_z ~ */
+        /* morekeys_y ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null,
+        null, null, null, null, null,
         /* ~ morekeys_swiss_row2_11 */
         // U+2605: "★" BLACK STAR
         /* morekeys_star */ "\u2605",
@@ -2296,6 +2293,23 @@
         /* morekeys_currency_dollar */ "\u17DB,\u00A2,\u00A3,\u20AC,\u00A5,\u20B1",
     };
 
+    /* Locale kn_IN: Kannada (India) */
+    private static final String[] TEXTS_kn_IN = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0C95: "ಕ" KANNADA LETTER KA
+        // U+0CA8/U+0CCD/U+0CA8: "ನ್ನ" KANNADA LETTER NA/KANNADA SIGN VIRAMA/KANNADA LETTER NA
+        // U+0CA1: "ಡ" KANNADA LETTER DDA
+        /* keylabel_to_alpha */ "\u0C95\u0CA8\u0CCD\u0CA8\u0CA1",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        /* keyspec_currency */ "\u20B9",
+    };
+
     /* Locale ky: Kirghiz */
     private static final String[] TEXTS_ky = {
         /* morekeys_a ~ */
@@ -2351,8 +2365,8 @@
         // U+0E84: "ຄ" LAO LETTER KHO TAM
         /* keylabel_to_alpha */ "\u0E81\u0E82\u0E84",
         /* morekeys_c ~ */
-        null, null, null, null, null, null, null,
-        /* ~ morekeys_d */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
         // U+20AD: "₭" KIP SIGN
         /* keyspec_currency */ "\u20AD",
     };
@@ -2421,12 +2435,12 @@
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
         /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F",
+        /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
         // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
         /* morekeys_d */ "\u010F",
-        /* keyspec_currency */ null,
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
@@ -2515,12 +2529,12 @@
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
         /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F",
+        /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
         // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
         /* morekeys_d */ "\u010F",
-        /* keyspec_currency */ null,
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
@@ -2593,8 +2607,8 @@
         // U+0D05: "അ" MALAYALAM LETTER A
         /* keylabel_to_alpha */ "\u0D05",
         /* morekeys_c ~ */
-        null, null, null, null, null, null, null,
-        /* ~ morekeys_d */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keyspec_currency */ "\u20B9",
     };
@@ -2610,8 +2624,8 @@
         // U+0412: "В" CYRILLIC CAPITAL LETTER VE
         /* keylabel_to_alpha */ "\u0410\u0411\u0412",
         /* morekeys_c ~ */
-        null, null, null, null, null, null, null,
-        /* ~ morekeys_d */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
         // U+20AE: "₮" TUGRIK SIGN
         /* keyspec_currency */ "\u20AE",
     };
@@ -2627,13 +2641,13 @@
         // U+0917: "ग" DEVANAGARI LETTER GA
         /* keylabel_to_alpha */ "\u0915\u0916\u0917",
         /* morekeys_c ~ */
-        null, null, null, null, null, null, null,
-        /* ~ morekeys_d */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
         // U+20B9: "₹" INDIAN RUPEE SIGN
         /* keyspec_currency */ "\u20B9",
-        /* morekeys_z ~ */
+        /* morekeys_y ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null,
+        null, null, null, null, null,
         /* ~ morekeys_cyrillic_soft_sign */
         // U+0967: "१" DEVANAGARI DIGIT ONE
         /* keyspec_symbols_1 */ "\u0967",
@@ -2774,13 +2788,13 @@
         // U+0917: "ग" DEVANAGARI LETTER GA
         /* keylabel_to_alpha */ "\u0915\u0916\u0917",
         /* morekeys_c ~ */
-        null, null, null, null, null, null, null,
-        /* ~ morekeys_d */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
         // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
         /* keyspec_currency */ "\u0930\u0941.",
-        /* morekeys_z ~ */
+        /* morekeys_y ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null,
+        null, null, null, null, null,
         /* ~ morekeys_cyrillic_soft_sign */
         // U+0967: "१" DEVANAGARI DIGIT ONE
         /* keyspec_symbols_1 */ "\u0967",
@@ -2866,6 +2880,7 @@
         /* morekeys_n */ "\u00F1,\u0144",
         /* single_quotes */ "!text/single_9qm_rqm",
         /* morekeys_s */ null,
+        /* keyspec_currency */ null,
         // U+0133: "ĳ" LATIN SMALL LIGATURE IJ
         /* morekeys_y */ "\u0133",
     };
@@ -2915,9 +2930,9 @@
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u015B,\u00DF,\u0161",
-        /* morekeys_y ~ */
+        /* keyspec_currency ~ */
         null, null, null,
-        /* ~ keyspec_currency */
+        /* ~ morekeys_d */
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
@@ -3021,7 +3036,7 @@
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u0219,\u00DF,\u015B,\u0161",
-        /* morekeys_y ~ */
+        /* keyspec_currency ~ */
         null, null, null, null,
         /* ~ morekeys_z */
         // U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW
@@ -3137,12 +3152,12 @@
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
         /* morekeys_s */ "\u0161,\u00DF,\u015B,\u015F",
+        /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
         // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
         /* morekeys_d */ "\u010F",
-        /* keyspec_currency */ null,
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
@@ -3181,10 +3196,10 @@
         /* single_quotes */ "!text/single_9qm_lqm",
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u0161",
+        /* keyspec_currency */ null,
         /* morekeys_y */ null,
         // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
         /* morekeys_d */ "\u0111",
-        /* keyspec_currency */ null,
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         /* morekeys_z */ "\u017E",
         /* morekeys_t ~ */
@@ -3302,13 +3317,13 @@
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* morekeys_s */ "\u015B,\u0161,\u015F,\u00DF",
+        /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* morekeys_y */ "\u00FD,\u00FF",
         // U+00F0: "ð" LATIN SMALL LETTER ETH
         // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
         /* morekeys_d */ "\u00F0,\u010F",
-        /* keyspec_currency */ null,
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
@@ -3390,7 +3405,7 @@
         /* single_quotes */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* morekeys_s */ "\u00DF",
-        /* morekeys_y ~ */
+        /* keyspec_currency ~ */
         null, null, null, null, null, null,
         /* ~ morekeys_l */
         /* morekeys_g */ "g\'",
@@ -3407,12 +3422,29 @@
         // U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA
         /* keylabel_to_alpha */ "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",
         /* morekeys_c ~ */
-        null, null, null, null, null, null, null,
-        /* ~ morekeys_d */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
         // U+0BF9: "௹" TAMIL RUPEE SIGN
         /* keyspec_currency */ "\u0BF9",
     };
 
+    /* Locale te_IN: Telugu (India) */
+    private static final String[] TEXTS_te_IN = {
+        /* morekeys_a ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_i */
+        // Label for "switch to alphabetic" key.
+        // U+0C24/U+0C46: "తె" TELUGU LETTER TA/TELUGU VOWEL SIGN E
+        // U+0C32/U+0C41: "లు" TELUGU LETTER LA/TELUGU VOWEL SIGN U
+        // U+0C17/U+0C41: "గు" TELUGU LETTER GA/TELUGU VOWEL SIGN U
+        /* keylabel_to_alpha */ "\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41",
+        /* morekeys_c ~ */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        /* keyspec_currency */ "\u20B9",
+    };
+
     /* Locale th: Thai */
     private static final String[] TEXTS_th = {
         /* morekeys_a ~ */
@@ -3424,8 +3456,8 @@
         // U+0E04: "ค" THAI CHARACTER KHO KHWAI
         /* keylabel_to_alpha */ "\u0E01\u0E02\u0E04",
         /* morekeys_c ~ */
-        null, null, null, null, null, null, null,
-        /* ~ morekeys_d */
+        null, null, null, null, null,
+        /* ~ morekeys_s */
         // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
         /* keyspec_currency */ "\u0E3F",
     };
@@ -3526,7 +3558,7 @@
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* morekeys_s */ "\u015F,\u00DF,\u015B,\u0161",
-        /* morekeys_y ~ */
+        /* keyspec_currency ~ */
         null, null, null, null, null, null,
         /* ~ morekeys_l */
         // U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
@@ -3547,13 +3579,11 @@
         /* double_quotes */ "!text/double_9qm_lqm",
         /* morekeys_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
-        /* morekeys_s ~ */
-        null, null, null,
-        /* ~ morekeys_d */
+        /* morekeys_s */ null,
         // U+20B4: "₴" HRYVNIA SIGN
         /* keyspec_currency */ "\u20B4",
-        /* morekeys_z ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* morekeys_y ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ morekeys_nordic_row2_10 */
         // U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
         /* keyspec_east_slavic_row1_9 */ "\u0449",
@@ -3650,6 +3680,8 @@
         /* keylabel_to_alpha ~ */
         null, null, null, null, null, null,
         /* ~ morekeys_s */
+        // U+20AB: "₫" DONG SIGN
+        /* keyspec_currency */ "\u20AB",
         // U+1EF3: "ỳ" LATIN SMALL LETTER Y WITH GRAVE
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+1EF7: "ỷ" LATIN SMALL LETTER Y WITH HOOK ABOVE
@@ -3658,8 +3690,6 @@
         /* morekeys_y */ "\u1EF3,\u00FD,\u1EF7,\u1EF9,\u1EF5",
         // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
         /* morekeys_d */ "\u0111",
-        // U+20AB: "₫" DONG SIGN
-        /* keyspec_currency */ "\u20AB",
     };
 
     /* Locale zu: Zulu */
@@ -3793,6 +3823,7 @@
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+017F: "ſ" LATIN SMALL LETTER LONG S
         /* morekeys_s */ "\u00DF,\u015B,\u015D,\u015F,\u0161,\u017F",
+        /* keyspec_currency */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
@@ -3802,7 +3833,6 @@
         // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
         // U+00F0: "ð" LATIN SMALL LETTER ETH
         /* morekeys_d */ "\u010F,\u0111,\u00F0",
-        /* keyspec_currency */ null,
         // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
         // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
         // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
@@ -3853,12 +3883,12 @@
     private static final Object[] LOCALES_AND_TEXTS = {
     // "locale", TEXT_ARRAY,  /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */
         "DEFAULT", TEXTS_DEFAULT, /* 168/168 DEFAULT */
-        "af"     , TEXTS_af,    /*   7/ 12 Afrikaans */
+        "af"     , TEXTS_af,    /*   7/ 13 Afrikaans */
         "ar"     , TEXTS_ar,    /*  55/110 Arabic */
         "az_AZ"  , TEXTS_az_AZ, /*   8/ 18 Azerbaijani (Azerbaijan) */
         "be_BY"  , TEXTS_be_BY, /*   9/ 32 Belarusian (Belarus) */
         "bg"     , TEXTS_bg,    /*   2/  8 Bulgarian */
-        "bn_IN"  , TEXTS_bn_IN, /*   2/ 14 Bengali (India) */
+        "bn_IN"  , TEXTS_bn_IN, /*   2/ 12 Bengali (India) */
         "ca"     , TEXTS_ca,    /*  11/ 96 Catalan */
         "cs"     , TEXTS_cs,    /*  17/ 21 Czech */
         "da"     , TEXTS_da,    /*  19/ 54 Danish */
@@ -3883,18 +3913,19 @@
         "ka_GE"  , TEXTS_ka_GE, /*   3/ 10 Georgian (Georgia) */
         "kk"     , TEXTS_kk,    /*  15/121 Kazakh */
         "km_KH"  , TEXTS_km_KH, /*   2/122 Khmer (Cambodia) */
+        "kn_IN"  , TEXTS_kn_IN, /*   2/ 12 Kannada (India) */
         "ky"     , TEXTS_ky,    /*  10/ 89 Kirghiz */
-        "lo_LA"  , TEXTS_lo_LA, /*   2/ 14 Lao (Laos) */
+        "lo_LA"  , TEXTS_lo_LA, /*   2/ 12 Lao (Laos) */
         "lt"     , TEXTS_lt,    /*  18/ 22 Lithuanian */
         "lv"     , TEXTS_lv,    /*  18/ 22 Latvian */
         "mk"     , TEXTS_mk,    /*   9/ 94 Macedonian */
-        "ml_IN"  , TEXTS_ml_IN, /*   2/ 14 Malayalam (India) */
-        "mn_MN"  , TEXTS_mn_MN, /*   2/ 14 Mongolian (Mongolia) */
+        "ml_IN"  , TEXTS_ml_IN, /*   2/ 12 Malayalam (India) */
+        "mn_MN"  , TEXTS_mn_MN, /*   2/ 12 Mongolian (Mongolia) */
         "mr_IN"  , TEXTS_mr_IN, /*  23/ 53 Marathi (India) */
         "my_MM"  , TEXTS_my_MM, /*   8/104 Burmese (Myanmar) */
         "nb"     , TEXTS_nb,    /*  11/ 54 Norwegian Bokmål */
         "ne_NP"  , TEXTS_ne_NP, /*  23/ 53 Nepali (Nepal) */
-        "nl"     , TEXTS_nl,    /*   9/ 12 Dutch */
+        "nl"     , TEXTS_nl,    /*   9/ 13 Dutch */
         "pl"     , TEXTS_pl,    /*  10/ 17 Polish */
         "pt"     , TEXTS_pt,    /*   6/  7 Portuguese */
         "rm"     , TEXTS_rm,    /*   1/  2 Raeto-Romance */
@@ -3906,8 +3937,9 @@
         "sr"     , TEXTS_sr,    /*  11/ 94 Serbian */
         "sv"     , TEXTS_sv,    /*  21/ 54 Swedish */
         "sw"     , TEXTS_sw,    /*   9/ 18 Swahili */
-        "ta_IN"  , TEXTS_ta_IN, /*   2/ 14 Tamil (India) */
-        "th"     , TEXTS_th,    /*   2/ 14 Thai */
+        "ta_IN"  , TEXTS_ta_IN, /*   2/ 12 Tamil (India) */
+        "te_IN"  , TEXTS_te_IN, /*   2/ 12 Telugu (India) */
+        "th"     , TEXTS_th,    /*   2/ 12 Thai */
         "tl"     , TEXTS_tl,    /*   7/  9 Tagalog */
         "tr"     , TEXTS_tr,    /*   7/ 18 Turkish */
         "uk"     , TEXTS_uk,    /*  11/ 88 Ukrainian */
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
index 056fe1b..eb67bc1 100644
--- a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
@@ -25,7 +25,7 @@
 
 @SmallTest
 public class KeyboardLayoutSetSubtypesCountTests extends KeyboardLayoutSetTestsBase {
-    private static final int NUMBER_OF_SUBTYPES = 75;
+    private static final int NUMBER_OF_SUBTYPES = 77;
     private static final int NUMBER_OF_ASCII_CAPABLE_SUBTYPES = 45;
     private static final int NUMBER_OF_PREDEFINED_ADDITIONAL_SUBTYPES = 2;
 
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Kannada.java b/tests/src/com/android/inputmethod/keyboard/layout/Kannada.java
new file mode 100644
index 0000000..c87e304
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Kannada.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Kannada keyboard.
+ */
+public final class Kannada extends LayoutBase {
+    private static final String LAYOUT_NAME = "kannada";
+
+    public Kannada(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class KannadaCustomizer extends LayoutCustomizer {
+        public KannadaCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return KANNADA_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        @Override
+        public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
+            return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
+        }
+
+        // U+0C95: "ಕ" KANNADA LETTER KA
+        // U+0CA8/U+0CCD/U+0CA8: "ನ್ನ" KANNADA LETTER NA/KANNADA SIGN VIRAMA/KANNADA LETTER NA
+        // U+0CA1: "ಡ" KANNADA LETTER DDA
+        private static final ExpectedKey KANNADA_ALPHABET_KEY = key(
+                "\u0C95\u0CA8\u0CCD\u0CA8\u0CA1", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0CCC: "ೌ" KANNADA VOWEL SIGN AU
+                    // U+0C94: "ಔ" KANNADA LETTER AU
+                    // U+0CE7: "೧" KANNADA DIGIT ONE
+                    key("\u0CCC", joinMoreKeys("\u0C94", "\u0CE7", "1")),
+                    // U+0CC8: "ೈ" KANNADA VOWEL SIGN AI
+                    // U+0C90: "ಐ" KANNADA LETTER AI
+                    // U+0CE8: "೨" KANNADA DIGIT TWO
+                    key("\u0CC8", joinMoreKeys("\u0C90", "\u0CE8", "2")),
+                    // U+0CBE: "ಾ" KANNADA VOWEL SIGN AA
+                    // U+0C86: "ಆ" KANNADA LETTER AA
+                    // U+0CE9: "೩" KANNADA DIGIT THREE
+                    key("\u0CBE", joinMoreKeys("\u0C86", "\u0CE9", "3")),
+                    // U+0CC0: "ೀ" KANNADA VOWEL SIGN II
+                    // U+0C88: "ಈ" KANNADA LETTER II
+                    // U+0CEA: "೪" KANNADA DIGIT FOUR
+                    key("\u0CC0", joinMoreKeys("\u0C88", "\u0CEA", "4")),
+                    // U+0CC2: "ೂ" KANNADA VOWEL SIGN UU
+                    // U+0C8A: "ಊ" KANNADA LETTER UU
+                    // U+0CEB: "೫" KANNADA DIGIT FIVE
+                    key("\u0CC2", joinMoreKeys("\u0C8A", "\u0CEB", "5")),
+                    // U+0CAC: "ಬ" KANNADA LETTER BA
+                    // U+0CAD: "ಭ" KANNADA LETTER BHA
+                    // U+0CEC: "೬" KANNADA DIGIT SIX
+                    key("\u0CAC", joinMoreKeys("\u0CAD", "\u0CEC", "6")),
+                    // U+0CB9: "ಹ" KANNADA LETTER HA
+                    // U+0C99: "ಙ" KANNADA LETTER NGA
+                    // U+0CED: "೭" KANNADA DIGIT SEVEN
+                    key("\u0CB9", joinMoreKeys("\u0C99", "\u0CED", "7")),
+                    // U+0C97: "ಗ" KANNADA LETTER GA
+                    // U+0C98: "ಘ" KANNADA LETTER GHA
+                    // U+0CEE: "೮" KANNADA DIGIT EIGHT
+                    key("\u0C97", joinMoreKeys("\u0C98", "\u0CEE", "8")),
+                    // U+0CA6: "ದ" KANNADA LETTER DA
+                    // U+0CA7: "ಧ" KANNADA LETTER DHA
+                    // U+0CEF: "೯" KANNADA DIGIT NINE
+                    key("\u0CA6", joinMoreKeys("\u0CA7", "\u0CEF", "9")),
+                    // U+0C9C: "ಜ" KANNADA LETTER JA
+                    // U+0C9D: "ಝ" KANNADA LETTER JHA
+                    // U+0CE6: "೦" KANNADA DIGIT ZERO
+                    key("\u0C9C", joinMoreKeys("\u0C9D", "\u0CE6", "0")),
+                    // U+0CA1: "ಡ" KANNADA LETTER DDA
+                    // U+0CA2: "ಢ" KANNADA LETTER DDHA
+                    key("\u0CA1", moreKey("\u0CA2")))
+            .setKeysOfRow(2,
+                    // U+0CCB: "ೋ" KANNADA VOWEL SIGN OO
+                    // U+0C93: "ಓ" KANNADA LETTER OO
+                    key("\u0CCB", moreKey("\u0C93")),
+                    // U+0CC7: "ೇ" KANNADA VOWEL SIGN EE
+                    // U+0C8F: "ಏ" KANNADA LETTER EE
+                    key("\u0CC7", moreKey("\u0C8F")),
+                    // U+0CCD: "್" KANNADA SIGN VIRAMA
+                    // U+0C85: "ಅ" KANNADA LETTER A
+                    key("\u0CCD", moreKey("\u0C85")),
+                    // U+0CBF: "ಿ" KANNADA VOWEL SIGN I
+                    // U+0C87: "ಇ" KANNADA LETTER I
+                    key("\u0CBF", moreKey("\u0C87")),
+                    // U+0CC1: "ು" KANNADA VOWEL SIGN U
+                    // U+0C89: "ಉ" KANNADA LETTER U
+                    key("\u0CC1", moreKey("\u0C89")),
+                    // U+0CAA: "ಪ" KANNADA LETTER PA
+                    // U+0CAB: "ಫ" KANNADA LETTER PHA
+                    key("\u0CAA", moreKey("\u0CAB")),
+                    // U+0CB0: "ರ" KANNADA LETTER RA
+                    // U+0CB1: "ಱ" KANNADA LETTER RRA
+                    // U+0CC3: "ೃ" KANNADA VOWEL SIGN VOCALIC R
+                    key("\u0CB0", joinMoreKeys("\u0CB1", "\u0CC3")),
+                    // U+0C95: "ಕ" KANNADA LETTER KA
+                    // U+0C96: "ಖ" KANNADA LETTER KHA
+                    key("\u0C95", moreKey("\u0C96")),
+                    // U+0CA4: "ತ" KANNADA LETTER TA
+                    // U+0CA5: "ಥ" KANNADA LETTER THA
+                    key("\u0CA4", moreKey("\u0CA5")),
+                    // U+0C9A: "ಚ" KANNADA LETTER CA
+                    // U+0C9B: "ಛ" KANNADA LETTER CHA
+                    key("\u0C9A", moreKey("\u0C9B")),
+                    // U+0C9F: "ಟ" KANNADA LETTER TTA
+                    // U+0CA0: "ಠ" KANNADA LETTER TTHA
+                    key("\u0C9F", moreKey("\u0CA0")))
+            .setKeysOfRow(3,
+                    // U+0CC6: "ೆ" KANNADA VOWEL SIGN E
+                    // U+0C92: "ಒ" KANNADA LETTER O
+                    key("\u0CC6", moreKey("\u0C92")),
+                    // U+0C82: "ಂ" KANNADA SIGN ANUSVARA
+                    // U+0C8E: "ಎ" KANNADA LETTER E
+                    key("\u0C82", moreKey("\u0C8E")),
+                    // U+0CAE: "ಮ" KANNADA LETTER MA
+                    // U+0CA3: "ಣ" KANNADA LETTER NNA
+                    key("\u0CAE", moreKey("\u0CA3")),
+                    // U+0CA8: "ನ" KANNADA LETTER NA
+                    // U+0CB5: "ವ" KANNADA LETTER VA
+                    "\u0CA8", "\u0CB5",
+                    // U+0CB2: "ಲ" KANNADA LETTER LA
+                    // U+0CB3: "ಳ" KANNADA LETTER LLA
+                    key("\u0CB2", moreKey("\u0CB3")),
+                    // U+0CB8: "ಸ" KANNADA LETTER SA
+                    // U+0CB6: "ಶ" KANNADA LETTER SHA
+                    key("\u0CB8", moreKey("\u0CB6")),
+                    // U+0C8B: "ಋ" KANNADA LETTER VOCALIC R
+                    // U+0CCD/U+0CB0: "್ರ" KANNADA SIGN VIRAMA/KANNADA LETTER RA
+                    key("\u0C8B", moreKey("\u0CCD\u0CB0")),
+                    // U+0CB7: "ಷ" KANNADA LETTER SSA
+                    // U+0C95/U+0CCD/U+0CB7:
+                    //     "ಕ್ಷ" KANNADA LETTER RA/KANNADA SIGN VIRAMA/KANNADA LETTER SSA
+                    key("\u0CB7", moreKey("\u0C95\u0CCD\u0CB7")),
+                    // U+0CAF: "ಯ" KANNADA LETTER YA
+                    // U+0C9C/U+0CCD/U+0C9E:
+                    //     "ಜ್ಞ" KANNADA LETTER JA/KANNADA SIGN VIRAMA/KANNADA LETTER NYA
+                    key("\u0CAF", moreKey("\u0C9C\u0CCD\u0C9E")))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Telugu.java b/tests/src/com/android/inputmethod/keyboard/layout/Telugu.java
new file mode 100644
index 0000000..f5d8d41
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Telugu.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Telugu keyboard.
+ */
+public final class Telugu extends LayoutBase {
+    private static final String LAYOUT_NAME = "telugu";
+
+    public Telugu(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class TeluguCustomizer extends LayoutCustomizer {
+        public TeluguCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return TELUGU_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        @Override
+        public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) {
+            return EMPTY_KEYS;
+        }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+            return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
+        }
+
+        @Override
+        public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
+            return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
+        }
+
+        // U+0C24/U+0C46: "తె" TELUGU LETTER TA/TELUGU VOWEL SIGN E
+        // U+0C32/U+0C41: "లు" TELUGU LETTER LA/TELUGU VOWEL SIGN U
+        // U+0C17/U+0C41: "గు" TELUGU LETTER GA/TELUGU VOWEL SIGN U
+        private static final ExpectedKey TELUGU_ALPHABET_KEY = key(
+                "\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9",
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+        return null;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+0C4C: "ౌ" TELUGU VOWEL SIGN AU
+                    // U+0C14: "ఔ" TELUGU LETTER AU
+                    key("\u0C4C", joinMoreKeys("\u0C14", "1")),
+                    // U+0C48: "ై" TELUGU VOWEL SIGN AI
+                    // U+0C10: "ఐ" TELUGU LETTER AI
+                    key("\u0C48", joinMoreKeys("\u0C10", "2")),
+                    // U+0C3E: "ా" TELUGU VOWEL SIGN AA
+                    // U+0C06: "ఆ" TELUGU LETTER AA
+                    key("\u0C3E", joinMoreKeys("\u0C06", "3")),
+                    // U+0C40: "ీ" TELUGU VOWEL SIGN II
+                    // U+0C08: "ఈ" TELUGU LETTER II
+                    key("\u0C40", joinMoreKeys("\u0C08", "4")),
+                    // U+0C42: "ూ" TELUGU VOWEL SIGN UU
+                    // U+0C0A: "ఊ" TELUGU LETTER UU
+                    key("\u0C42", joinMoreKeys("\u0C0A", "5")),
+                    // U+0C2C: "బ" TELUGU LETTER BA
+                    // U+0C2D: "భ" TELUGU LETTER BHA
+                    key("\u0C2C", joinMoreKeys("\u0C2D", "6")),
+                    // U+0C39: "హ" TELUGU LETTER HA
+                    // U+0C03: "ః" TELUGU SIGN VISARGA
+                    key("\u0C39", joinMoreKeys("\u0C03", "7")),
+                    // U+0C17: "గ" TELUGU LETTER GA
+                    // U+0C18: "ఘ" TELUGU LETTER GHA
+                    key("\u0C17", joinMoreKeys("\u0C18", "8")),
+                    // U+0C26: "ద" TELUGU LETTER DA
+                    // U+0C27: "ధ" TELUGU LETTER DHA
+                    key("\u0C26", joinMoreKeys("\u0C27", "9")),
+                    // U+0C1C: "జ" TELUGU LETTER JA
+                    // U+0C1D: "ఝ" TELUGU LETTER JHA
+                    key("\u0C1C", joinMoreKeys("\u0C1D", "0")),
+                    // U+0C21: "డ" TELUGU LETTER DDA
+                    // U+0C22: "ఢ" TELUGU LETTER DDHA
+                    key("\u0C21", moreKey("\u0C22")))
+            .setKeysOfRow(2,
+                    // U+0C4B: "ో" TELUGU VOWEL SIGN OO
+                    // U+0C13: "ఓ" TELUGU LETTER OO
+                    key("\u0C4B", moreKey("\u0C13")),
+                    // U+0C47: "ే" TELUGU VOWEL SIGN EE
+                    // U+0C0F: "ఏ" TELUGU LETTER EE
+                    key("\u0C47", moreKey("\u0C0F")),
+                    // U+0C4D: "్" TELUGU SIGN VIRAMA
+                    // U+0C05: "అ" TELUGU LETTER A
+                    key("\u0C4D", moreKey("\u0C05")),
+                    // U+0C3F: "ి" TELUGU VOWEL SIGN I
+                    // U+0C07: "ఇ" TELUGU LETTER I
+                    key("\u0C3F", moreKey("\u0C07")),
+                    // U+0C41: "ు" TELUGU VOWEL SIGN U
+                    // U+0C09: "ఉ" TELUGU LETTER U
+                    key("\u0C41", moreKey("\u0C09")),
+                    // U+0C2A: "ప" TELUGU LETTER PA
+                    // U+0C2B: "ఫ" TELUGU LETTER PHA
+                    key("\u0C2A", moreKey("\u0C2B")),
+                    // U+0C30: "ర" TELUGU LETTER RA
+                    // U+0C31: "ఱ" TELUGU LETTER RRA
+                    // U+0C43: "ృ" TELUGU VOWEL SIGN VOCALIC R
+                    key("\u0C30", joinMoreKeys("\u0C31", "\u0C43")),
+                    // U+0C15: "క" TELUGU LETTER KA
+                    // U+0C16: "ఖ" TELUGU LETTER KHA
+                    key("\u0C15", moreKey("\u0C16")),
+                    // U+0C24: "త" TELUGU LETTER TA
+                    // U+0C25: "థ" TELUGU LETTER THA
+                    key("\u0C24", moreKey("\u0C25")),
+                    // U+0C1A: "చ" TELUGU LETTER CA
+                    // U+0C1B: "ఛ" TELUGU LETTER CHA
+                    key("\u0C1A", moreKey("\u0C1B")),
+                    // U+0C1F: "ట" TELUGU LETTER TTA
+                    // U+0C20: "ఠ" TELUGU LETTER TTHA
+                    key("\u0C1F", moreKey("\u0C20")))
+            .setKeysOfRow(3,
+                    // U+0C46: "ె" TELUGU VOWEL SIGN E
+                    // U+0C12: "ఒ" TELUGU LETTER O
+                    key("\u0C46", moreKey("\u0C12")),
+                    // U+0C02: "ం" TELUGU SIGN ANUSVARA
+                    // U+0C0E: "ఎ" TELUGU LETTER E
+                    key("\u0C02", moreKey("\u0C0E")),
+                    // U+0C2E: "మ" TELUGU LETTER MA
+                    "\u0C2E",
+                    // U+0C28: "న" TELUGU LETTER NA
+                    // U+0C23: "ణ" TELUGU LETTER NNA
+                    // U+0C19: "ఙ" TELUGU LETTER NGA
+                    key("\u0C28", joinMoreKeys("\u0C23", "\u0C19")),
+                    // U+0C35: "వ" TELUGU LETTER VA
+                    "\u0C35",
+                    // U+0C32: "ల" TELUGU LETTER LA
+                    // U+0C33: "ళ" TELUGU LETTER LLA
+                    key("\u0C32", moreKey("\u0C33")),
+                    // U+0C38: "స" TELUGU LETTER SA
+                    // U+0C36: "శ" TELUGU LETTER SHA
+                    key("\u0C38", moreKey("\u0C36")),
+                    // U+0C0B: "ఋ" TELUGU LETTER VOCALIC R
+                    // U+0C4D/U+0C30: "్ర" TELUGU SIGN VIRAMA/TELUGU LETTER RA
+                    key("\u0C0B", moreKey("\u0C4D\u0C30")),
+                    // U+0C37: "ష" TELUGU LETTER SSA
+                    // U+0C15/U+0C4D/U+0C37:
+                    //     "క్ష" TELUGU LETTER KA/TELUGU SIGN VIRAMA/TELUGU LETTER SSA
+                    key("\u0C37", moreKey("\u0C15\u0C4D\u0C37")),
+                    // U+0C2F: "య" TELUGU LETTER YA
+                    // U+0C1C/U+0C4D/U+0C1E:
+                    //     "జ్ఞ" TELUGU LETTER JA/TELUGU SIGN VIRAMA/TELUGU LETTER NYA
+                    key("\u0C2F", moreKey("\u0C1C\u0C4D\u0C1E")))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKannadaIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKannadaIN.java
new file mode 100644
index 0000000..d1866e8
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKannadaIN.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Kannada;
+import com.android.inputmethod.keyboard.layout.Kannada.KannadaCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * kn_IN: Kannada (India)/kannada
+ */
+@SmallTest
+public final class TestsKannadaIN extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("kn", "IN");
+    private static final LayoutBase LAYOUT = new Kannada(new KannadaCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTeluguIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTeluguIN.java
new file mode 100644
index 0000000..04996d9
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTeluguIN.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Telugu;
+import com.android.inputmethod.keyboard.layout.Telugu.TeluguCustomizer;
+
+import java.util.Locale;
+
+/**
+ * te_IN: Telugu (India)/telugu
+ */
+@SmallTest
+public final class TestsTeluguIN extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("te", "IN");
+    private static final LayoutBase LAYOUT = new Telugu(new TeluguCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tools/make-keyboard-text/res/values-kn-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-kn-rIN/donottranslate-more-keys.xml
new file mode 100644
index 0000000..88c8226
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-kn-rIN/donottranslate-more-keys.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0C95: "ಕ" KANNADA LETTER KA
+         U+0CA8/U+0CCD/U+0CA8: "ನ್ನ" KANNADA LETTER NA/KANNADA SIGN VIRAMA/KANNADA LETTER NA
+         U+0CA1: "ಡ" KANNADA LETTER DDA -->
+    <string name="keylabel_to_alpha">&#x0C95;&#x0CA8;&#x0CCD;&#x0CA8;&#x0CA1;</string>
+    <!-- U+20B9: "₹" INDIAN RUPEE SIGN -->
+    <string name="keyspec_currency">&#x20B9;</string>
+</resources>
diff --git a/tools/make-keyboard-text/res/values-te-rIN/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-te-rIN/donottranslate-more-keys.xml
new file mode 100644
index 0000000..7fa769d
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-te-rIN/donottranslate-more-keys.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Label for "switch to alphabetic" key.
+         U+0C24/U+0C46: "తె" TELUGU LETTER TA/TELUGU VOWEL SIGN E
+         U+0C32/U+0C41: "లు" TELUGU LETTER LA/TELUGU VOWEL SIGN U
+         U+0C17/U+0C41: "గు" TELUGU LETTER GA/TELUGU VOWEL SIGN U -->
+    <string name="keylabel_to_alpha">&#x0C24;&#x0C46;&#x0C32;&#x0C41;&#x0C17;&#x0C41;</string>
+    <!-- U+20B9: "₹" INDIAN RUPEE SIGN -->
+    <string name="keyspec_currency">&#x20B9;</string>
+</resources>
