diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..e33d97e
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,29 @@
+version_name = "1.00-aosp"
+version_code = "100"
+
+android_app {
+    name: "LeanbackIME",
+
+    sdk_version: "system_current",
+
+    srcs: [
+        "src/**/*.java",
+    ],
+
+    optimize: {
+        proguard_flags_files: ["proguard.cfg"],
+        enabled: false,
+    },
+
+    resource_dirs: ["res"],
+
+    aaptflags: [
+        "--auto-add-overlay",
+
+        "--version-name",
+	version_name,
+
+	"--version-code",
+	version_code,
+    ]
+}
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
new file mode 100644
index 0000000..c7267cd
--- /dev/null
+++ b/AndroidManifest.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.inputmethod.leanback" >
+
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
+
+    <uses-sdk
+        android:minSdkVersion="16"
+        android:targetSdkVersion="23" />
+
+    <application
+        android:label="@string/ime_name" >
+        <service
+            android:name="com.android.inputmethod.leanback.service.LeanbackImeService"
+            android:label="@string/ime_service_name"
+            android:permission="android.permission.BIND_INPUT_METHOD" >
+            <intent-filter>
+                <action android:name="android.view.InputMethod" />
+            </intent-filter>
+
+            <meta-data
+                android:name="android.view.im"
+                android:resource="@xml/method" />
+        </service>
+    </application>
+
+</manifest>
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..65899b3
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1 @@
+See https://source.android.com/setup/contribute
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..74e368a
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1,2 @@
+dake@google.com
+eisenbach@google.com
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..49ab56b
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# Default keyboard for Android TV
diff --git a/proguard.cfg b/proguard.cfg
new file mode 100644
index 0000000..3920382
--- /dev/null
+++ b/proguard.cfg
@@ -0,0 +1,14 @@
+-optimizationpasses 5
+-dontusemixedcaseclassnames
+-dontskipnonpubliclibraryclasses
+-dontpreverify
+-verbose
+-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class BinaryDictionary
+-keep public class Dictionary
+
+-dontwarn org.bouncycastle.jce.provider.BouncyCastleProvider
+-dontwarn org.bouncycastle.x509.X509V3CertificateGenerator
\ No newline at end of file
diff --git a/res/drawable-hdpi/ic_ime_accent_close.png b/res/drawable-hdpi/ic_ime_accent_close.png
new file mode 100644
index 0000000..e96a5ee
--- /dev/null
+++ b/res/drawable-hdpi/ic_ime_accent_close.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ime_alphabet.png b/res/drawable-hdpi/ic_ime_alphabet.png
new file mode 100644
index 0000000..06324bc
--- /dev/null
+++ b/res/drawable-hdpi/ic_ime_alphabet.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ime_delete.png b/res/drawable-hdpi/ic_ime_delete.png
new file mode 100644
index 0000000..7eb3680
--- /dev/null
+++ b/res/drawable-hdpi/ic_ime_delete.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ime_left_arrow.png b/res/drawable-hdpi/ic_ime_left_arrow.png
new file mode 100644
index 0000000..1f92de6
--- /dev/null
+++ b/res/drawable-hdpi/ic_ime_left_arrow.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ime_right_arrow.png b/res/drawable-hdpi/ic_ime_right_arrow.png
new file mode 100644
index 0000000..f3f84bf
--- /dev/null
+++ b/res/drawable-hdpi/ic_ime_right_arrow.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ime_shift_lock_on.png b/res/drawable-hdpi/ic_ime_shift_lock_on.png
new file mode 100644
index 0000000..fa8a4bd
--- /dev/null
+++ b/res/drawable-hdpi/ic_ime_shift_lock_on.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ime_shift_off.png b/res/drawable-hdpi/ic_ime_shift_off.png
new file mode 100644
index 0000000..8b55067
--- /dev/null
+++ b/res/drawable-hdpi/ic_ime_shift_off.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ime_shift_on.png b/res/drawable-hdpi/ic_ime_shift_on.png
new file mode 100644
index 0000000..23b31e2
--- /dev/null
+++ b/res/drawable-hdpi/ic_ime_shift_on.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ime_space.png b/res/drawable-hdpi/ic_ime_space.png
new file mode 100644
index 0000000..e899709
--- /dev/null
+++ b/res/drawable-hdpi/ic_ime_space.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_ime_symbols.png b/res/drawable-hdpi/ic_ime_symbols.png
new file mode 100644
index 0000000..4217907
--- /dev/null
+++ b/res/drawable-hdpi/ic_ime_symbols.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_voice_available.png b/res/drawable-hdpi/ic_voice_available.png
new file mode 100644
index 0000000..61bdd00
--- /dev/null
+++ b/res/drawable-hdpi/ic_voice_available.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_voice_focus.png b/res/drawable-hdpi/ic_voice_focus.png
new file mode 100644
index 0000000..8fce9a5
--- /dev/null
+++ b/res/drawable-hdpi/ic_voice_focus.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_voice_off.png b/res/drawable-hdpi/ic_voice_off.png
new file mode 100644
index 0000000..208f430
--- /dev/null
+++ b/res/drawable-hdpi/ic_voice_off.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_voice_recording.png b/res/drawable-hdpi/ic_voice_recording.png
new file mode 100644
index 0000000..a8da1b8
--- /dev/null
+++ b/res/drawable-hdpi/ic_voice_recording.png
Binary files differ
diff --git a/res/drawable-hdpi/key_selector.9.png b/res/drawable-hdpi/key_selector.9.png
new file mode 100644
index 0000000..6eb8b88
--- /dev/null
+++ b/res/drawable-hdpi/key_selector.9.png
Binary files differ
diff --git a/res/drawable-hdpi/touch_selector.9.png b/res/drawable-hdpi/touch_selector.9.png
new file mode 100644
index 0000000..ae4b270
--- /dev/null
+++ b/res/drawable-hdpi/touch_selector.9.png
Binary files differ
diff --git a/res/drawable-hdpi/vs_reactive_dark.png b/res/drawable-hdpi/vs_reactive_dark.png
new file mode 100644
index 0000000..d2cee0d
--- /dev/null
+++ b/res/drawable-hdpi/vs_reactive_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/vs_reactive_light.png b/res/drawable-hdpi/vs_reactive_light.png
new file mode 100644
index 0000000..3c37e71
--- /dev/null
+++ b/res/drawable-hdpi/vs_reactive_light.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ime_accent_close.png b/res/drawable-mdpi/ic_ime_accent_close.png
new file mode 100644
index 0000000..d72f653
--- /dev/null
+++ b/res/drawable-mdpi/ic_ime_accent_close.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ime_alphabet.png b/res/drawable-mdpi/ic_ime_alphabet.png
new file mode 100644
index 0000000..9325d48
--- /dev/null
+++ b/res/drawable-mdpi/ic_ime_alphabet.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ime_delete.png b/res/drawable-mdpi/ic_ime_delete.png
new file mode 100644
index 0000000..4ba17b1
--- /dev/null
+++ b/res/drawable-mdpi/ic_ime_delete.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ime_left_arrow.png b/res/drawable-mdpi/ic_ime_left_arrow.png
new file mode 100644
index 0000000..24de415
--- /dev/null
+++ b/res/drawable-mdpi/ic_ime_left_arrow.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ime_right_arrow.png b/res/drawable-mdpi/ic_ime_right_arrow.png
new file mode 100644
index 0000000..e2c9bb3
--- /dev/null
+++ b/res/drawable-mdpi/ic_ime_right_arrow.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ime_shift_lock_on.png b/res/drawable-mdpi/ic_ime_shift_lock_on.png
new file mode 100644
index 0000000..2574b28
--- /dev/null
+++ b/res/drawable-mdpi/ic_ime_shift_lock_on.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ime_shift_off.png b/res/drawable-mdpi/ic_ime_shift_off.png
new file mode 100644
index 0000000..7144a00
--- /dev/null
+++ b/res/drawable-mdpi/ic_ime_shift_off.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ime_shift_on.png b/res/drawable-mdpi/ic_ime_shift_on.png
new file mode 100644
index 0000000..1cb530b
--- /dev/null
+++ b/res/drawable-mdpi/ic_ime_shift_on.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ime_space.png b/res/drawable-mdpi/ic_ime_space.png
new file mode 100644
index 0000000..7fea09f
--- /dev/null
+++ b/res/drawable-mdpi/ic_ime_space.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_ime_symbols.png b/res/drawable-mdpi/ic_ime_symbols.png
new file mode 100644
index 0000000..90933f0
--- /dev/null
+++ b/res/drawable-mdpi/ic_ime_symbols.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_voice_available.png b/res/drawable-mdpi/ic_voice_available.png
new file mode 100644
index 0000000..a3cb908
--- /dev/null
+++ b/res/drawable-mdpi/ic_voice_available.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_voice_focus.png b/res/drawable-mdpi/ic_voice_focus.png
new file mode 100644
index 0000000..7cfca18
--- /dev/null
+++ b/res/drawable-mdpi/ic_voice_focus.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_voice_off.png b/res/drawable-mdpi/ic_voice_off.png
new file mode 100644
index 0000000..f4fd35b
--- /dev/null
+++ b/res/drawable-mdpi/ic_voice_off.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_voice_recording.png b/res/drawable-mdpi/ic_voice_recording.png
new file mode 100644
index 0000000..a8bde78
--- /dev/null
+++ b/res/drawable-mdpi/ic_voice_recording.png
Binary files differ
diff --git a/res/drawable-mdpi/key_selector.9.png b/res/drawable-mdpi/key_selector.9.png
new file mode 100644
index 0000000..bf9c4b2
--- /dev/null
+++ b/res/drawable-mdpi/key_selector.9.png
Binary files differ
diff --git a/res/drawable-mdpi/touch_selector.9.png b/res/drawable-mdpi/touch_selector.9.png
new file mode 100644
index 0000000..7a85041
--- /dev/null
+++ b/res/drawable-mdpi/touch_selector.9.png
Binary files differ
diff --git a/res/drawable-mdpi/vs_reactive_dark.png b/res/drawable-mdpi/vs_reactive_dark.png
new file mode 100644
index 0000000..cf9983e
--- /dev/null
+++ b/res/drawable-mdpi/vs_reactive_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/vs_reactive_light.png b/res/drawable-mdpi/vs_reactive_light.png
new file mode 100644
index 0000000..9c67426
--- /dev/null
+++ b/res/drawable-mdpi/vs_reactive_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ime_accent_close.png b/res/drawable-xhdpi/ic_ime_accent_close.png
new file mode 100644
index 0000000..392cfe6
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ime_accent_close.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ime_alphabet.png b/res/drawable-xhdpi/ic_ime_alphabet.png
new file mode 100644
index 0000000..717690b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ime_alphabet.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ime_delete.png b/res/drawable-xhdpi/ic_ime_delete.png
new file mode 100644
index 0000000..d2ee1e7
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ime_delete.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ime_left_arrow.png b/res/drawable-xhdpi/ic_ime_left_arrow.png
new file mode 100644
index 0000000..2f23dd1
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ime_left_arrow.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ime_right_arrow.png b/res/drawable-xhdpi/ic_ime_right_arrow.png
new file mode 100644
index 0000000..d004b5b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ime_right_arrow.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ime_shift_lock_on.png b/res/drawable-xhdpi/ic_ime_shift_lock_on.png
new file mode 100644
index 0000000..307093e
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ime_shift_lock_on.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ime_shift_off.png b/res/drawable-xhdpi/ic_ime_shift_off.png
new file mode 100644
index 0000000..d5cd919
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ime_shift_off.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ime_shift_on.png b/res/drawable-xhdpi/ic_ime_shift_on.png
new file mode 100644
index 0000000..105ad86
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ime_shift_on.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ime_space.png b/res/drawable-xhdpi/ic_ime_space.png
new file mode 100644
index 0000000..0ce6584
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ime_space.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_ime_symbols.png b/res/drawable-xhdpi/ic_ime_symbols.png
new file mode 100644
index 0000000..3b1e749
--- /dev/null
+++ b/res/drawable-xhdpi/ic_ime_symbols.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_voice_available.png b/res/drawable-xhdpi/ic_voice_available.png
new file mode 100644
index 0000000..60b3a0e
--- /dev/null
+++ b/res/drawable-xhdpi/ic_voice_available.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_voice_focus.png b/res/drawable-xhdpi/ic_voice_focus.png
new file mode 100644
index 0000000..03a7049
--- /dev/null
+++ b/res/drawable-xhdpi/ic_voice_focus.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_voice_off.png b/res/drawable-xhdpi/ic_voice_off.png
new file mode 100644
index 0000000..17ea908
--- /dev/null
+++ b/res/drawable-xhdpi/ic_voice_off.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_voice_recording.png b/res/drawable-xhdpi/ic_voice_recording.png
new file mode 100644
index 0000000..facca0c
--- /dev/null
+++ b/res/drawable-xhdpi/ic_voice_recording.png
Binary files differ
diff --git a/res/drawable-xhdpi/key_selector.9.png b/res/drawable-xhdpi/key_selector.9.png
new file mode 100644
index 0000000..d280717
--- /dev/null
+++ b/res/drawable-xhdpi/key_selector.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/touch_selector.9.png b/res/drawable-xhdpi/touch_selector.9.png
new file mode 100644
index 0000000..a392e29
--- /dev/null
+++ b/res/drawable-xhdpi/touch_selector.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/vs_reactive_dark.png b/res/drawable-xhdpi/vs_reactive_dark.png
new file mode 100644
index 0000000..19272af
--- /dev/null
+++ b/res/drawable-xhdpi/vs_reactive_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/vs_reactive_light.png b/res/drawable-xhdpi/vs_reactive_light.png
new file mode 100644
index 0000000..bfb1792
--- /dev/null
+++ b/res/drawable-xhdpi/vs_reactive_light.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ime_accent_close.png b/res/drawable-xxhdpi/ic_ime_accent_close.png
new file mode 100644
index 0000000..ef1c76d
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ime_accent_close.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ime_alphabet.png b/res/drawable-xxhdpi/ic_ime_alphabet.png
new file mode 100644
index 0000000..d186fb4
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ime_alphabet.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ime_delete.png b/res/drawable-xxhdpi/ic_ime_delete.png
new file mode 100644
index 0000000..7fd42c1
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ime_delete.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ime_left_arrow.png b/res/drawable-xxhdpi/ic_ime_left_arrow.png
new file mode 100644
index 0000000..38b5b66
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ime_left_arrow.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ime_right_arrow.png b/res/drawable-xxhdpi/ic_ime_right_arrow.png
new file mode 100644
index 0000000..2ae24d2
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ime_right_arrow.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ime_shift_lock_on.png b/res/drawable-xxhdpi/ic_ime_shift_lock_on.png
new file mode 100644
index 0000000..9f1d155
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ime_shift_lock_on.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ime_shift_off.png b/res/drawable-xxhdpi/ic_ime_shift_off.png
new file mode 100644
index 0000000..50edf2b
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ime_shift_off.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ime_shift_on.png b/res/drawable-xxhdpi/ic_ime_shift_on.png
new file mode 100644
index 0000000..217a48d
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ime_shift_on.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ime_space.png b/res/drawable-xxhdpi/ic_ime_space.png
new file mode 100644
index 0000000..e4e8ef3
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ime_space.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_ime_symbols.png b/res/drawable-xxhdpi/ic_ime_symbols.png
new file mode 100644
index 0000000..fc458b0
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_ime_symbols.png
Binary files differ
diff --git a/res/drawable-xxhdpi/key_selector.9.png b/res/drawable-xxhdpi/key_selector.9.png
new file mode 100644
index 0000000..eccc5cb
--- /dev/null
+++ b/res/drawable-xxhdpi/key_selector.9.png
Binary files differ
diff --git a/res/drawable-xxhdpi/touch_selector.9.png b/res/drawable-xxhdpi/touch_selector.9.png
new file mode 100644
index 0000000..ef4546a
--- /dev/null
+++ b/res/drawable-xxhdpi/touch_selector.9.png
Binary files differ
diff --git a/res/drawable/selector_caps_shift.xml b/res/drawable/selector_caps_shift.xml
new file mode 100644
index 0000000..78aa640
--- /dev/null
+++ b/res/drawable/selector_caps_shift.xml
@@ -0,0 +1,22 @@
+<!--
+  Copyright 2012 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:drawable="@drawable/ic_ime_shift_on" android:state_selected="false"/>
+    <item android:drawable="@drawable/ic_ime_shift_lock_on"/>
+
+</selector>
\ No newline at end of file
diff --git a/res/drawable/vs_micbtn_off_selector.xml b/res/drawable/vs_micbtn_off_selector.xml
new file mode 100644
index 0000000..bb94ce2
--- /dev/null
+++ b/res/drawable/vs_micbtn_off_selector.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright 2012 Google Inc.
+     All Rights Reserved.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_focused="true"
+          android:drawable="@drawable/ic_voice_focus" />
+
+    <item android:drawable="@drawable/ic_voice_available" />
+</selector>
diff --git a/res/drawable/vs_micbtn_on_selector.xml b/res/drawable/vs_micbtn_on_selector.xml
new file mode 100644
index 0000000..9ffa836
--- /dev/null
+++ b/res/drawable/vs_micbtn_on_selector.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_focused="true"
+        android:drawable="@drawable/ic_voice_focus" />
+
+    <item android:drawable="@drawable/ic_voice_available" />
+</selector>
diff --git a/res/drawable/vs_micbtn_rec_selector.xml b/res/drawable/vs_micbtn_rec_selector.xml
new file mode 100644
index 0000000..9a48c44
--- /dev/null
+++ b/res/drawable/vs_micbtn_rec_selector.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_focused="true"
+          android:drawable="@drawable/ic_voice_recording" />
+
+    <item android:state_pressed="true"
+          android:drawable="@drawable/ic_voice_recording" />
+
+    <item android:drawable="@drawable/ic_voice_available" />
+</selector>
diff --git a/res/layout/candidate.xml b/res/layout/candidate.xml
new file mode 100644
index 0000000..ca5e484
--- /dev/null
+++ b/res/layout/candidate.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:layout_marginLeft="@dimen/candidate_margin_horizontal"
+    android:layout_marginRight="@dimen/candidate_margin_horizontal"
+    android:clipChildren="false"
+    android:focusable="true"
+    android:paddingLeft="@dimen/candidate_padding_horizontal"
+    android:paddingRight="@dimen/candidate_padding_horizontal" >
+
+    <Button
+        android:id="@+id/text"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/candidate_height"
+        android:background="@android:color/transparent"
+        android:clipChildren="false"
+        android:ellipsize="none"
+        android:fontFamily="sans-serif-condensed"
+        android:gravity="center"
+        android:singleLine="true"
+        android:textAllCaps="false"
+        android:textColor="@color/candidate_font_color"
+        android:textSize="@dimen/candidate_font_size" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/res/layout/input_leanback.xml b/res/layout/input_leanback.xml
new file mode 100644
index 0000000..cabe840
--- /dev/null
+++ b/res/layout/input_leanback.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:leanbackime="http://schemas.android.com/apk/res/com.android.inputmethod.leanback"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:clipChildren="false"
+    android:focusable="false"
+    android:gravity="bottom" >
+
+    <LinearLayout
+        android:id="@+id/keyboard"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:clipChildren="false"
+        android:orientation="horizontal" >
+
+        <com.android.inputmethod.leanback.LeanbackKeyboardView
+            android:id="@+id/main_keyboard"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:clipChildren="false"
+            leanbackime:columnCount="11"
+            leanbackime:rowCount="5" />
+    </LinearLayout>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignBottom="@id/keyboard"
+        android:layout_alignTop="@id/keyboard"
+        android:layout_centerHorizontal="true" >
+
+        <com.android.inputmethod.leanback.voice.RecognizerView
+            android:id="@+id/voice"
+            android:layout_width="@dimen/recognizer_size"
+            android:layout_height="@dimen/recognizer_size"
+            android:layout_gravity="center"
+            android:visibility="invisible" />
+    </FrameLayout>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignBottom="@id/keyboard"
+        android:layout_alignParentRight="true"
+        android:layout_alignTop="@id/keyboard"
+        android:layout_toRightOf="@id/keyboard" >
+
+        <Button
+            android:id="@+id/enter"
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/enter_key_height"
+            android:layout_gravity="center"
+            android:background="@null"
+            android:fontFamily="sans-serif-regular"
+            android:paddingLeft="@dimen/enter_key_padding_horizontal"
+            android:paddingRight="@dimen/enter_key_padding_horizontal"
+            android:text="@string/label_next_key"
+            android:textColor="@color/enter_key_font_color"
+            android:textSize="@dimen/enter_key_font_size" />
+    </FrameLayout>
+
+</RelativeLayout>
diff --git a/res/layout/recognizer_view.xml b/res/layout/recognizer_view.xml
new file mode 100644
index 0000000..acf4a53
--- /dev/null
+++ b/res/layout/recognizer_view.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2012 Google Inc. All Rights Reserved. -->
+<!-- Inline keyboard layout chrome, which includes the backspace and mode switcher buttons -->
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:recognizer="http://schemas.android.com/apk/res-auto"
+    android:layout_width="96dp"
+    android:layout_height="96dp"
+    android:gravity="center"
+    android:keepScreenOn="true"
+    android:orientation="vertical" >
+
+    <com.android.inputmethod.leanback.voice.BitmapSoundLevelView
+        android:id="@+id/microphone"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        recognizer:disabledBackgroundColor="@android:color/transparent"
+        recognizer:enabledBackgroundColor="@android:color/transparent"
+        recognizer:minLevelRadius="28dip"
+        recognizer:primaryLevels="?soundPrimaryLevel"
+        recognizer:trailLevels="?soundTrailLevel" />
+
+    <ImageView
+        android:id="@+id/recognizer_mic_button"
+        android:layout_width="@dimen/action_button_size"
+        android:layout_height="@dimen/action_button_size"
+        android:layout_gravity="center"
+        android:layout_marginLeft="16dp"
+        android:layout_marginTop="16dp"
+        android:scaleType="fitXY"
+        android:src="@drawable/ic_voice_available" >
+
+        <requestFocus />
+    </ImageView>
+
+</merge>
diff --git a/res/layout/root_leanback.xml b/res/layout/root_leanback.xml
new file mode 100644
index 0000000..587977b
--- /dev/null
+++ b/res/layout/root_leanback.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/root_ime"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_gravity="bottom|center_horizontal"
+    android:background="@color/keyboard_background"
+    android:clipChildren="false"
+    android:clipToPadding="false"
+    android:focusable="true"
+    android:gravity="bottom|center_horizontal"
+    android:orientation="vertical"
+    android:paddingBottom="@dimen/keyboard_bottom_spacing" >
+
+    <View
+        android:id="@+id/candidate_background"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignBottom="@+id/suggestions_container"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentTop="true"
+        android:background="@color/candidate_background" />
+
+    <HorizontalScrollView
+        android:id="@+id/suggestions_container"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/key_height"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginLeft="@dimen/candidate_scroll_view_horz_spacing"
+        android:layout_marginRight="@dimen/candidate_scroll_view_horz_spacing"
+        android:clipChildren="false"
+        android:fillViewport="false"
+        android:gravity="center"
+        android:scrollbars="none" >
+
+        <LinearLayout
+            android:id="@+id/suggestions"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:clipChildren="false"
+            android:divider="@null"
+            android:gravity="center"
+            android:orientation="horizontal"
+            android:showDividers="middle" />
+    </HorizontalScrollView>
+
+    <LinearLayout
+        android:id="@+id/keyboard"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/suggestions_container"
+        android:layout_centerHorizontal="true"
+        android:clipChildren="false"
+        android:gravity="center"
+        android:paddingTop="@dimen/keyboard_top_spacing" >
+
+        <include layout="@layout/input_leanback" />
+    </LinearLayout>
+
+    <include layout="@layout/selector"/>
+</RelativeLayout>
\ No newline at end of file
diff --git a/res/layout/selector.xml b/res/layout/selector.xml
new file mode 100644
index 0000000..6ca2449
--- /dev/null
+++ b/res/layout/selector.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/selector"
+    android:layout_width="@dimen/selector_size"
+    android:layout_height="@dimen/selector_size"
+    android:clipChildren="false" >
+
+    <ImageView
+        android:id="@+id/key_selector"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:clipChildren="false"
+        android:scaleType="centerInside"
+        android:background="@drawable/key_selector" />
+
+</FrameLayout>
\ No newline at end of file
diff --git a/res/raw/domain_en.dict b/res/raw/domain_en.dict
new file mode 100644
index 0000000..a687dcc
--- /dev/null
+++ b/res/raw/domain_en.dict
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
new file mode 100644
index 0000000..1aec85e
--- /dev/null
+++ b/res/values-af/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g>-sleutelbord"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g>-sleutelbord"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Gaan"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Volgende"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Stuur"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Soek"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Klaar"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Sleutelbordopsies"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Bewegingsensitiwiteit"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Aan"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Af"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Spasie"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Delete"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Modus verander"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Hoofletterslot"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Links"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Regs"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Prop \'n oorfoonstel in om te hoor hoe wagwoordsleutels hardop gesê word."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punt."</string>
+</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
new file mode 100644
index 0000000..f730d3b
--- /dev/null
+++ b/res/values-am/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"የ<xliff:g id="APP_NAME">Leanback</xliff:g> ቁልፍ ሰሌዳ"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"የ<xliff:g id="APP_NAME">Leanback</xliff:g> ቁልፍ ሰሌዳ"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"ሂድ"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"ቀጣይ"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"ላክ"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"ፍለጋ"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"ተከናውኗል"</string>
+    <string name="settings_title" msgid="8361325634803696047">"የቁልፍ ሰሌዳ አማራጮች"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"የእንቅስቃሴ ትብነት"</string>
+    <string name="btn_on" msgid="5962775761492765922">"በርቷል"</string>
+    <string name="btn_off" msgid="2029716012096104384">"ጠፍቷል"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"ክፍተት"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"ሰርዝ"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"ሁነታ ቀይር"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"ግራ"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"ቀኝ"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"የይለፍ ቃል ቁልፎች ሲነገሩ ለመስማት የጆሮ ማዳመጫ ይሰኩ።"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"ነጥብ።"</string>
+</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
new file mode 100644
index 0000000..e7aaf08
--- /dev/null
+++ b/res/values-ar/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"لوحة مفاتيح <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"لوحة مفاتيح <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"انتقال"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"التالي"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"إرسال"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"بحث"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"تم"</string>
+    <string name="settings_title" msgid="8361325634803696047">"خيارات لوحة المفاتيح"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"حساسية الحركة"</string>
+    <string name="btn_on" msgid="5962775761492765922">"تشغيل"</string>
+    <string name="btn_off" msgid="2029716012096104384">"إيقاف"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"مسافة"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"حذف"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"تغيير الوضع"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"لليسار"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"لليمين"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"يمكنك توصيل سماعة رأس لسماع مفاتيح كلمة المرور عندما يتم نطقها."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"نقطة"</string>
+</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
new file mode 100644
index 0000000..ddb05a3
--- /dev/null
+++ b/res/values-bg/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Клавиатура за <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Клавиатура за <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Старт"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Напред"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Изпращане"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Търсене"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Готово"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Опции за клавиатурата"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Чувствителност на движението"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Включено"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Изключено"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Space"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Изтриване"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Промяна на режима"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Left"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Right"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Включете слушалки, за да чуете изговарянето на клавишите за паролата."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Точка."</string>
+</resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
new file mode 100644
index 0000000..75029d1
--- /dev/null
+++ b/res/values-bn-rBD/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> কীবোর্ড"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> কীবোর্ড"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"যান"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"পরবর্তী"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"পাঠান"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"অনুসন্ধান করুন"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"সম্পন্ন হয়েছে"</string>
+    <string name="settings_title" msgid="8361325634803696047">"কীবোর্ড বিকল্পগুলি"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"নড়াচড়ার সংবেদনশীলতা"</string>
+    <string name="btn_on" msgid="5962775761492765922">"চালু করুন"</string>
+    <string name="btn_off" msgid="2029716012096104384">"বন্ধ করুন"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"ব্যবধান"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Delete বোতাম"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Mode change বোতাম"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift বোতাম"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"বাম"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"ডান"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"উচ্চারিত পাসওয়ার্ডের কীগুলি শোনার জন্য একটি হেডসেট সংযুক্ত করুন৷"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Dot."</string>
+</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
new file mode 100644
index 0000000..d6b2672
--- /dev/null
+++ b/res/values-ca/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Teclat <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Teclat <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Vés-hi"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Següent"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Envia"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Cerca"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Fet"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opcions del teclat"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensibilitat del moviment"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Activa"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Desactiva"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Espai"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Suprimeix"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Canvi de mode"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Maj"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Bloq Maj"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Esquerra"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Dreta"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Connecta un auricular per escoltar les claus de la contrasenya en veu alta."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punt."</string>
+</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
new file mode 100644
index 0000000..57a7930
--- /dev/null
+++ b/res/values-cs/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Klávesnice <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Klávesnice <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Jít"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Další"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Odeslat"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Hledat"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Hotovo"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Možnosti klávesnice"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Citlivost pohybu"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Zapnout"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Vypnout"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Mezerník"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Smazat"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Změna režimu"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Vlevo"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Vpravo"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Chcete-li slyšet zadávání hesla, připojte sluchátka."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Tečka."</string>
+</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
new file mode 100644
index 0000000..68ab939
--- /dev/null
+++ b/res/values-da/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g>-tastatur"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g>-tastatur"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Start"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Næste"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Send"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Søg"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Færdig"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Valgmuligheder for tastatur"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Bevægelsesfølsomhed"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Til"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Fra"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Mellemrum"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Slet"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Ændring af tilstand"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Venstre"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Højre"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Tilslut et headset for at høre tasterne blive læst højt ved angivelse af adgangskode."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punktum."</string>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
new file mode 100644
index 0000000..939fe46
--- /dev/null
+++ b/res/values-de/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g>-Tastatur"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g>-Tastatur"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Los"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Weiter"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Senden"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Suchen"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Fertig"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Tastaturoptionen"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Bewegungsempfindlichkeit"</string>
+    <string name="btn_on" msgid="5962775761492765922">"An"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Aus"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Leertaste"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Löschen"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Modusänderung"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Feststelltaste"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Nach links"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Nach rechts"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Schließen Sie ein Headset an, um das Passwort gesprochen zu hören."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punkt."</string>
+</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
new file mode 100644
index 0000000..704cbb9
--- /dev/null
+++ b/res/values-el/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Πληκτρολόγιο <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Πληκτρολόγιο <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Μετάβαση"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Επόμενο"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Αποστολή"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Αναζήτηση"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Τέλος"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Επιλογές πληκτρολογίου"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Ευαισθησία κίνησης"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Ενεργοποίηση"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Απενεργοποίηση"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Πλήκτρο διαστήματος"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Διαγραφή"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Αλλαγή τρόπου"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Αριστερά"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Δεξιά"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Συνδέστε ακουστικά για να ακούσετε τα πλήκτρα του κωδικού πρόσβασης να εκφωνούνται."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Τελεία."</string>
+</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..f5070e3
--- /dev/null
+++ b/res/values-en-rAU/strings.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> Keyboard"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> Keyboard"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Go"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Next"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Send"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Search"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Finished"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Keyboard Options"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Movement sensitivity"</string>
+    <string name="btn_on" msgid="5962775761492765922">"On"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Off"</string>
+    <!-- no translation found for keyboardview_keycode_space (5107808792477329036) -->
+    <skip />
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Delete"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Mode change"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <!-- no translation found for keyboardview_keycode_caps (3870171746305993229) -->
+    <skip />
+    <!-- no translation found for keyboardview_keycode_left (5982531325934405109) -->
+    <skip />
+    <!-- no translation found for keyboardview_keycode_right (7152000779741202144) -->
+    <skip />
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Plug in a headset to hear password keys spoken."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Dot"</string>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..ef28990
--- /dev/null
+++ b/res/values-en-rGB/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> keyboard"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> keyboard"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Go"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Next"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Send"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Search"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Finished"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Keyboard Options"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Movement sensitivity"</string>
+    <string name="btn_on" msgid="5962775761492765922">"On"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Off"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Space"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Delete"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Mode change"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Left"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Right"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Plug in a headset to hear password keys spoken."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Dot"</string>
+</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..ef28990
--- /dev/null
+++ b/res/values-en-rIN/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> keyboard"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> keyboard"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Go"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Next"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Send"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Search"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Finished"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Keyboard Options"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Movement sensitivity"</string>
+    <string name="btn_on" msgid="5962775761492765922">"On"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Off"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Space"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Delete"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Mode change"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Left"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Right"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Plug in a headset to hear password keys spoken."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Dot"</string>
+</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..7149986
--- /dev/null
+++ b/res/values-es-rUS/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Teclado de <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Teclado de <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Ir"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Siguiente"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Enviar"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Buscar"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Listo"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opciones del teclado"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensibilidad de movimiento"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Activar"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Desactivar"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Barra espaciadora"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Eliminar"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Cambio de modo"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Mayúscula"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Bloqueo de mayúscula"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Izquierda"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Derecha"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Conecta los auriculares para escuchar las contraseñas."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punto"</string>
+</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
new file mode 100644
index 0000000..81737ba
--- /dev/null
+++ b/res/values-es/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Teclado de <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Teclado de <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Ir"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Siguiente"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Enviar"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Buscar"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Listo"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opciones del teclado"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensibilidad al movimiento"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Sí"</string>
+    <string name="btn_off" msgid="2029716012096104384">"No"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Espacio"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Eliminar"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Cambio de modo"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Mayús"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Bloq Mayús"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Flecha hacia la izquierda"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Flecha hacia la derecha"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Conecta un auricular para escuchar las contraseñas."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punto"</string>
+</resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
new file mode 100644
index 0000000..3eb2e3d
--- /dev/null
+++ b/res/values-et-rEE/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Rakend. <xliff:g id="APP_NAME">Leanback</xliff:g> klaviatuur"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Rakend. <xliff:g id="APP_NAME">Leanback</xliff:g> klaviatuur"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Mine"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Järgmine"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Saada"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Otsi"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Valmis"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Klaviatuuri valikud"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Liikumistundlikkus"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Sees"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Väljas"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Tühik"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Kustutamine"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Režiimi muutmine"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Tõstuklahv"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Suurklahvilukk"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Vasak"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Parem"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Paroolide kuulamiseks ühendage peakomplekt."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punkt."</string>
+</resources>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
new file mode 100644
index 0000000..f87cc13
--- /dev/null
+++ b/res/values-eu-rES/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> teklatua"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> teklatua"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Joan"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Hurrengoa"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Bidali"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Bilatu"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Eginda"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Teklatu-aukerak"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Mugimendu-sentsibilitatea"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Aktibatuta"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Desaktibatuta"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Zuriunea"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Ezabatu"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Modu-aldaketa"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Maius"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Blok Maius"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Ezkerrera"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Eskuinera"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Konektatu entzungailua pasahitzaren teklak ozen entzuteko."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Puntu."</string>
+</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
new file mode 100644
index 0000000..3d5a349
--- /dev/null
+++ b/res/values-fa/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"صفحه‌کلید <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"صفحه‌کلید <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"برو"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"بعدی"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"ارسال"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"جستجو"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"انجام شد"</string>
+    <string name="settings_title" msgid="8361325634803696047">"گزینه‌های صفحه‌کلید"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"حساسیت حرکت"</string>
+    <string name="btn_on" msgid="5962775761492765922">"فعال"</string>
+    <string name="btn_off" msgid="2029716012096104384">"خاموش"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"فاصله"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"حذف"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"تغییر حالت"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"چپ"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"راست"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"هدست را برای شنیدن کلیدهای گذرواژه که خوانده می‌شوند، وصل کنید."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"نقطه."</string>
+</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
new file mode 100644
index 0000000..53b2c28
--- /dev/null
+++ b/res/values-fi/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Näppäimistö – <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Näppäimistö – <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Siirry"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Seuraava"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Lähetä"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Haku"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Valmis"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Näppäimistöasetukset"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Liikeherkkyys"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Ota käyttöön"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Poista käytöstä"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Välilyönti"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Poista"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Tilan muutos"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Vasemmalle"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Oikealle"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Liitä kuulokkeet kuullaksesi, mitä näppäimiä painat kirjoittaessasi salasanaa."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Piste."</string>
+</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..823a4af
--- /dev/null
+++ b/res/values-fr-rCA/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Clavier <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Clavier <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Aller"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Suivant"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Envoyer"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Rechercher"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Terminé"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Options de clavier"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensibilité du mouvement"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Activer"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Désactiver"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Espace"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Supprimer"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Changement de mode"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Majuscule"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Verrouillage des majuscules"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Gauche"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Droite"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Branchez des écouteurs pour entendre l\'énoncé des touches lors de l\'entrée du mot de passe."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Point."</string>
+</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
new file mode 100644
index 0000000..9d32b37
--- /dev/null
+++ b/res/values-fr/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Clavier <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Clavier <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"OK"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Suivant"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Envoyer"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Rechercher"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"OK"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Options de clavier"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensibilité du déplacement"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Activer"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Désactiver"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Espace"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Supprimer"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Changement de mode"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Maj"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Verrouillage des majuscules"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Gauche"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Droite"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Branchez un casque pour entendre l\'énoncé des touches lors de la saisie du mot de passe."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Point."</string>
+</resources>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
new file mode 100644
index 0000000..3fe85bf
--- /dev/null
+++ b/res/values-gl-rES/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Teclado de <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Teclado de <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Ir"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Seguinte"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Enviar"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Buscar"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Feito"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opcións do teclado"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensibilidade do movemento"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Activar"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Desactivar"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Espazo"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Suprimir"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Cambio de modo"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Maiús"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Bloq maiús"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Esquerda"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Dereita"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Conecta uns auriculares para escoitar as teclas do contrasinal pronunciadas."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punto"</string>
+</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
new file mode 100644
index 0000000..a6e662a
--- /dev/null
+++ b/res/values-hi/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> कीबोर्ड"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> कीबोर्ड"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"जाएं"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"अगला"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"भेजें"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"खोजें"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"पूर्ण"</string>
+    <string name="settings_title" msgid="8361325634803696047">"कीबोर्ड विकल्प"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"गतिविधि की संवेदनशीलता"</string>
+    <string name="btn_on" msgid="5962775761492765922">"चालू"</string>
+    <string name="btn_off" msgid="2029716012096104384">"बंद"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Space"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Delete"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Mode change"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Left"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Right"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"बोली गईं पासवर्ड कुंजियां सुनने के लिए हैडसेट प्‍लग इन करें."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Dot."</string>
+</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
new file mode 100644
index 0000000..bb3c7a6
--- /dev/null
+++ b/res/values-hr/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> tipkovnica"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> tipkovnica"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Idi"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Dalje"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Pošalji"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Pretraži"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Gotovo"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opcije tipkovnice"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Osjetljivost pokreta"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Uključi"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Isključi"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Razmaknica"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Izbriši"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Promjena načina"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Velika slova"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Lijevo"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Desno"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Priključite slušalice kako biste čuli izgovaranje tipki zaporke."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Točka."</string>
+</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
new file mode 100644
index 0000000..9bd6e0e
--- /dev/null
+++ b/res/values-hu/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g>-billentyűzet"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g>-billentyűzet"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Mehet"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Tovább"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Küldés"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Keresés"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Kész"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Billentyűzetbeállítások"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Mozgásérzékenység"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Bekapcsolva"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Kikapcsolva"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Szóköz"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Törlés"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Mód váltása"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Bal"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Jobb"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Csatlakoztasson egy fülhallgatót, ha hallani szeretné a jelszó betűit felolvasva."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Pont."</string>
+</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
new file mode 100644
index 0000000..5506ca5
--- /dev/null
+++ b/res/values-hy-rAM/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> ստեղնաշար"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> ստեղնաշար"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Առաջ"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Հաջորդը"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Ուղարկել"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Որոնում"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Պատրաստ է"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Ստեղնաշարի ընտրանքներ"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Շարժման զգայունությունը"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Միացնել"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Անջատել"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Բացատ"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Ջնջել"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Ռեժիմի փոփոխում"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Ձախ"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Աջ"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Միացրեք ականջակալները` արտասանվող գաղտնաբառը լսելու համար:"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Կետ:"</string>
+</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
new file mode 100644
index 0000000..2c97330
--- /dev/null
+++ b/res/values-in/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Keyboard <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Keyboard <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Buka"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Berikutnya"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Kirim"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Penelusuran"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Selesai"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opsi Keyboard"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensitivitas gerakan"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Aktif"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Nonaktif"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Spasi"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Delete"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Pengubahan mode"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Kiri"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Kanan"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Pasang headset untuk mendengar tombol sandi yang diucapkan."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Titik."</string>
+</resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
new file mode 100644
index 0000000..6b5e0fb
--- /dev/null
+++ b/res/values-is-rIS/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> lyklaborð"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> lyklaborð"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Áfram"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Næsta"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Senda"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Leita"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Lokið"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Valkostir lyklaborðs"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Hreyfinæmi"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Kveikt"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Slökkt"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Bil"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Eyða"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Breyta stillingu"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Hástafalás"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Vinstri"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Hægri"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Tengdu heyrnartól til að heyra stafi aðgangsorðsins lesna upphátt."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punktur."</string>
+</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
new file mode 100644
index 0000000..671db4c
--- /dev/null
+++ b/res/values-it/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Tastiera <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Tastiera <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Vai"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Avanti"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Invia"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Cerca"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Fine"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opzioni tastiera"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensibilità movimento"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Attiva"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Disattiva"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Spazio"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Elimina"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Cambio modalità"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Maiusc"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Bloc Maiusc"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Sinistra"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Destra"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Collega gli auricolari per ascoltare la pronuncia dei tasti premuti per la password."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punto."</string>
+</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
new file mode 100644
index 0000000..f426214
--- /dev/null
+++ b/res/values-iw/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"מקלדת <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"מקלדת <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"המשך"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"הבא"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"שלח"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"חפש"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"בוצע"</string>
+    <string name="settings_title" msgid="8361325634803696047">"אפשרויות מקלדת"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"רגישות תנועה"</string>
+    <string name="btn_on" msgid="5962775761492765922">"פועל"</string>
+    <string name="btn_off" msgid="2029716012096104384">"כבוי"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"רווח"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"מחיקה"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"שינוי מצב"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"נעילת מקש CAPS"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"שמאלה"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"ימינה"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"חבר אוזניות כדי לשמוע הקראה של מפתחות סיסמה."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"נקודה."</string>
+</resources>
diff --git a/res/values-ja/bools.xml b/res/values-ja/bools.xml
new file mode 100644
index 0000000..0d082bb
--- /dev/null
+++ b/res/values-ja/bools.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, 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>
+    <!-- Whether this input method should be used as the default for a locale. Override it
+         for supported languages. -->
+    <bool name="im_is_default">false</bool>
+</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
new file mode 100644
index 0000000..412337b
--- /dev/null
+++ b/res/values-ja/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g>キーボード"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g>キーボード"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"検索"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"次へ"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"送信"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"検索"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"完了"</string>
+    <string name="settings_title" msgid="8361325634803696047">"キーボードオプション"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"動作感度"</string>
+    <string name="btn_on" msgid="5962775761492765922">"ON"</string>
+    <string name="btn_off" msgid="2029716012096104384">"OFF"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Space"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"削除"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"モードを変更"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"CapsLock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"←"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"→"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"パスワードのキーが音声出力されるのでヘッドセットを接続してください。"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"ドット。"</string>
+</resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
new file mode 100644
index 0000000..23b4c75
--- /dev/null
+++ b/res/values-ka-rGE/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g>-ის კლავიატურა"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g>-ის კლავიატურა"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"გადასვლა"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"შემდეგი"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"გაგზავნა"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"ძიება"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"დასრულება"</string>
+    <string name="settings_title" msgid="8361325634803696047">"კლავიატურის პარამეტრები"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"მოძრაობის მგრძობიარობა"</string>
+    <string name="btn_on" msgid="5962775761492765922">"ჩართული"</string>
+    <string name="btn_off" msgid="2029716012096104384">"გამორთული"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"შორისი"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"წაშლა"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"რეჟიმის შეცვლა"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"მარცხენა"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"მარჯვენა"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"შეაერთეთ ყურსაცვამი, რათა მოისმინოთ აკრეფილი პაროლის კლავიშების სახელები."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"წერტილი."</string>
+</resources>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
new file mode 100644
index 0000000..5aea1b8
--- /dev/null
+++ b/res/values-kk-rKZ/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> пернетақтасы"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> пернетақтасы"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Өту"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Келесі"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Жіберу"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Іздеу"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Дайын"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Пернетақта опциялары"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Қозғалысқа сезімталдық"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Қосулы"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Өшірулі"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Бос орын"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Жою"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Режимді өзгерту"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Солға"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Оңға"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Құпия сөз пернелерін есту үшін құлақаспап жинағын қосыңыз."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Нүкте."</string>
+</resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
new file mode 100644
index 0000000..253bda2
--- /dev/null
+++ b/res/values-km-rKH/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"ក្ដារចុច <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"ក្ដារចុច <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"ទៅ"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"បន្ទាប់"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"ផ្ញើ"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"ស្វែងរក"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"ធ្វើ​រួច"</string>
+    <string name="settings_title" msgid="8361325634803696047">"ជម្រើស​ក្ដារ​ចុច"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"ភាព​ប្រែប្រួល​​ដោយ​ចលនា"</string>
+    <string name="btn_on" msgid="5962775761492765922">"បើក"</string>
+    <string name="btn_off" msgid="2029716012096104384">"បិទ"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"ដកឃ្លា"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"លុប"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"ផ្លាស់ប្ដូរ​របៀប"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"ឆ្វេង"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"ស្ដាំ"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"ដោត​កាស​ដើម្បី​ស្ដាប់​ពាក្យ​សម្ងាត់​បាន​និយាយ។"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"ចុច."</string>
+</resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
new file mode 100644
index 0000000..7e1818d
--- /dev/null
+++ b/res/values-kn-rIN/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> ಕೀಬೋರ್ಡ್"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> ಕೀಬೋರ್ಡ್"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"ಹೋಗು"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"ಮುಂದೆ"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"ಕಳುಹಿಸು"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"ಹುಡುಕಾಟ"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"ಮುಗಿದಿದೆ"</string>
+    <string name="settings_title" msgid="8361325634803696047">"ಕೀಬೋರ್ಡ್ ಆಯ್ಕೆಗಳು"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"ಚಲನೆ ಸೂಕ್ಷ್ಮತೆ"</string>
+    <string name="btn_on" msgid="5962775761492765922">"ಆನ್"</string>
+    <string name="btn_off" msgid="2029716012096104384">"ಆಫ್"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"ಸ್ಪೇಸ್"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"ಅಳಿಸು"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"ಮೋಡ್ ಬದಲಾವಣೆ"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"ತೊರೆಯಲಾಗಿದೆ"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"ಸರಿಯಾಗಿದೆ"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"ಪಾಸ್‌ವರ್ಡ್ ಕೀಗಳನ್ನು ಆಲಿಸಲು ಹೆಡ್‌ಸೆಟ್ ಪ್ಲಗ್ ಇನ್ ಮಾಡಿ."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"ಡಾಟ್."</string>
+</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
new file mode 100644
index 0000000..66eab17
--- /dev/null
+++ b/res/values-ko/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> 키보드"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> 키보드"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"이동"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"다음"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"보내기"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"검색"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"완료"</string>
+    <string name="settings_title" msgid="8361325634803696047">"키보드 옵션"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"움직임 민감도"</string>
+    <string name="btn_on" msgid="5962775761492765922">"사용"</string>
+    <string name="btn_off" msgid="2029716012096104384">"사용 안함"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"스페이스바"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"삭제"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"모드 변경"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"왼쪽"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"오른쪽"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"비밀번호 키를 음성으로 들으려면 헤드셋을 연결하세요."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"점"</string>
+</resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
new file mode 100644
index 0000000..5642834
--- /dev/null
+++ b/res/values-ky-rKG/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> Баскычтоп"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> Баскычтоп"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Өтүү"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Кийинки"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Жөнөтүү"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Издөө"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Бүттү"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Баскычтоп параметрлери"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Кыймылды сезгичтик"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Күйүк"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Өчүк"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Боштук"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Жок кылуу"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Режимди өзгөртүү"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Солго"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Оңго"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Айтылган сырсөз ачкычтарын угуу үчүн, гарнитураны туташтырыңыз."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Чекит."</string>
+</resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
new file mode 100644
index 0000000..4247506
--- /dev/null
+++ b/res/values-lo-rLA/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"ແປ້ນພິມ <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"ແປ້ນພິມ <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"ໄປ"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"ຕໍ່ໄປ"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"ສົ່ງ"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"ຊອກຫາ"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"ແລ້ວໆ"</string>
+    <string name="settings_title" msgid="8361325634803696047">"ໂຕເລືອກ​ແປ້ນພິມ"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"ຄວາມ​ລະ​ອຽດ​ການ​ເຄື່ອນ​ໄຫວ"</string>
+    <string name="btn_on" msgid="5962775761492765922">"ເປີດ"</string>
+    <string name="btn_off" msgid="2029716012096104384">"ປິດ"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"ຍະຫວ່າງ"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"ລຶບ"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"ປ່ຽນຮູບແບບ"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"​ຊ້າຍ"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"​ຂວາ"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"ສຽບ​ຫູ​ຟັງ​ເພື່ອ​ຟັງ​ລະ​ຫັດ​ຜ່ານ."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"ຈໍ້າເມັດ."</string>
+</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
new file mode 100644
index 0000000..29b43d2
--- /dev/null
+++ b/res/values-lt/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"„<xliff:g id="APP_NAME">Leanback</xliff:g>“ klaviatūra"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"„<xliff:g id="APP_NAME">Leanback</xliff:g>“ klaviatūra"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Eiti"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Kitas"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Siųsti"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Ieškoti"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Atlikta"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Klaviatūros parinktys"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Judesio jautrumas"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Įjungti"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Išjungti"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Tarpo klavišas"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Delete"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Mode change"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Didžiųjų raidžių klavišas"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Kairėn"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Dešinėn"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Prijunkite ausines, kad galėtumėte girdėti sakomus slaptažodžio klavišus."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Taškas."</string>
+</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
new file mode 100644
index 0000000..4921b72
--- /dev/null
+++ b/res/values-lv/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> tastatūra"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> tastatūra"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Sākt"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Tālāk"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Sūtīt"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Meklēt"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Gatavs"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Tastatūras iespējas"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Kustības sensitivitāte"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Ieslēgts"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Izslēgts"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Atstarpēšanas taustiņš"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Dzēšanas taustiņš"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Režīma maiņas taustiņš"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Pārslēgšanas taustiņš"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Burtslēga taustiņš"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Pa kreisi"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Pa labi"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Pievienojiet austiņas, lai dzirdētu paroles taustiņu nosaukumus."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punkta taustiņš"</string>
+</resources>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
new file mode 100644
index 0000000..d3bc81f
--- /dev/null
+++ b/res/values-mk-rMK/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> тастатура"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> тастатура"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Оди"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Следно"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Прати"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Пребарување"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Готово"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Опции за тастатура"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Чувствителност на движење"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Вклучи"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Исклучи"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Празно место"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Бришење"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Копче „Промени режим“"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Копче „Shift“"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Лево"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Десно"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Приклучи слушалки да ги слушнеш изговорените лозинки."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Точка."</string>
+</resources>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
new file mode 100644
index 0000000..72b7668
--- /dev/null
+++ b/res/values-ml-rIN/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> കീബോർഡ്"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> കീബോർഡ്"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"പോകുക"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"അടുത്തത്"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"അയയ്‌ക്കുക"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"തിരയുക"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"പൂർത്തിയാക്കി"</string>
+    <string name="settings_title" msgid="8361325634803696047">"കീബോർഡ് ഓപ്ഷനുകൾ"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"ചലന സംവേദനക്ഷമത"</string>
+    <string name="btn_on" msgid="5962775761492765922">"ഓണാക്കുക"</string>
+    <string name="btn_off" msgid="2029716012096104384">"ഓഫാക്കുക"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"സ്പെയ്സ്"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"ഇല്ലാതാക്കുക"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"മോഡ് മാറ്റം"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"ക്യാപ്സ് ലോക്ക്"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"ഇടതുഭാഗത്തേക്ക്"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"വലതുഭാഗത്തേക്ക്"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"പറയുന്ന പാസ്‌വേഡ് കീകൾ കേൾക്കുന്നതിന് ഒരു ഹെഡ്സെറ്റ് പ്ലഗ്ഗുചെയ്യുക."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"ഡോട്ട്."</string>
+</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
new file mode 100644
index 0000000..1117c70
--- /dev/null
+++ b/res/values-mn-rMN/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> Гар"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> Гар"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Цааш"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Дараах"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Илгээх"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Хайх"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Дууссан"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Гарын сонголтууд"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Хөдөлгөөн мэдрэлт"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Идэвхтэй"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Идэвхгүй"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Хоосон зай"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Устгах"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Горим өөрчлөх"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Шифт"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Зүүн"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Баруун"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Нууц үгний дуудлагыг сонсох бол чихэвчийг залгана уу."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Цэг."</string>
+</resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
new file mode 100644
index 0000000..26cb220
--- /dev/null
+++ b/res/values-mr-rIN/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> कीबोर्ड"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> कीबोर्ड"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"जा"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"पुढील"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"पाठवा"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"शोधा"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"पूर्ण झाले"</string>
+    <string name="settings_title" msgid="8361325634803696047">"कीबोर्ड पर्याय"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"हालचाल संवेदनशीलता"</string>
+    <string name="btn_on" msgid="5962775761492765922">"चालू"</string>
+    <string name="btn_off" msgid="2029716012096104384">"बंद"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Space"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"हटवा"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"मोड बदल"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"डावे"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"उजवे"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"बोलणाऱ्या संकेतशब्द की ऐकण्यासाठी हेडसेट लावा."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"बिंदू."</string>
+</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
new file mode 100644
index 0000000..bcfc566
--- /dev/null
+++ b/res/values-ms-rMY/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Papan Kekunci <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Papan Kekunci <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Pergi"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Seterusnya"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Hantar"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Carian"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Selesai"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Pilihan Papan Kekunci"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Kepekaan pergerakan"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Hidup"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Mati"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Ruang"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Padam"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Pertukaran mod"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Kiri"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Kanan"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Pasangkan set kepala untuk mendengar kekunci kata laluan disebutkan."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Titik."</string>
+</resources>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
new file mode 100644
index 0000000..9774e40
--- /dev/null
+++ b/res/values-my-rMM/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> ကီးဘုတ်"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> ကီးဘုတ်"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"သွားပါ"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"ရှေ့သို့"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"ပို့ရန်"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"ရှာဖွေရန်"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"လုပ်ပြီး"</string>
+    <string name="settings_title" msgid="8361325634803696047">"ကီးဘုတ် ရွေးစရာများ"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"လှုပ်ရှားမှု အာရုံခံနိုင်စွမ်း"</string>
+    <string name="btn_on" msgid="5962775761492765922">"ဖွင့်ရန်"</string>
+    <string name="btn_off" msgid="2029716012096104384">"ပိတ်ထား"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"စပေ့စ်ကီး"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"ဖျက်ရန်"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"မုဒ် ခလုတ်"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"စာလုံးကြီး သော့ပိတ်"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"ဘယ်"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"ညာ"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"စကားဝှက်ကို နှုတ်ထွက် ပြောဆိုမှုကို ကြားနိုင်ရန် ဟက်ဆက်ကို ပလပ်ထိုး နားထောင်ပါ။"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Dot."</string>
+</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
new file mode 100644
index 0000000..1c21187
--- /dev/null
+++ b/res/values-nb/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Tastatur for <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Tastatur for <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Utfør"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Neste"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Send"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Søk"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Ferdig"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Tastaturalternativer"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Bevegelsesfølsomhet"</string>
+    <string name="btn_on" msgid="5962775761492765922">"På"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Av"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Mellomrom"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Slett"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Modusendring"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Skift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Venstre"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Høyre"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Koble til hodetelefoner for å høre opplesing av bokstavene i passordet."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punktum."</string>
+</resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
new file mode 100644
index 0000000..81b6ff7
--- /dev/null
+++ b/res/values-ne-rNP/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> कीबोर्ड"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> कीबोर्ड"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"जानु"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"अर्को"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"पठाउनुहोस्"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"खोजी गर्नुहोस्"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"भयो"</string>
+    <string name="settings_title" msgid="8361325634803696047">"कीबोर्ड विकल्पहरू"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"गतिविधि संवेदनशीलता"</string>
+    <string name="btn_on" msgid="5962775761492765922">"खुल्ला गर्नुहोस्"</string>
+    <string name="btn_off" msgid="2029716012096104384">"बन्द गर्नुहोस्"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"स्पेस"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"मेटाउनुहोस्"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"मोड परिवर्तन गर्नुहोस्"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"सिफ्ट"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"क्याप्स लक"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"बायाँ"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"दायाँ"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"बोलिएको पासवर्ड कुञ्जीहरू सुन्नको लागि हेडसेट प्लग इन गर्नुहोस्।"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Dot."</string>
+</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
new file mode 100644
index 0000000..7d284f0
--- /dev/null
+++ b/res/values-nl/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Toetsenbord voor <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Toetsenbord voor <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Gaan"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Volgende"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Verzenden"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Zoeken"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Gereed"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Toetsenbordopties"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Gevoeligheid beweging"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Aan"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Uit"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Spatiebalk"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Verwijderen"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Modus wijzigen"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Links"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Rechts"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Sluit een headset aan om wachtwoordtoetsen te laten voorlezen."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Stip."</string>
+</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
new file mode 100644
index 0000000..5d2b3ba
--- /dev/null
+++ b/res/values-pl/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Klawiatura <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Klawiatura <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"OK"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Dalej"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Wyślij"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Szukaj"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Gotowe"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opcje klawiatury"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Czułość ruchu"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Wł."</string>
+    <string name="btn_off" msgid="2029716012096104384">"Wył."</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Spacja"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Delete"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Zmiana trybu"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"W lewo"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"W prawo"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Podłącz zestaw słuchawkowy, by wysłuchać znaków hasła wypowiadanych na głos."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Kropka"</string>
+</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..4b12c7a
--- /dev/null
+++ b/res/values-pt-rPT/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Teclado <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Teclado <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"OK"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Seguinte"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Enviar"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Pesquisar"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Concluído"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opções do teclado"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensibilidade do movimento"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Ativado"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Desativado"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Espaço"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Eliminar"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Alteração do modo"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Esquerdo"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Direito"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Ligue os auscultadores com microfone integrado para ouvir as teclas da palavra-passe."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Ponto."</string>
+</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
new file mode 100644
index 0000000..0b89d25
--- /dev/null
+++ b/res/values-pt/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Teclado do <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Teclado do <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Ir"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Próximo"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Enviar"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Pesquisar"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Concluído"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opções de teclado"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensibilidade de movimento"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Ativar"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Desativar"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Espaço"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Excluir"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Alteração do modo"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Esquerdo"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Direito"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Conecte um fone de ouvido para ouvir as teclas da senha."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Ponto."</string>
+</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
new file mode 100644
index 0000000..d71f6a2
--- /dev/null
+++ b/res/values-ro/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Tastatură <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Tastatură <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Accesați"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Înainte"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Trimiteți"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Căutați"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Terminat"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Opțiuni pentru tastatură"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Sensibilitatea la mișcare"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Activați"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Dezactivați"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Spațiu"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Ștergeți"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Schimbare mod"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Scriere cu majuscule"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Stânga"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Dreapta"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Conectați un set căști-microfon pentru a auzi tastele apăsate când introduceți parola."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punct."</string>
+</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
new file mode 100644
index 0000000..1663b1d
--- /dev/null
+++ b/res/values-ru/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Клавиатура <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Клавиатура <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"ОК"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Далее"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Отправить"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Поиск"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Готово"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Настройки клавиатуры"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Обработка движений"</string>
+    <string name="btn_on" msgid="5962775761492765922">"ВКЛ"</string>
+    <string name="btn_off" msgid="2029716012096104384">"ВЫКЛ"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Пробел."</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Удалить"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Смена режима"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Стрелка влево"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Стрелка вправо"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Подключите гарнитуру, чтобы услышать пароль."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Точка"</string>
+</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
new file mode 100644
index 0000000..cea8300
--- /dev/null
+++ b/res/values-si-rLK/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> යතුරු පුවරුව"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> යතුරු පුවරුව"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"යන්න"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"මීළඟ"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"යවන්න"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"සොයන්න"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"අවසන්"</string>
+    <string name="settings_title" msgid="8361325634803696047">"යතුරුපුවරු විකල්ප"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"සංචලන සංවේදීතාවය"</string>
+    <string name="btn_on" msgid="5962775761492765922">"සක්‍රිය කරන්න"</string>
+    <string name="btn_off" msgid="2029716012096104384">"අක්‍රිය කරන්න"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Space"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"මකන්න"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"ආකාරය වෙනස් කරන්න"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"ෂිෆ්ට්"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"කැප්ස් ලොක්"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"වම"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"දකුණ"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"මුරපද යතුරු කියවනු ඇසීමට හෙඩ්සෙටයක් සම්බන්ධ කරන්න."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"නැවතුම."</string>
+</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
new file mode 100644
index 0000000..7b1e7b7
--- /dev/null
+++ b/res/values-sk/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Klávesnica <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Klávesnica <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Spustiť"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Ďalej"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Odoslať"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Hľadať"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Hotovo"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Možnosti klávesnice"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Citlivosť pohybu"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Zapnúť"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Vypnúť"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Medzerník"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Odstrániť"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Zmena režimu"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Doľava"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Doprava"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Ak si chcete vypočuť vyslovené klávesy hesla, pripojte náhlavnú súpravu."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Bodka."</string>
+</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
new file mode 100644
index 0000000..5c1b4d5
--- /dev/null
+++ b/res/values-sl/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Tipkovnica <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Tipkovnica <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Pojdi"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Naprej"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Pošlji"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Iskanje"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Končano"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Možnosti tipkovnice"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Občutljivost premikanja"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Vklop"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Izklop"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Preslednica"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Izbriši"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Sprememba načina"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Levo"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Desno"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Priključite slušalke, da boste slišali izgovorjene tipke gesla."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Pika."</string>
+</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
new file mode 100644
index 0000000..4e0fb34
--- /dev/null
+++ b/res/values-sr/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> тастатура"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> тастатура"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Иди"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Даље"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Пошаљи"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Претрага"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Готово"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Опције тастатуре"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Осетљивост покрета"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Укључи"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Искључи"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Размак"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Избришите"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Промена режима"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Лево"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Десно"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Прикључите слушалице да бисте чули изговорене тастере за лозинку."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Тачка."</string>
+</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
new file mode 100644
index 0000000..84b8c74
--- /dev/null
+++ b/res/values-sv/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Tangentbord för <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Tangentbord för <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"OK"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Nästa"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Skicka"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Sök"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Klar"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Tangentbordsalternativ"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Rörelsekänslighet"</string>
+    <string name="btn_on" msgid="5962775761492765922">"På"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Av"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Blanksteg"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Ta bort"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Funktionsändring"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Skift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Vänster"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Höger"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Anslut hörlurar om du vill höra lösenordet tecken för tecken."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Punkt."</string>
+</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
new file mode 100644
index 0000000..7fb5a3f
--- /dev/null
+++ b/res/values-sw/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Kibodi ya <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Kibodi ya <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Nenda"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Inayofuata"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Tuma"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Tafuta"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Imekamilisha"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Chaguo za Kibodi"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Kiwango cha hisi cha matembezi"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Washwa"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Zima"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Nafasi"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Futa"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Hali ya mabadiliko"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Kushoto"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Kulia"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Chomeka kifaa cha sauti ili kusikiliza herufi za nenosiri zikitamkwa."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Nukta."</string>
+</resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
new file mode 100644
index 0000000..b3de77e
--- /dev/null
+++ b/res/values-ta-rIN/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> விசைப்பலகை"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> விசைப்பலகை"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"செல்"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"அடுத்து"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"அனுப்பு"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"தேடு"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"முடிந்தது"</string>
+    <string name="settings_title" msgid="8361325634803696047">"விசைப்பலகை விருப்பங்கள்"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"அசைவை உணரும் திறன்"</string>
+    <string name="btn_on" msgid="5962775761492765922">"இயக்கு"</string>
+    <string name="btn_off" msgid="2029716012096104384">"முடக்கு"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"இடைவெளி"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"நீக்கு"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"முறையை மாற்று"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"ஷிஃப்டு"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"கேப்ஸ் லாக்"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"இடது"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"வலது"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"கூறப்படும் கடவுச்சொல் விசைகளைக் கேட்பதற்கு ஹெட்செட்டைச் செருகவும்."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"புள்ளி."</string>
+</resources>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
new file mode 100644
index 0000000..f8d3d45
--- /dev/null
+++ b/res/values-te-rIN/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> కీబోర్డ్"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> కీబోర్డ్"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"వెళ్లు"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"తదుపరి"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"పంపు"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"శోధించు"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"పూర్తయింది"</string>
+    <string name="settings_title" msgid="8361325634803696047">"కీబోర్డ్ ఎంపికలు"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"చలన సున్నితత్వం"</string>
+    <string name="btn_on" msgid="5962775761492765922">"ఆన్ చేయి"</string>
+    <string name="btn_off" msgid="2029716012096104384">"ఆఫ్ చేయి"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Space"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"తొలగించు"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"మోడ్‌ని మార్చు"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"ఎడమ"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"కుడి"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"చదివి వినిపించే పాస్‌వర్డ్ కీలను వినడానికి హెడ్‌సెట్‌ను ప్లగిన్ చేయండి."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"చుక్క."</string>
+</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
new file mode 100644
index 0000000..a1f3d54
--- /dev/null
+++ b/res/values-th/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"แป้นพิมพ์ <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"แป้นพิมพ์ <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"ไป"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"ถัดไป"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"ส่ง"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"ค้นหา"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"เสร็จสิ้น"</string>
+    <string name="settings_title" msgid="8361325634803696047">"ตัวเลือกแป้นพิมพ์"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"ความไวในการเคลื่อนที่"</string>
+    <string name="btn_on" msgid="5962775761492765922">"เปิด"</string>
+    <string name="btn_off" msgid="2029716012096104384">"ปิด"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"วรรค"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"ลบ"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"เปลี่ยนโหมด"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"ซ้าย"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"ขวา"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"เสียบชุดหูฟังเพื่อฟังเสียงรหัสผ่าน"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"เครื่องหมายจุด"</string>
+</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
new file mode 100644
index 0000000..3629649
--- /dev/null
+++ b/res/values-tl/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> Keyboard"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> Keyboard"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Magpatuloy"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Susunod"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Ipadala"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Maghanap"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Tapos na"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Mga Opsyon ng Keyboard"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Pagkasensitibo sa galaw"</string>
+    <string name="btn_on" msgid="5962775761492765922">"I-on"</string>
+    <string name="btn_off" msgid="2029716012096104384">"I-off"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Space"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Tanggalin"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Pagbabago ng Mode"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Kaliwa"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Kanan"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Mag-plug in ng isang headset upang marinig ang mga binabanggit na password key."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Dot."</string>
+</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
new file mode 100644
index 0000000..aedb238
--- /dev/null
+++ b/res/values-tr/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> Klavyesi"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> Klavyesi"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Git"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"İleri"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Gönder"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Ara"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Bitti"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Klavye Seçenekleri"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Hareket duyarlılığı"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Aç"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Kapat"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Boşluk"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Sil"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Mod değiştir"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"ÜstKrktr"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Sol"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Sağ"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Şifre tuşlarının sesli okunmasını dinlemek için mikrofonlu kulaklık takın."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Nokta."</string>
+</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
new file mode 100644
index 0000000..4c7cbae
--- /dev/null
+++ b/res/values-uk/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Клавіатура додатка <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Клавіатура додатка <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Виконати"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Далі"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Надіслати"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Пошук"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Готово"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Параметри клавіатури"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Чутливість руху"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Увімкнути"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Вимкнути"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Пробіл"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Видалити"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Зміна режиму"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Клавіша Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Ліворуч"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Праворуч"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Підключіть гарнітуру, щоб почути символи пароля."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Крапка."</string>
+</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
new file mode 100644
index 0000000..f1ec9cb
--- /dev/null
+++ b/res/values-vi/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Bàn phím <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Bàn phím <xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Tìm"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Tiếp theo"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Gửi"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Tìm kiếm"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Xong"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Tùy chọn bàn phím"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Độ nhạy của chuyển động"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Bật"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Tắt"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Dấu cách"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Xóa"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Thay đổi chế độ"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Bên trái"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Bên phải"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Cắm tai nghe để nghe các phím mật khẩu được đọc."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Dấu chấm."</string>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..60acbd2
--- /dev/null
+++ b/res/values-zh-rCN/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g>键盘"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g>键盘"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"前往"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"下个"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"发送"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"搜索"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"完成"</string>
+    <string name="settings_title" msgid="8361325634803696047">"键盘选项"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"移动灵敏度"</string>
+    <string name="btn_on" msgid="5962775761492765922">"开启"</string>
+    <string name="btn_off" msgid="2029716012096104384">"关闭"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"空格键"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"删除"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"模式更改"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift 键"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"大写锁定"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"向左键"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"向右键"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"需要插入耳机才能听到密码的按键声。"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"点。"</string>
+</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..0082566
--- /dev/null
+++ b/res/values-zh-rHK/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> 鍵盤"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> 鍵盤"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"前往"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"下一頁"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"傳送"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"搜尋"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"完成"</string>
+    <string name="settings_title" msgid="8361325634803696047">"鍵盤選項"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"移動敏感度"</string>
+    <string name="btn_on" msgid="5962775761492765922">"開啟"</string>
+    <string name="btn_off" msgid="2029716012096104384">"關閉"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"空格鍵"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"刪除"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"模式變更"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift 鍵"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock 鍵"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"向左鍵"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"向右鍵"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"插上耳機即可聽到系統讀出密碼鍵。"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"點。"</string>
+</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..c29fe72
--- /dev/null
+++ b/res/values-zh-rTW/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"<xliff:g id="APP_NAME">Leanback</xliff:g> 鍵盤"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"<xliff:g id="APP_NAME">Leanback</xliff:g> 鍵盤"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"執行"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"下一個"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"傳送"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"搜尋"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"完成"</string>
+    <string name="settings_title" msgid="8361325634803696047">"鍵盤選項"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"移動敏感度"</string>
+    <string name="btn_on" msgid="5962775761492765922">"開啟"</string>
+    <string name="btn_off" msgid="2029716012096104384">"關閉"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"空格鍵"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"刪除"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"模式變更"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"Shift 鍵"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"Caps Lock 鍵"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"向左鍵"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"向右鍵"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"連接耳機方能聽到密碼按鍵語音。"</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"點。"</string>
+</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
new file mode 100644
index 0000000..a678b71
--- /dev/null
+++ b/res/values-zu/strings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="ime_name" msgid="5170587665791476108">"Ikhibhodi ye-<xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="ime_service_name" msgid="3865311183421593944">"Ikhibhodi ye-<xliff:g id="APP_NAME">Leanback</xliff:g>"</string>
+    <string name="label_go_key" msgid="7845894543312353655">"Hamba"</string>
+    <string name="label_next_key" msgid="8149787729891612242">"Okulandelayo"</string>
+    <string name="label_send_key" msgid="1803138506603147503">"Thumela"</string>
+    <string name="label_search_key" msgid="8540828292920277213">"Sesha"</string>
+    <string name="label_done_key" msgid="4570417022685876778">"Kwenziwe"</string>
+    <string name="settings_title" msgid="8361325634803696047">"Izinketho zekhibhodi"</string>
+    <string name="title_movement_sensitivity" msgid="4289584473719351587">"Ukuzwela kokuhamba"</string>
+    <string name="btn_on" msgid="5962775761492765922">"Vuliwe"</string>
+    <string name="btn_off" msgid="2029716012096104384">"Valiwe"</string>
+    <string name="keyboardview_keycode_space" msgid="5107808792477329036">"Isikhala"</string>
+    <string name="keyboardview_keycode_delete" msgid="8234736233323594641">"Susa"</string>
+    <string name="keyboardview_keycode_mode_change" msgid="1942413151586211565">"Ukushintsha kwemodi"</string>
+    <string name="keyboardview_keycode_shift" msgid="1088869515399768583">"U-Shift"</string>
+    <string name="keyboardview_keycode_caps" msgid="3870171746305993229">"U-Caps Lock"</string>
+    <string name="keyboardview_keycode_left" msgid="5982531325934405109">"Kwesobunxele"</string>
+    <string name="keyboardview_keycode_right" msgid="7152000779741202144">"Kwesokudla"</string>
+    <string name="keyboard_headset_required_to_hear_password" msgid="2529485509348781553">"Xhuma kokwasekhanda ukuze uzwe kukhulunywa okhiye bephasiwedi."</string>
+    <string name="keyboard_password_character_no_headset" msgid="7230328211341305612">"Icashazi."</string>
+</resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
new file mode 100644
index 0000000..0553689
--- /dev/null
+++ b/res/values/attrs.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, 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>
+
+    <declare-styleable name="LeanbackKeyboardView">
+        <attr name="rowCount" format="integer" />
+        <attr name="columnCount" format="integer" />
+    </declare-styleable>
+
+    <!-- voice recognition indicator -->
+    <attr name="enabledBackgroundColor" format="color|reference" />
+    <attr name="disabledBackgroundColor" format="color|reference" />
+    <attr name="primaryLevels" format="reference" />
+    <attr name="trailLevels" format="reference" />
+    <attr name="minLevelRadius" format="dimension|reference" />
+    <attr name="levelsCenterX" format="dimension|reference" />
+    <attr name="levelsCenterY" format="dimension|reference" />
+    <attr name="headerAlpha" format="dimension" />
+    <attr name="soundTrailLevel" format="reference" />
+    <attr name="soundPrimaryLevel" format="reference" />
+
+    <declare-styleable name="BitmapSoundLevelView">
+        <attr name="enabledBackgroundColor" />
+        <attr name="disabledBackgroundColor" />
+        <attr name="primaryLevels" />
+        <attr name="trailLevels" />
+        <attr name="minLevelRadius" />
+        <attr name="levelsCenterX" />
+        <attr name="levelsCenterY" />
+    </declare-styleable>
+
+</resources>
\ No newline at end of file
diff --git a/res/values/bools.xml b/res/values/bools.xml
new file mode 100644
index 0000000..a882710
--- /dev/null
+++ b/res/values/bools.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, 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>
+    <!-- Whether this input method should be used as the default for a locale. Override it
+         for supported languages. -->
+    <bool name="im_is_default">true</bool>
+</resources>
diff --git a/res/values/color.xml b/res/values/color.xml
new file mode 100644
index 0000000..836bc5d
--- /dev/null
+++ b/res/values/color.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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>
+
+    <!-- voice recognition indicator -->
+    <color name="search_mic_levels_guideline">#FFCCCCCC</color>
+    <color name="search_mic_background">#FFFFFFFF</color>
+
+    <color name="keyboard_background">#FF384248</color>
+    <color name="key_text_default">#FFEEEEEE</color>
+    <color name="ime_selector_focus_color">#66EEEEEE</color>
+    <color name="ime_selector_color">#26EEEEEE</color>
+
+    <color name="candidate_background">#FF263238</color>
+    <color name="candidate_font_color">#FF30C6B4</color>
+
+    <color name="enter_key_font_color">#FF30C6B4</color>
+</resources>
\ No newline at end of file
diff --git a/res/values/config.xml b/res/values/config.xml
new file mode 100644
index 0000000..991f086
--- /dev/null
+++ b/res/values/config.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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>
+    <!-- scale of clicked selector -->
+    <item name="clicked_scale" type="fraction">88%</item>
+    <!-- amount to overestimate selector scaling by -->
+    <item name="focused_scale" type="fraction">120%</item>
+    <!-- alpha value for active keyboards and dictation/voice mode -->
+    <item name="alpha_in" type="fraction">100%</item>
+    <!-- alpha value for inactive keyboards and dictation/voice mode -->
+    <item name="alpha_out" type="fraction">0%</item>
+</resources>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
new file mode 100644
index 0000000..a3f393b
--- /dev/null
+++ b/res/values/dimens.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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>
+
+    <!-- height of keyboard keys -->
+    <dimen name="key_height">28dp</dimen>
+    <!-- width of keyboard keys -->
+    <dimen name="key_width">28dp</dimen>
+    <!-- width of space key (7x regular key + 6*horz_margin) -->
+    <dimen name="space_key_width">268dp</dimen>
+    <!-- horizontal gap of the keyboard -->
+    <dimen name="keyboard_horizontal_gap">12dp</dimen>
+    <!-- vertical gap of the keyboard -->
+    <dimen name="keyboard_vertical_gap">8dp</dimen>
+    <!-- size of the recognizer view -->
+    <dimen name="recognizer_size">96dp</dimen>
+    <!-- size of key selector -->
+    <dimen name="selector_size">24dp</dimen>
+    <!-- top gap when the suggestion is enabled -->
+    <dimen name="keyboard_top_spacing">6dp</dimen>
+    <!-- gap below keyboard -->
+    <dimen name="keyboard_bottom_spacing">28dp</dimen>
+    <!-- action button size -->
+    <dimen name="action_button_size">64dp</dimen>
+
+    <dimen name="enter_key_height">32dp</dimen>
+    <dimen name="enter_key_font_size">18sp</dimen>
+    <dimen name="enter_key_padding_horizontal">16dp</dimen>
+    <dimen name="mode_change_key_font_size">7sp</dimen>
+    <!-- candidate layout -->
+    <dimen name="candidate_font_size">18sp</dimen>
+    <dimen name="candidate_padding_horizontal">16dp</dimen>
+    <dimen name="candidate_margin_horizontal">4dp</dimen>
+    <dimen name="candidate_height">28dp</dimen>
+    <dimen name="candidate_scroll_view_horz_spacing">56dip</dimen>
+
+    <!-- keyboard key font size -->
+    <dimen name="key_font_size">18sp</dimen>
+    <!-- font size of mode changing function keys -->
+    <dimen name="function_key_mode_change_font_size">16sp</dimen>
+    <!-- min movement distance to change cursor size -->
+    <dimen name="resize_move_distance">12dp</dimen>
+
+</resources>
\ No newline at end of file
diff --git a/res/values/integers.xml b/res/values/integers.xml
new file mode 100644
index 0000000..5c2dc15
--- /dev/null
+++ b/res/values/integers.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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>
+    <!-- duration of animation for a key click -->
+    <integer name="clicked_anim_duration">100</integer>
+    <!-- delay before reversing clicked key animation -->
+    <integer name="unfocused_anim_delay">30</integer>
+    <!-- duration of dication/voice ui coming up and going away -->
+    <integer name="voice_anim_duration">300</integer>
+    <!-- alpha value for inactive keys when mini kb is up -->
+    <integer name="inactive_mini_kb_alpha">40</integer>
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
new file mode 100644
index 0000000..b69cf4a
--- /dev/null
+++ b/res/values/strings.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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">
+
+    <!-- Name of this ime [CHAR LIMIT=20] -->
+    <string name="ime_name"><xliff:g id="app_name">Leanback</xliff:g> Keyboard</string>
+    <!-- Name of this ime's input service [CHAR LIMIT=20] -->
+    <string name="ime_service_name"><xliff:g id="app_name">Leanback</xliff:g> Keyboard</string>
+
+    <!-- Symbols that are commonly considered word separators in this language [DO NOT TRANSLATE] -->
+    <string name="word_separators">\u0020.,;:!?\n()[]*&amp;@{}/&lt;&gt;_+=|&quot;</string>
+
+    <!-- Labels for the action key in different mode-->
+    <!-- Label go for IME action key [CHAR LIMIT=20] -->
+    <string name="label_go_key">Go</string>
+    <!-- Label next for IME action key [CHAR LIMIT=20] -->
+    <string name="label_next_key">Next</string>
+    <!-- Label send for IME action key [CHAR LIMIT=20] -->
+    <string name="label_send_key">Send</string>
+    <!-- Label search for IME action key [CHAR LIMIT=20] -->
+    <string name="label_search_key">Search</string>
+    <!-- Label done for IME action key [CHAR LIMIT=20] -->
+    <string name="label_done_key">Done</string>
+
+    <!-- DO NOT TRANSLATE autocomplete email address of commong domains -->
+    <string-array name="common_domains" translatable="false">
+        <item>"@gmail.com"</item>
+        <item>"@yahoo.com"</item>
+        <item>"@hotmail.com"</item>
+    </string-array>
+
+    <!-- Label for LeanbackIme Settings [CHAR LIMIT=50] -->
+    <string name="settings_title">Keyboard Options</string>
+    <!-- Name of a setting that controls LeanbackIme's movement sensitivity [CHAR LIMIT=50] -->
+    <string name="title_movement_sensitivity">Movement sensitivity</string>
+    <!-- Values for movement sensitivity settings [DO NOT TRANSLATE] -->
+    <string-array name="movement_sensitivity_values" translatable="false" >
+        <item>0.6</item>
+        <item>0.8</item>
+        <item>1.0</item>
+        <item>1.2</item>
+        <item>1.4</item>
+    </string-array>
+    <!-- Description / label for a button that turns a setting on [CHAR LIMIT=50]-->
+    <string name="btn_on">On</string>
+    <!-- Description / label for a button that turns a setting off [CHAR LIMIT=50]-->
+    <string name="btn_off">Off</string>
+    <!-- Description for English (United States) keyboard subtype [DO NOT TRANSLATE] -->
+    <string name="subtype_generic" translatable="false">%s</string>
+
+    <!-- KeyboardView - accessibility support -->
+    <!-- Description of the Space button in a KeyboardView. [CHAR LIMIT=NONE] -->
+    <string name="keyboardview_keycode_space">Space</string>
+    <!-- Description of the Delete button in a KeyboardView. [CHAR LIMIT=NONE] -->
+    <string name="keyboardview_keycode_delete">Delete</string>
+    <!-- Description of the Mode change button in a KeyboardView. [CHAR LIMIT=NONE] -->
+    <string name="keyboardview_keycode_mode_change">Mode change</string>
+    <!-- Description of the Shift button in a KeyboardView. [CHAR LIMIT=NONE] -->
+    <string name="keyboardview_keycode_shift">Shift</string>
+    <!-- Description of the Caps lock in a KeyboardView. [CHAR LIMIT=NONE] -->
+    <string name="keyboardview_keycode_caps">Caps Lock</string>
+    <!-- Description of the left cursor button in a KeyboardView. [CHAR LIMIT=NONE] -->
+    <string name="keyboardview_keycode_left">Left</string>
+    <!-- Description of the right cursor button in a KeyboardView. [CHAR LIMIT=NONE] -->
+    <string name="keyboardview_keycode_right">Right</string>
+
+    <!-- Announce that a headset is required to hear keyboard keys while typing a password. [CHAR LIMIT=NONE] -->
+    <string name="keyboard_headset_required_to_hear_password">Plug in a headset to hear password keys spoken.</string>
+    <!-- The value of a keyboard key announced when accessibility is enabled and no headsed is used. [CHAR LIMIT=NONE] -->
+    <string name="keyboard_password_character_no_headset">Dot.</string>
+</resources>
diff --git a/res/xml/accent_a.xml b/res/xml/accent_a.xml
new file mode 100644
index 0000000..90534e1
--- /dev/null
+++ b/res/xml/accent_a.xml
@@ -0,0 +1,58 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyLabel="a" />
+        <Key
+            android:codes="224"
+            android:keyLabel="à" />
+        <Key
+            android:codes="225"
+            android:keyLabel="á" />
+        <Key
+            android:codes="226"
+            android:keyLabel="â" />
+        <Key
+            android:codes="227"
+            android:keyLabel="ã" />
+        <Key
+            android:codes="228"
+            android:keyLabel="ä" />
+        <Key
+            android:codes="229"
+            android:keyLabel="å" />
+        <Key
+            android:codes="230"
+            android:keyLabel="æ" />
+        <Key
+            android:codes="257"
+            android:keyLabel="ā" />
+        <Key
+            android:codes="259"
+            android:keyLabel="ă" />
+        <Key
+            android:codes="261"
+            android:keyLabel="ą" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_c.xml b/res/xml/accent_c.xml
new file mode 100644
index 0000000..34309be
--- /dev/null
+++ b/res/xml/accent_c.xml
@@ -0,0 +1,37 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="99"
+            android:keyLabel="c" />
+        <Key
+            android:codes="231"
+            android:keyLabel="Ç" />
+        <Key
+            android:codes="263"
+            android:keyLabel="ć" />
+        <Key
+            android:codes="269"
+            android:keyLabel="č" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_d.xml b/res/xml/accent_d.xml
new file mode 100644
index 0000000..7835c10
--- /dev/null
+++ b/res/xml/accent_d.xml
@@ -0,0 +1,31 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="100"
+            android:keyLabel="d" />
+        <Key
+            android:codes="273"
+            android:keyLabel="đ" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_e.xml b/res/xml/accent_e.xml
new file mode 100644
index 0000000..5aa6549
--- /dev/null
+++ b/res/xml/accent_e.xml
@@ -0,0 +1,49 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="101"
+            android:keyLabel="e" />
+        <Key
+            android:codes="232"
+            android:keyLabel="è" />
+        <Key
+            android:codes="233"
+            android:keyLabel="é" />
+        <Key
+            android:codes="234"
+            android:keyLabel="ê" />
+        <Key
+            android:codes="235"
+            android:keyLabel="ë" />
+        <Key
+            android:codes="275"
+            android:keyLabel="ē" />
+        <Key
+            android:codes="279"
+            android:keyLabel="ė" />
+        <Key
+            android:codes="281"
+            android:keyLabel="ę" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_g.xml b/res/xml/accent_g.xml
new file mode 100644
index 0000000..db7535d
--- /dev/null
+++ b/res/xml/accent_g.xml
@@ -0,0 +1,34 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="103"
+            android:keyLabel="g" />
+        <Key
+            android:codes="287"
+            android:keyLabel="ğ" />
+        <Key
+            android:codes="291"
+            android:keyLabel="ģ" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_i.xml b/res/xml/accent_i.xml
new file mode 100644
index 0000000..a164b52
--- /dev/null
+++ b/res/xml/accent_i.xml
@@ -0,0 +1,46 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="105"
+            android:keyLabel="i" />
+        <Key
+            android:codes="236"
+            android:keyLabel="ì" />
+        <Key
+            android:codes="237"
+            android:keyLabel="í" />
+        <Key
+            android:codes="238"
+            android:keyLabel="î" />
+        <Key
+            android:codes="239"
+            android:keyLabel="ï" />
+        <Key
+            android:codes="299"
+            android:keyLabel="ī" />
+        <Key
+            android:codes="303"
+            android:keyLabel="į" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_k.xml b/res/xml/accent_k.xml
new file mode 100644
index 0000000..72c1151
--- /dev/null
+++ b/res/xml/accent_k.xml
@@ -0,0 +1,31 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="107"
+            android:keyLabel="k" />
+        <Key
+            android:codes="311"
+            android:keyLabel="ķ" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_l.xml b/res/xml/accent_l.xml
new file mode 100644
index 0000000..5386f5f
--- /dev/null
+++ b/res/xml/accent_l.xml
@@ -0,0 +1,34 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="108"
+            android:keyLabel="l" />
+        <Key
+            android:codes="316"
+            android:keyLabel="ļ" />
+        <Key
+            android:codes="322"
+            android:keyLabel="ł" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_n.xml b/res/xml/accent_n.xml
new file mode 100644
index 0000000..b09d6ef
--- /dev/null
+++ b/res/xml/accent_n.xml
@@ -0,0 +1,37 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="110"
+            android:keyLabel="n" />
+        <Key
+            android:codes="241"
+            android:keyLabel="ñ" />
+        <Key
+            android:codes="324"
+            android:keyLabel="ń" />
+        <Key
+            android:codes="326"
+            android:keyLabel="ņ" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_o.xml b/res/xml/accent_o.xml
new file mode 100644
index 0000000..5f84f54
--- /dev/null
+++ b/res/xml/accent_o.xml
@@ -0,0 +1,55 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="111"
+            android:keyLabel="o" />
+        <Key
+            android:codes="242"
+            android:keyLabel="ò" />
+        <Key
+            android:codes="243"
+            android:keyLabel="ó" />
+        <Key
+            android:codes="244"
+            android:keyLabel="ô" />
+        <Key
+            android:codes="245"
+            android:keyLabel="õ" />
+        <Key
+            android:codes="246"
+            android:keyLabel="ö" />
+        <Key
+            android:codes="248"
+            android:keyLabel="ø" />
+        <Key
+            android:codes="333"
+            android:keyLabel="ō" />
+        <Key
+            android:codes="339"
+            android:keyLabel="œ" />
+        <Key
+            android:codes="417"
+            android:keyLabel="ơ" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_s.xml b/res/xml/accent_s.xml
new file mode 100644
index 0000000..3518afe
--- /dev/null
+++ b/res/xml/accent_s.xml
@@ -0,0 +1,40 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="115"
+            android:keyLabel="s" />
+        <Key
+            android:codes="223"
+            android:keyLabel="ß" />
+        <Key
+            android:codes="347"
+            android:keyLabel="ś" />
+        <Key
+            android:codes="351"
+            android:keyLabel="ş" />
+        <Key
+            android:codes="353"
+            android:keyLabel="š" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_t.xml b/res/xml/accent_t.xml
new file mode 100644
index 0000000..bba1898
--- /dev/null
+++ b/res/xml/accent_t.xml
@@ -0,0 +1,31 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="116"
+            android:keyLabel="t" />
+        <Key
+            android:codes="355"
+            android:keyLabel="ț" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_u.xml b/res/xml/accent_u.xml
new file mode 100644
index 0000000..93a50d7
--- /dev/null
+++ b/res/xml/accent_u.xml
@@ -0,0 +1,49 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="117"
+            android:keyLabel="u" />
+        <Key
+            android:codes="249"
+            android:keyLabel="ù" />
+        <Key
+            android:codes="250"
+            android:keyLabel="ú" />
+        <Key
+            android:codes="251"
+            android:keyLabel="û" />
+        <Key
+            android:codes="252"
+            android:keyLabel="ü" />
+        <Key
+            android:codes="363"
+            android:keyLabel="ū" />
+        <Key
+            android:codes="371"
+            android:keyLabel="ų" />
+        <Key
+            android:codes="432"
+            android:keyLabel="ư" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_y.xml b/res/xml/accent_y.xml
new file mode 100644
index 0000000..ce9dc3f
--- /dev/null
+++ b/res/xml/accent_y.xml
@@ -0,0 +1,31 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="121"
+            android:keyLabel="y" />
+        <Key
+            android:codes="255"
+            android:keyLabel="ÿ" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/accent_z.xml b/res/xml/accent_z.xml
new file mode 100644
index 0000000..6c43d21
--- /dev/null
+++ b/res/xml/accent_z.xml
@@ -0,0 +1,37 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyLabel="z" />
+        <Key
+            android:codes="378"
+            android:keyLabel="ź" />
+        <Key
+            android:codes="380"
+            android:keyLabel="ż" />
+        <Key
+            android:codes="382"
+            android:keyLabel="ž" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/azerty.xml b/res/xml/azerty.xml
new file mode 100644
index 0000000..2bad112
--- /dev/null
+++ b/res/xml/azerty.xml
@@ -0,0 +1,233 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="122"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="64"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\@" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="119"
+            android:keyEdgeFlags="left"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="39"
+            android:keyLabel="\&apos;" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/method.xml b/res/xml/method.xml
new file mode 100644
index 0000000..0c41826
--- /dev/null
+++ b/res/xml/method.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2019 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.
+-->
+
+<!-- The attributes in this XML file provide configuration information -->
+<!-- for the Search Manager. -->
+
+<input-method xmlns:android="http://schemas.android.com/apk/res/android"
+    android:isDefault="@bool/im_is_default">
+    <subtype android:label="@string/subtype_generic"
+            android:imeSubtypeLocale="en_US"
+            android:imeSubtypeMode="keyboard"
+    />
+</input-method>
diff --git a/res/xml/number.xml b/res/xml/number.xml
new file mode 100644
index 0000000..83defd7
--- /dev/null
+++ b/res/xml/number.xml
@@ -0,0 +1,89 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3" />
+        <Key
+            android:codes="95"
+            android:keyEdgeFlags="right"
+            android:keyLabel="_" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="52"
+            android:keyEdgeFlags="left"
+            android:keyLabel="4" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6" />
+        <Key
+            android:codes="46"
+            android:keyEdgeFlags="right"
+            android:keyLabel="." />
+    </Row>
+    <Row>
+        <Key
+            android:codes="55"
+            android:keyEdgeFlags="left"
+            android:keyLabel="7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="42"
+            android:keyEdgeFlags="left"
+            android:keyLabel="*" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0" />
+        <Key
+            android:codes="35"
+            android:keyLabel="\#" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+
+</Keyboard>
diff --git a/res/xml/qwerty_az.xml b/res/xml/qwerty_az.xml
new file mode 100644
index 0000000..9f5af14
--- /dev/null
+++ b/res/xml/qwerty_az.xml
@@ -0,0 +1,233 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="64"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\@" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_ca.xml b/res/xml/qwerty_ca.xml
new file mode 100644
index 0000000..a177af6
--- /dev/null
+++ b/res/xml/qwerty_ca.xml
@@ -0,0 +1,234 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="64"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\@" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="231"
+            android:keyLabel="ç"
+            android:popupKeyboard="@xml/shift_cc" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_da.xml b/res/xml/qwerty_da.xml
new file mode 100644
index 0000000..9e793ac
--- /dev/null
+++ b/res/xml/qwerty_da.xml
@@ -0,0 +1,236 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="229"
+            android:keyEdgeFlags="right"
+            android:keyLabel="å"
+            android:popupKeyboard="@xml/shift_ao" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="230"
+            android:keyLabel="æ"
+            android:popupKeyboard="@xml/shift_ae" />
+        <Key
+            android:codes="248"
+            android:keyEdgeFlags="right"
+            android:keyLabel="ø"
+            android:popupKeyboard="@xml/shift_ox" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_en_gb.xml b/res/xml/qwerty_en_gb.xml
new file mode 100644
index 0000000..deac584
--- /dev/null
+++ b/res/xml/qwerty_en_gb.xml
@@ -0,0 +1,233 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_en_gb" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="64"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\@" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_en_in.xml b/res/xml/qwerty_en_in.xml
new file mode 100644
index 0000000..f6ecf9f
--- /dev/null
+++ b/res/xml/qwerty_en_in.xml
@@ -0,0 +1,233 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_en_in" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="64"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\@" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_es_eu.xml b/res/xml/qwerty_es_eu.xml
new file mode 100644
index 0000000..60551b0
--- /dev/null
+++ b/res/xml/qwerty_es_eu.xml
@@ -0,0 +1,234 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="64"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\@" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="241"
+            android:keyLabel="ñ"
+            android:popupKeyboard="@xml/shift_nn_es" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/shift_n_es" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_es_us.xml b/res/xml/qwerty_es_us.xml
new file mode 100644
index 0000000..8749292
--- /dev/null
+++ b/res/xml/qwerty_es_us.xml
@@ -0,0 +1,234 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="64"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\@" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="241"
+            android:keyLabel="ñ"
+            android:popupKeyboard="@xml/shift_nn_es" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/shift_n_es" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_et.xml b/res/xml/qwerty_et.xml
new file mode 100644
index 0000000..d26c191
--- /dev/null
+++ b/res/xml/qwerty_et.xml
@@ -0,0 +1,236 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="252"
+            android:keyEdgeFlags="right"
+            android:keyLabel="ü"
+            android:popupKeyboard="@xml/shift_uu" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="246"
+            android:keyLabel="ö"
+            android:popupKeyboard="@xml/shift_oo" />
+        <Key
+            android:codes="228"
+            android:keyEdgeFlags="right"
+            android:keyLabel="ä"
+            android:popupKeyboard="@xml/shift_aa" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_eu.xml b/res/xml/qwerty_eu.xml
new file mode 100644
index 0000000..9f5af14
--- /dev/null
+++ b/res/xml/qwerty_eu.xml
@@ -0,0 +1,233 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="64"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\@" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_fi.xml b/res/xml/qwerty_fi.xml
new file mode 100644
index 0000000..b2f29de
--- /dev/null
+++ b/res/xml/qwerty_fi.xml
@@ -0,0 +1,236 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="229"
+            android:keyEdgeFlags="right"
+            android:keyLabel="å"
+            android:popupKeyboard="@xml/shift_ao" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="246"
+            android:keyLabel="ö"
+            android:popupKeyboard="@xml/shift_oo" />
+        <Key
+            android:codes="228"
+            android:keyEdgeFlags="right"
+            android:keyLabel="ä"
+            android:popupKeyboard="@xml/shift_aa" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_nb.xml b/res/xml/qwerty_nb.xml
new file mode 100644
index 0000000..1a67732
--- /dev/null
+++ b/res/xml/qwerty_nb.xml
@@ -0,0 +1,236 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="229"
+            android:keyEdgeFlags="right"
+            android:keyLabel="å"
+            android:popupKeyboard="@xml/shift_ao" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="248"
+            android:keyLabel="ø"
+            android:popupKeyboard="@xml/shift_ox" />
+        <Key
+            android:codes="230"
+            android:keyEdgeFlags="right"
+            android:keyLabel="æ"
+            android:popupKeyboard="@xml/shift_ae" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_sv.xml b/res/xml/qwerty_sv.xml
new file mode 100644
index 0000000..b2f29de
--- /dev/null
+++ b/res/xml/qwerty_sv.xml
@@ -0,0 +1,236 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="229"
+            android:keyEdgeFlags="right"
+            android:keyLabel="å"
+            android:popupKeyboard="@xml/shift_ao" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="246"
+            android:keyLabel="ö"
+            android:popupKeyboard="@xml/shift_oo" />
+        <Key
+            android:codes="228"
+            android:keyEdgeFlags="right"
+            android:keyLabel="ä"
+            android:popupKeyboard="@xml/shift_aa" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwerty_us.xml b/res/xml/qwerty_us.xml
new file mode 100644
index 0000000..c51dfdb
--- /dev/null
+++ b/res/xml/qwerty_us.xml
@@ -0,0 +1,233 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="121"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/accent_y" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="64"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\@" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="122"
+            android:keyEdgeFlags="left"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwertz.xml b/res/xml/qwertz.xml
new file mode 100644
index 0000000..b5e5e55
--- /dev/null
+++ b/res/xml/qwertz.xml
@@ -0,0 +1,233 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="122"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="64"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\@" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="121"
+            android:keyEdgeFlags="left"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/qwertz_ch.xml b/res/xml/qwertz_ch.xml
new file mode 100644
index 0000000..759fc5d
--- /dev/null
+++ b/res/xml/qwertz_ch.xml
@@ -0,0 +1,236 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row android:rowEdgeFlags="top">
+        <Key
+            android:codes="49"
+            android:keyEdgeFlags="left"
+            android:keyLabel="1"
+            android:popupKeyboard="@xml/shift_1" />
+        <Key
+            android:codes="50"
+            android:keyLabel="2"
+            android:popupKeyboard="@xml/shift_2" />
+        <Key
+            android:codes="51"
+            android:keyLabel="3"
+            android:popupKeyboard="@xml/shift_3" />
+        <Key
+            android:codes="52"
+            android:keyLabel="4"
+            android:popupKeyboard="@xml/shift_4_eu" />
+        <Key
+            android:codes="53"
+            android:keyLabel="5"
+            android:popupKeyboard="@xml/shift_5" />
+        <Key
+            android:codes="54"
+            android:keyLabel="6"
+            android:popupKeyboard="@xml/shift_6" />
+        <Key
+            android:codes="55"
+            android:keyLabel="7"
+            android:popupKeyboard="@xml/shift_7" />
+        <Key
+            android:codes="56"
+            android:keyLabel="8"
+            android:popupKeyboard="@xml/shift_8" />
+        <Key
+            android:codes="57"
+            android:keyLabel="9"
+            android:popupKeyboard="@xml/shift_9" />
+        <Key
+            android:codes="48"
+            android:keyLabel="0"
+            android:popupKeyboard="@xml/shift_0" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyEdgeFlags="left"
+            android:keyLabel="q"
+            android:popupKeyboard="@xml/shift_q" />
+        <Key
+            android:codes="119"
+            android:keyLabel="w"
+            android:popupKeyboard="@xml/shift_w" />
+        <Key
+            android:codes="101"
+            android:keyLabel="e"
+            android:popupKeyboard="@xml/accent_e" />
+        <Key
+            android:codes="114"
+            android:keyLabel="r"
+            android:popupKeyboard="@xml/shift_r" />
+        <Key
+            android:codes="116"
+            android:keyLabel="t"
+            android:popupKeyboard="@xml/accent_t" />
+        <Key
+            android:codes="122"
+            android:keyLabel="z"
+            android:popupKeyboard="@xml/accent_z" />
+        <Key
+            android:codes="117"
+            android:keyLabel="u"
+            android:popupKeyboard="@xml/accent_u" />
+        <Key
+            android:codes="105"
+            android:keyLabel="i"
+            android:popupKeyboard="@xml/accent_i" />
+        <Key
+            android:codes="111"
+            android:keyLabel="o"
+            android:popupKeyboard="@xml/accent_o" />
+        <Key
+            android:codes="112"
+            android:keyLabel="p"
+            android:popupKeyboard="@xml/shift_p" />
+        <Key
+            android:codes="252"
+            android:keyEdgeFlags="right"
+            android:keyLabel="ü"
+            android:popupKeyboard="@xml/shift_uu" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="97"
+            android:keyEdgeFlags="left"
+            android:keyLabel="a"
+            android:popupKeyboard="@xml/accent_a" />
+        <Key
+            android:codes="115"
+            android:keyLabel="s"
+            android:popupKeyboard="@xml/accent_s" />
+        <Key
+            android:codes="100"
+            android:keyLabel="d"
+            android:popupKeyboard="@xml/accent_d" />
+        <Key
+            android:codes="102"
+            android:keyLabel="f"
+            android:popupKeyboard="@xml/shift_f" />
+        <Key
+            android:codes="103"
+            android:keyLabel="g"
+            android:popupKeyboard="@xml/accent_g" />
+        <Key
+            android:codes="104"
+            android:keyLabel="h"
+            android:popupKeyboard="@xml/shift_h" />
+        <Key
+            android:codes="106"
+            android:keyLabel="j"
+            android:popupKeyboard="@xml/shift_j" />
+        <Key
+            android:codes="107"
+            android:keyLabel="k"
+            android:popupKeyboard="@xml/accent_k" />
+        <Key
+            android:codes="108"
+            android:keyLabel="l"
+            android:popupKeyboard="@xml/accent_l" />
+        <Key
+            android:codes="246"
+            android:keyLabel="ö"
+            android:popupKeyboard="@xml/shift_oo" />
+        <Key
+            android:codes="228"
+            android:keyEdgeFlags="right"
+            android:keyLabel="ä"
+            android:popupKeyboard="@xml/shift_aa" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="121"
+            android:keyEdgeFlags="left"
+            android:keyLabel="y"
+            android:popupKeyboard="@xml/shift_y" />
+        <Key
+            android:codes="120"
+            android:keyLabel="x"
+            android:popupKeyboard="@xml/shift_x" />
+        <Key
+            android:codes="99"
+            android:keyLabel="c"
+            android:popupKeyboard="@xml/accent_c" />
+        <Key
+            android:codes="118"
+            android:keyLabel="v"
+            android:popupKeyboard="@xml/shift_v" />
+        <Key
+            android:codes="98"
+            android:keyLabel="b"
+            android:popupKeyboard="@xml/shift_b" />
+        <Key
+            android:codes="110"
+            android:keyLabel="n"
+            android:popupKeyboard="@xml/accent_n" />
+        <Key
+            android:codes="109"
+            android:keyLabel="m"
+            android:popupKeyboard="@xml/shift_m" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_symbols" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_0.xml b/res/xml/shift_0.xml
new file mode 100644
index 0000000..bcff0eb
--- /dev/null
+++ b/res/xml/shift_0.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="41"
+            android:keyLabel=")" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_1.xml b/res/xml/shift_1.xml
new file mode 100644
index 0000000..f324a40
--- /dev/null
+++ b/res/xml/shift_1.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="33"
+            android:keyLabel="!" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_2.xml b/res/xml/shift_2.xml
new file mode 100644
index 0000000..ed5e19e
--- /dev/null
+++ b/res/xml/shift_2.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="64"
+            android:keyLabel="\@" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_3.xml b/res/xml/shift_3.xml
new file mode 100644
index 0000000..ebc8a0e
--- /dev/null
+++ b/res/xml/shift_3.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="35"
+            android:keyLabel="\#" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_4.xml b/res/xml/shift_4.xml
new file mode 100644
index 0000000..90c0ddb
--- /dev/null
+++ b/res/xml/shift_4.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="36"
+            android:keyLabel="$" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_4_en_gb.xml b/res/xml/shift_4_en_gb.xml
new file mode 100644
index 0000000..f7803cc
--- /dev/null
+++ b/res/xml/shift_4_en_gb.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="163"
+            android:keyLabel="£" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_4_en_in.xml b/res/xml/shift_4_en_in.xml
new file mode 100644
index 0000000..ff6476b
--- /dev/null
+++ b/res/xml/shift_4_en_in.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="8377"
+            android:keyLabel="₹" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_4_eu.xml b/res/xml/shift_4_eu.xml
new file mode 100644
index 0000000..719eb7a
--- /dev/null
+++ b/res/xml/shift_4_eu.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="8364"
+            android:keyLabel="€" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_5.xml b/res/xml/shift_5.xml
new file mode 100644
index 0000000..40ea608
--- /dev/null
+++ b/res/xml/shift_5.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="37"
+            android:keyLabel="%" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_6.xml b/res/xml/shift_6.xml
new file mode 100644
index 0000000..2532351
--- /dev/null
+++ b/res/xml/shift_6.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="94"
+            android:keyLabel="^" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_7.xml b/res/xml/shift_7.xml
new file mode 100644
index 0000000..0995c31
--- /dev/null
+++ b/res/xml/shift_7.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="38"
+            android:keyLabel="&amp;" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_8.xml b/res/xml/shift_8.xml
new file mode 100644
index 0000000..f4e7e19
--- /dev/null
+++ b/res/xml/shift_8.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="42"
+            android:keyLabel="*" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_9.xml b/res/xml/shift_9.xml
new file mode 100644
index 0000000..b22951b
--- /dev/null
+++ b/res/xml/shift_9.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="40"
+            android:keyLabel="(" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_aa.xml b/res/xml/shift_aa.xml
new file mode 100644
index 0000000..e0d6d0e
--- /dev/null
+++ b/res/xml/shift_aa.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="228"
+            android:keyLabel="ä" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_ae.xml b/res/xml/shift_ae.xml
new file mode 100644
index 0000000..01d8fbb
--- /dev/null
+++ b/res/xml/shift_ae.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="230"
+            android:keyLabel="æ" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_ao.xml b/res/xml/shift_ao.xml
new file mode 100644
index 0000000..064dbe0
--- /dev/null
+++ b/res/xml/shift_ao.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="229"
+            android:keyLabel="å" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_b.xml b/res/xml/shift_b.xml
new file mode 100644
index 0000000..d371206
--- /dev/null
+++ b/res/xml/shift_b.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="98"
+            android:keyLabel="b" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_cc.xml b/res/xml/shift_cc.xml
new file mode 100644
index 0000000..0e3929f
--- /dev/null
+++ b/res/xml/shift_cc.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="231"
+            android:keyLabel="ç" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_f.xml b/res/xml/shift_f.xml
new file mode 100644
index 0000000..1cdb194
--- /dev/null
+++ b/res/xml/shift_f.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="102"
+            android:keyLabel="f" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_h.xml b/res/xml/shift_h.xml
new file mode 100644
index 0000000..bce3549
--- /dev/null
+++ b/res/xml/shift_h.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="104"
+            android:keyLabel="h" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_j.xml b/res/xml/shift_j.xml
new file mode 100644
index 0000000..d84444d
--- /dev/null
+++ b/res/xml/shift_j.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="106"
+            android:keyLabel="j" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_m.xml b/res/xml/shift_m.xml
new file mode 100644
index 0000000..e89d95f
--- /dev/null
+++ b/res/xml/shift_m.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="109"
+            android:keyLabel="m" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_n_es.xml b/res/xml/shift_n_es.xml
new file mode 100644
index 0000000..379c2a5
--- /dev/null
+++ b/res/xml/shift_n_es.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="110"
+            android:keyLabel="n" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_nn_es.xml b/res/xml/shift_nn_es.xml
new file mode 100644
index 0000000..39e5c84
--- /dev/null
+++ b/res/xml/shift_nn_es.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="241"
+            android:keyLabel="ñ" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_oo.xml b/res/xml/shift_oo.xml
new file mode 100644
index 0000000..afe30b2
--- /dev/null
+++ b/res/xml/shift_oo.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="246"
+            android:keyLabel="ö" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_ox.xml b/res/xml/shift_ox.xml
new file mode 100644
index 0000000..4c22c78
--- /dev/null
+++ b/res/xml/shift_ox.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="248"
+            android:keyLabel="ø" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_p.xml b/res/xml/shift_p.xml
new file mode 100644
index 0000000..e4ebcbc
--- /dev/null
+++ b/res/xml/shift_p.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="112"
+            android:keyLabel="p" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_q.xml b/res/xml/shift_q.xml
new file mode 100644
index 0000000..b3282f5
--- /dev/null
+++ b/res/xml/shift_q.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="113"
+            android:keyLabel="q" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_r.xml b/res/xml/shift_r.xml
new file mode 100644
index 0000000..906e1bb
--- /dev/null
+++ b/res/xml/shift_r.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="114"
+            android:keyLabel="r" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_uu.xml b/res/xml/shift_uu.xml
new file mode 100644
index 0000000..bb56653
--- /dev/null
+++ b/res/xml/shift_uu.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="252"
+            android:keyLabel="ü" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_v.xml b/res/xml/shift_v.xml
new file mode 100644
index 0000000..4ce770a
--- /dev/null
+++ b/res/xml/shift_v.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="118"
+            android:keyLabel="v" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_w.xml b/res/xml/shift_w.xml
new file mode 100644
index 0000000..d8ab4f9
--- /dev/null
+++ b/res/xml/shift_w.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="119"
+            android:keyLabel="w" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_x.xml b/res/xml/shift_x.xml
new file mode 100644
index 0000000..743e91b
--- /dev/null
+++ b/res/xml/shift_x.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="120"
+            android:keyLabel="x" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/shift_y.xml b/res/xml/shift_y.xml
new file mode 100644
index 0000000..63bbcc2
--- /dev/null
+++ b/res/xml/shift_y.xml
@@ -0,0 +1,28 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="121"
+            android:keyLabel="y" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/sym_azerty.xml b/res/xml/sym_azerty.xml
new file mode 100644
index 0000000..b175ddb
--- /dev/null
+++ b/res/xml/sym_azerty.xml
@@ -0,0 +1,197 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="33"
+            android:keyEdgeFlags="left"
+            android:keyLabel="!" />
+        <Key
+            android:codes="64"
+            android:keyLabel="\@" />
+        <Key
+            android:codes="35"
+            android:keyLabel="\#" />
+        <Key
+            android:codes="8364"
+            android:keyLabel="€" />
+        <Key
+            android:codes="37"
+            android:keyLabel="%" />
+        <Key
+            android:codes="94"
+            android:keyLabel="^" />
+        <Key
+            android:codes="38"
+            android:keyLabel="&amp;" />
+        <Key
+            android:codes="42"
+            android:keyLabel="*" />
+        <Key
+            android:codes="40"
+            android:keyLabel="(" />
+        <Key
+            android:codes="41"
+            android:keyLabel=")" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="126"
+            android:keyEdgeFlags="left"
+            android:keyLabel="~" />
+        <Key
+            android:codes="96"
+            android:keyLabel="`" />
+        <Key
+            android:codes="91"
+            android:keyLabel="[" />
+        <Key
+            android:codes="93"
+            android:keyLabel="]" />
+        <Key
+            android:codes="123"
+            android:keyLabel="{" />
+        <Key
+            android:codes="125"
+            android:keyLabel="}" />
+        <Key
+            android:codes="124"
+            android:keyLabel="|" />
+        <Key
+            android:codes="43"
+            android:keyLabel="+" />
+        <Key
+            android:codes="61"
+            android:keyLabel="=" />
+        <Key
+            android:codes="47"
+            android:keyLabel="/" />
+        <Key
+            android:codes="92"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\\" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="176"
+            android:keyEdgeFlags="left"
+            android:keyLabel="°" />
+        <Key
+            android:codes="191"
+            android:keyLabel="¿" />
+        <Key
+            android:codes="161"
+            android:keyLabel="¡" />
+        <Key
+            android:codes="247"
+            android:keyLabel="÷" />
+        <Key
+            android:codes="215"
+            android:keyLabel="×" />
+        <Key
+            android:codes="59"
+            android:keyLabel=";" />
+        <Key
+            android:codes="58"
+            android:keyLabel=":" />
+        <Key
+            android:codes="34"
+            android:keyLabel="&quot;" />
+        <Key
+            android:codes="8226"
+            android:keyLabel="•" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="36"
+            android:keyEdgeFlags="left"
+            android:keyLabel="$" />
+        <Key
+            android:codes="165"
+            android:keyLabel="¥" />
+        <Key
+            android:codes="162"
+            android:keyLabel="¢" />
+        <Key
+            android:codes="163"
+            android:keyLabel="£" />
+        <Key
+            android:codes="60"
+            android:keyLabel="&lt;" />
+        <Key
+            android:codes="62"
+            android:keyLabel=">" />
+        <Key
+            android:codes="39"
+            android:keyLabel="\&apos;" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_alphabet" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/sym_en_gb.xml b/res/xml/sym_en_gb.xml
new file mode 100644
index 0000000..0f7fa9b
--- /dev/null
+++ b/res/xml/sym_en_gb.xml
@@ -0,0 +1,197 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="33"
+            android:keyEdgeFlags="left"
+            android:keyLabel="!" />
+        <Key
+            android:codes="64"
+            android:keyLabel="\@" />
+        <Key
+            android:codes="35"
+            android:keyLabel="\#" />
+        <Key
+            android:codes="163"
+            android:keyLabel="£" />
+        <Key
+            android:codes="37"
+            android:keyLabel="%" />
+        <Key
+            android:codes="94"
+            android:keyLabel="^" />
+        <Key
+            android:codes="38"
+            android:keyLabel="&amp;" />
+        <Key
+            android:codes="42"
+            android:keyLabel="*" />
+        <Key
+            android:codes="40"
+            android:keyLabel="(" />
+        <Key
+            android:codes="41"
+            android:keyLabel=")" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="126"
+            android:keyEdgeFlags="left"
+            android:keyLabel="~" />
+        <Key
+            android:codes="96"
+            android:keyLabel="`" />
+        <Key
+            android:codes="91"
+            android:keyLabel="[" />
+        <Key
+            android:codes="93"
+            android:keyLabel="]" />
+        <Key
+            android:codes="123"
+            android:keyLabel="{" />
+        <Key
+            android:codes="125"
+            android:keyLabel="}" />
+        <Key
+            android:codes="124"
+            android:keyLabel="|" />
+        <Key
+            android:codes="43"
+            android:keyLabel="+" />
+        <Key
+            android:codes="61"
+            android:keyLabel="=" />
+        <Key
+            android:codes="47"
+            android:keyLabel="/" />
+        <Key
+            android:codes="92"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\\" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="176"
+            android:keyEdgeFlags="left"
+            android:keyLabel="°" />
+        <Key
+            android:codes="191"
+            android:keyLabel="¿" />
+        <Key
+            android:codes="161"
+            android:keyLabel="¡" />
+        <Key
+            android:codes="247"
+            android:keyLabel="÷" />
+        <Key
+            android:codes="215"
+            android:keyLabel="×" />
+        <Key
+            android:codes="59"
+            android:keyLabel=";" />
+        <Key
+            android:codes="58"
+            android:keyLabel=":" />
+        <Key
+            android:codes="34"
+            android:keyLabel="&quot;" />
+        <Key
+            android:codes="39"
+            android:keyLabel="\&apos;" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="8364"
+            android:keyEdgeFlags="left"
+            android:keyLabel="€" />
+        <Key
+            android:codes="165"
+            android:keyLabel="¥" />
+        <Key
+            android:codes="162"
+            android:keyLabel="¢" />
+        <Key
+            android:codes="36"
+            android:keyLabel="$" />
+        <Key
+            android:codes="60"
+            android:keyLabel="&lt;" />
+        <Key
+            android:codes="62"
+            android:keyLabel=">" />
+        <Key
+            android:codes="8226"
+            android:keyLabel="•" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_alphabet" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/sym_en_in.xml b/res/xml/sym_en_in.xml
new file mode 100644
index 0000000..cebae23
--- /dev/null
+++ b/res/xml/sym_en_in.xml
@@ -0,0 +1,197 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="33"
+            android:keyEdgeFlags="left"
+            android:keyLabel="!" />
+        <Key
+            android:codes="64"
+            android:keyLabel="\@" />
+        <Key
+            android:codes="35"
+            android:keyLabel="\#" />
+        <Key
+            android:codes="8377"
+            android:keyLabel="₹" />
+        <Key
+            android:codes="37"
+            android:keyLabel="%" />
+        <Key
+            android:codes="94"
+            android:keyLabel="^" />
+        <Key
+            android:codes="38"
+            android:keyLabel="&amp;" />
+        <Key
+            android:codes="42"
+            android:keyLabel="*" />
+        <Key
+            android:codes="40"
+            android:keyLabel="(" />
+        <Key
+            android:codes="41"
+            android:keyLabel=")" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="126"
+            android:keyEdgeFlags="left"
+            android:keyLabel="~" />
+        <Key
+            android:codes="96"
+            android:keyLabel="`" />
+        <Key
+            android:codes="91"
+            android:keyLabel="[" />
+        <Key
+            android:codes="93"
+            android:keyLabel="]" />
+        <Key
+            android:codes="123"
+            android:keyLabel="{" />
+        <Key
+            android:codes="125"
+            android:keyLabel="}" />
+        <Key
+            android:codes="124"
+            android:keyLabel="|" />
+        <Key
+            android:codes="43"
+            android:keyLabel="+" />
+        <Key
+            android:codes="61"
+            android:keyLabel="=" />
+        <Key
+            android:codes="47"
+            android:keyLabel="/" />
+        <Key
+            android:codes="92"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\\" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="176"
+            android:keyEdgeFlags="left"
+            android:keyLabel="°" />
+        <Key
+            android:codes="191"
+            android:keyLabel="¿" />
+        <Key
+            android:codes="161"
+            android:keyLabel="¡" />
+        <Key
+            android:codes="247"
+            android:keyLabel="÷" />
+        <Key
+            android:codes="215"
+            android:keyLabel="×" />
+        <Key
+            android:codes="59"
+            android:keyLabel=";" />
+        <Key
+            android:codes="58"
+            android:keyLabel=":" />
+        <Key
+            android:codes="34"
+            android:keyLabel="&quot;" />
+        <Key
+            android:codes="39"
+            android:keyLabel="\&apos;" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="8364"
+            android:keyEdgeFlags="left"
+            android:keyLabel="€" />
+        <Key
+            android:codes="36"
+            android:keyLabel="$" />
+        <Key
+            android:codes="162"
+            android:keyLabel="¢" />
+        <Key
+            android:codes="163"
+            android:keyLabel="£" />
+        <Key
+            android:codes="60"
+            android:keyLabel="&lt;" />
+        <Key
+            android:codes="62"
+            android:keyLabel=">" />
+        <Key
+            android:codes="8226"
+            android:keyLabel="•" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_alphabet" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/sym_eu.xml b/res/xml/sym_eu.xml
new file mode 100644
index 0000000..48c60c9
--- /dev/null
+++ b/res/xml/sym_eu.xml
@@ -0,0 +1,197 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="33"
+            android:keyEdgeFlags="left"
+            android:keyLabel="!" />
+        <Key
+            android:codes="64"
+            android:keyLabel="\@" />
+        <Key
+            android:codes="35"
+            android:keyLabel="\#" />
+        <Key
+            android:codes="8364"
+            android:keyLabel="€" />
+        <Key
+            android:codes="37"
+            android:keyLabel="%" />
+        <Key
+            android:codes="94"
+            android:keyLabel="^" />
+        <Key
+            android:codes="38"
+            android:keyLabel="&amp;" />
+        <Key
+            android:codes="42"
+            android:keyLabel="*" />
+        <Key
+            android:codes="40"
+            android:keyLabel="(" />
+        <Key
+            android:codes="41"
+            android:keyLabel=")" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="126"
+            android:keyEdgeFlags="left"
+            android:keyLabel="~" />
+        <Key
+            android:codes="96"
+            android:keyLabel="`" />
+        <Key
+            android:codes="91"
+            android:keyLabel="[" />
+        <Key
+            android:codes="93"
+            android:keyLabel="]" />
+        <Key
+            android:codes="123"
+            android:keyLabel="{" />
+        <Key
+            android:codes="125"
+            android:keyLabel="}" />
+        <Key
+            android:codes="124"
+            android:keyLabel="|" />
+        <Key
+            android:codes="43"
+            android:keyLabel="+" />
+        <Key
+            android:codes="61"
+            android:keyLabel="=" />
+        <Key
+            android:codes="47"
+            android:keyLabel="/" />
+        <Key
+            android:codes="92"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\\" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="176"
+            android:keyEdgeFlags="left"
+            android:keyLabel="°" />
+        <Key
+            android:codes="191"
+            android:keyLabel="¿" />
+        <Key
+            android:codes="161"
+            android:keyLabel="¡" />
+        <Key
+            android:codes="247"
+            android:keyLabel="÷" />
+        <Key
+            android:codes="215"
+            android:keyLabel="×" />
+        <Key
+            android:codes="59"
+            android:keyLabel=";" />
+        <Key
+            android:codes="58"
+            android:keyLabel=":" />
+        <Key
+            android:codes="34"
+            android:keyLabel="&quot;" />
+        <Key
+            android:codes="39"
+            android:keyLabel="\&apos;" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="36"
+            android:keyEdgeFlags="left"
+            android:keyLabel="$" />
+        <Key
+            android:codes="165"
+            android:keyLabel="¥" />
+        <Key
+            android:codes="162"
+            android:keyLabel="¢" />
+        <Key
+            android:codes="163"
+            android:keyLabel="£" />
+        <Key
+            android:codes="60"
+            android:keyLabel="&lt;" />
+        <Key
+            android:codes="62"
+            android:keyLabel=">" />
+        <Key
+            android:codes="8226"
+            android:keyLabel="•" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_alphabet" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/sym_fr.xml b/res/xml/sym_fr.xml
new file mode 100644
index 0000000..b175ddb
--- /dev/null
+++ b/res/xml/sym_fr.xml
@@ -0,0 +1,197 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="33"
+            android:keyEdgeFlags="left"
+            android:keyLabel="!" />
+        <Key
+            android:codes="64"
+            android:keyLabel="\@" />
+        <Key
+            android:codes="35"
+            android:keyLabel="\#" />
+        <Key
+            android:codes="8364"
+            android:keyLabel="€" />
+        <Key
+            android:codes="37"
+            android:keyLabel="%" />
+        <Key
+            android:codes="94"
+            android:keyLabel="^" />
+        <Key
+            android:codes="38"
+            android:keyLabel="&amp;" />
+        <Key
+            android:codes="42"
+            android:keyLabel="*" />
+        <Key
+            android:codes="40"
+            android:keyLabel="(" />
+        <Key
+            android:codes="41"
+            android:keyLabel=")" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="126"
+            android:keyEdgeFlags="left"
+            android:keyLabel="~" />
+        <Key
+            android:codes="96"
+            android:keyLabel="`" />
+        <Key
+            android:codes="91"
+            android:keyLabel="[" />
+        <Key
+            android:codes="93"
+            android:keyLabel="]" />
+        <Key
+            android:codes="123"
+            android:keyLabel="{" />
+        <Key
+            android:codes="125"
+            android:keyLabel="}" />
+        <Key
+            android:codes="124"
+            android:keyLabel="|" />
+        <Key
+            android:codes="43"
+            android:keyLabel="+" />
+        <Key
+            android:codes="61"
+            android:keyLabel="=" />
+        <Key
+            android:codes="47"
+            android:keyLabel="/" />
+        <Key
+            android:codes="92"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\\" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="176"
+            android:keyEdgeFlags="left"
+            android:keyLabel="°" />
+        <Key
+            android:codes="191"
+            android:keyLabel="¿" />
+        <Key
+            android:codes="161"
+            android:keyLabel="¡" />
+        <Key
+            android:codes="247"
+            android:keyLabel="÷" />
+        <Key
+            android:codes="215"
+            android:keyLabel="×" />
+        <Key
+            android:codes="59"
+            android:keyLabel=";" />
+        <Key
+            android:codes="58"
+            android:keyLabel=":" />
+        <Key
+            android:codes="34"
+            android:keyLabel="&quot;" />
+        <Key
+            android:codes="8226"
+            android:keyLabel="•" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="36"
+            android:keyEdgeFlags="left"
+            android:keyLabel="$" />
+        <Key
+            android:codes="165"
+            android:keyLabel="¥" />
+        <Key
+            android:codes="162"
+            android:keyLabel="¢" />
+        <Key
+            android:codes="163"
+            android:keyLabel="£" />
+        <Key
+            android:codes="60"
+            android:keyLabel="&lt;" />
+        <Key
+            android:codes="62"
+            android:keyLabel=">" />
+        <Key
+            android:codes="39"
+            android:keyLabel="\&apos;" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_alphabet" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/res/xml/sym_us.xml b/res/xml/sym_us.xml
new file mode 100644
index 0000000..2091e24
--- /dev/null
+++ b/res/xml/sym_us.xml
@@ -0,0 +1,197 @@
+<!--
+ Copyright 2019 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:android="http://schemas.android.com/apk/res/android"
+    android:keyHeight="@dimen/key_height"
+    android:keyWidth="@dimen/key_width"
+    android:verticalGap="@dimen/keyboard_vertical_gap"
+    android:horizontalGap="@dimen/keyboard_horizontal_gap" >
+
+    <Row>
+        <Key
+            android:codes="33"
+            android:keyEdgeFlags="left"
+            android:keyLabel="!" />
+        <Key
+            android:codes="64"
+            android:keyLabel="\@" />
+        <Key
+            android:codes="35"
+            android:keyLabel="\#" />
+        <Key
+            android:codes="36"
+            android:keyLabel="$" />
+        <Key
+            android:codes="37"
+            android:keyLabel="%" />
+        <Key
+            android:codes="94"
+            android:keyLabel="^" />
+        <Key
+            android:codes="38"
+            android:keyLabel="&amp;" />
+        <Key
+            android:codes="42"
+            android:keyLabel="*" />
+        <Key
+            android:codes="40"
+            android:keyLabel="(" />
+        <Key
+            android:codes="41"
+            android:keyLabel=")" />
+        <Key
+            android:codes="-5"
+            android:keyEdgeFlags="right"
+            android:keyIcon="@drawable/ic_ime_delete"
+            android:keyLabel="@string/keyboardview_keycode_delete" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="126"
+            android:keyEdgeFlags="left"
+            android:keyLabel="~" />
+        <Key
+            android:codes="96"
+            android:keyLabel="`" />
+        <Key
+            android:codes="91"
+            android:keyLabel="[" />
+        <Key
+            android:codes="93"
+            android:keyLabel="]" />
+        <Key
+            android:codes="123"
+            android:keyLabel="{" />
+        <Key
+            android:codes="125"
+            android:keyLabel="}" />
+        <Key
+            android:codes="124"
+            android:keyLabel="|" />
+        <Key
+            android:codes="43"
+            android:keyLabel="+" />
+        <Key
+            android:codes="61"
+            android:keyLabel="=" />
+        <Key
+            android:codes="47"
+            android:keyLabel="/" />
+        <Key
+            android:codes="92"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\\" />
+    </Row>
+    <Row>
+        <Key
+            android:codes="176"
+            android:keyEdgeFlags="left"
+            android:keyLabel="°" />
+        <Key
+            android:codes="191"
+            android:keyLabel="¿" />
+        <Key
+            android:codes="161"
+            android:keyLabel="¡" />
+        <Key
+            android:codes="247"
+            android:keyLabel="÷" />
+        <Key
+            android:codes="215"
+            android:keyLabel="×" />
+        <Key
+            android:codes="59"
+            android:keyLabel=";" />
+        <Key
+            android:codes="58"
+            android:keyLabel=":" />
+        <Key
+            android:codes="34"
+            android:keyLabel="&quot;" />
+        <Key
+            android:codes="39"
+            android:keyLabel="\&apos;" />
+        <Key
+            android:codes="95"
+            android:keyLabel="_" />
+        <Key
+            android:codes="38"
+            android:keyEdgeFlags="right"
+            android:keyLabel="&amp;" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="8364"
+            android:keyEdgeFlags="left"
+            android:keyLabel="€" />
+        <Key
+            android:codes="165"
+            android:keyLabel="¥" />
+        <Key
+            android:codes="162"
+            android:keyLabel="¢" />
+        <Key
+            android:codes="163"
+            android:keyLabel="£" />
+        <Key
+            android:codes="60"
+            android:keyLabel="&lt;" />
+        <Key
+            android:codes="62"
+            android:keyLabel=">" />
+        <Key
+            android:codes="8226"
+            android:keyLabel="•" />
+        <Key
+            android:codes="44"
+            android:keyLabel="," />
+        <Key
+            android:codes="46"
+            android:keyLabel="." />
+        <Key
+            android:codes="45"
+            android:keyLabel="-" />
+        <Key
+            android:codes="63"
+            android:keyEdgeFlags="right"
+            android:keyLabel="\?" />
+    </Row>
+    <Row android:rowEdgeFlags="bottom" >
+        <Key
+            android:codes="-2"
+            android:keyEdgeFlags="left"
+            android:keyLabel="@string/keyboardview_keycode_mode_change"
+            android:keyIcon="@drawable/ic_ime_alphabet" />
+        <Key
+            android:codes="-1"
+            android:keyLabel="@string/keyboardview_keycode_shift"
+            android:keyIcon="@drawable/ic_ime_shift_off" />
+        <Key
+            android:codes="32"
+            android:keyIcon="@drawable/ic_ime_space"
+            android:keyLabel="@string/keyboardview_keycode_space"
+            android:keyWidth="@dimen/space_key_width" />
+        <Key
+            android:codes="-3"
+            android:keyLabel="@string/keyboardview_keycode_left"
+            android:keyIcon="@drawable/ic_ime_left_arrow" />
+        <Key
+            android:codes="-4"
+            android:keyEdgeFlags="right"
+            android:keyLabel="@string/keyboardview_keycode_right"
+            android:keyIcon="@drawable/ic_ime_right_arrow" />
+    </Row>
+</Keyboard>
diff --git a/src/com/android/inputmethod/leanback/LeanbackKeyboardContainer.java b/src/com/android/inputmethod/leanback/LeanbackKeyboardContainer.java
new file mode 100644
index 0000000..124fdf3
--- /dev/null
+++ b/src/com/android/inputmethod/leanback/LeanbackKeyboardContainer.java
@@ -0,0 +1,1570 @@
+/*
+ * Copyright (C) 2019 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.leanback;
+
+import android.animation.Animator;
+import android.animation.ValueAnimator;
+import android.speech.RecognitionListener;
+import android.os.Bundle;
+
+import com.android.inputmethod.leanback.LeanbackKeyboardController.InputListener;
+import com.android.inputmethod.leanback.voice.RecognizerView;
+import com.android.inputmethod.leanback.voice.SpeechLevelSource;
+import com.android.inputmethod.leanback.service.LeanbackImeService;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.View.OnFocusChangeListener;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.view.ViewGroup.MarginLayoutParams;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
+import android.view.animation.AccelerateInterpolator;
+import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.animation.Animator.AnimatorListener;
+import android.view.animation.Animation;
+import android.view.animation.DecelerateInterpolator;
+import android.view.animation.Interpolator;
+import android.view.animation.Transformation;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.view.inputmethod.InputMethodSubtype;
+import android.graphics.PointF;
+import android.graphics.Rect;
+import android.speech.RecognizerIntent;
+import android.speech.SpeechRecognizer;
+import android.text.TextUtils;
+import android.text.method.QwertyKeyListener;
+import android.text.style.LocaleSpan;
+import android.widget.Button;
+import android.widget.FrameLayout;
+import android.widget.HorizontalScrollView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.ScrollView;
+import android.util.Log;
+import android.inputmethodservice.Keyboard;
+import android.inputmethodservice.Keyboard.Key;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * This is the keyboard container for GridIme that contains the following views:
+ * <ul>
+ * <li>voice button</li>
+ * <li>main keyboard</li>
+ * <li>action button</li>
+ * <li>focus bubble</li>
+ * <li>touch indicator</li>
+ * <li>candidate view</li>
+ * </ul>
+ * Keyboard grid layout:
+ *
+ * <pre>
+ * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |OTH|   |
+ * |<- | - | - | - | - | - | - | - | - | ->|ER |ACT|
+ * |<- | - | - | M | A | I | N | - | - | ->|   |   |
+ * |<- | K | E | Y | B | O | A | R | D | ->|KEY|ION|
+ * |<- | - | - | - | - | - | - | - | - | ->|S  |   |
+ * </pre>
+ */
+public class LeanbackKeyboardContainer {
+
+    private static final String TAG = "LbKbContainer";
+    private static final boolean DEBUG = false;
+    private static final boolean VOICE_SUPPORTED = true;
+    private static final String IME_PRIVATE_OPTIONS_ESCAPE_NORTH_LEGACY = "EscapeNorth=1";
+    private static final String IME_PRIVATE_OPTIONS_ESCAPE_NORTH = "escapeNorth";
+    private static final String IME_PRIVATE_OPTIONS_VOICE_DISMISS_LEGACY = "VoiceDismiss=1";
+    private static final String IME_PRIVATE_OPTIONS_VOICE_DISMISS = "voiceDismiss";
+
+    /**
+     * This is the length of animations that move an indicator across the keys. Snaps and flicks
+     * will use this duration for the movement.
+     */
+    private static final long MOVEMENT_ANIMATION_DURATION = 150;
+
+    /**
+     * This interpolator is used for movement animations.
+     */
+    public static final Interpolator sMovementInterpolator = new DecelerateInterpolator(1.5f);
+
+    /**
+     * These are the states that the view can be in and affect the icon appearance. NO_TOUCH is when
+     * there are no fingers down on the input device.
+     */
+    public static final int TOUCH_STATE_NO_TOUCH = 0;
+
+    /**
+     * TOUCH_SNAP indicates that a finger is down but the indicator is still considered snapped to a
+     * letter. Once the user moves a given distance from the snapped position it will change to
+     * TOUCH_MOVE.
+     */
+    public static final int TOUCH_STATE_TOUCH_SNAP = 1;
+
+    /**
+     * TOUCH_MOVE indicates the user is moving freely around the space and is not snapped to any
+     * letter.
+     */
+    public static final int TOUCH_STATE_TOUCH_MOVE = 2;
+
+    /**
+     * CLICK indicates the selection button is currently pressed. When the button is released we
+     * will transition back to snap or no touch depending on whether there is still a finger down on
+     * the input device or not.
+     */
+    public static final int TOUCH_STATE_CLICK = 3;
+
+    // The minimum distance the user must move their finger to transition from
+    // the SNAP to the MOVE state
+    public static final double TOUCH_MOVE_MIN_DISTANCE = .1;
+
+    /**
+     * When processing a flick or dpad event it is easier to move a key width + a fudge factor than
+     * to directly compute what the next key position should be. This is the fudge factor.
+     */
+    public static final double DIRECTION_STEP_MULTIPLIER = 1.25;
+
+    /**
+     * Directions sent to event listeners.
+     */
+    public static final int DIRECTION_LEFT = 1 << 0;
+    public static final int DIRECTION_DOWN = 1 << 1;
+    public static final int DIRECTION_RIGHT = 1 << 2;
+    public static final int DIRECTION_UP = 1 << 3;
+    public static final int DIRECTION_DOWN_LEFT = DIRECTION_DOWN | DIRECTION_LEFT;
+    public static final int DIRECTION_DOWN_RIGHT = DIRECTION_DOWN | DIRECTION_RIGHT;
+    public static final int DIRECTION_UP_RIGHT = DIRECTION_UP | DIRECTION_RIGHT;
+    public static final int DIRECTION_UP_LEFT = DIRECTION_UP | DIRECTION_LEFT;
+
+    /**
+     * handler messages
+     */
+    // align selector in onStartInputView
+    private static final int MSG_START_INPUT_VIEW = 0;
+
+    // If this were a physical keyboard the width in cm. This will be mapped
+    // to the width in pixels but is representative of the mapping from the
+    // remote input to the screen. Higher values will require larger moves to
+    // get across the keyboard
+    protected static final float PHYSICAL_WIDTH_CM = 12;
+    // If this were a physical keyboard the height in cm. This will be mapped
+    // to the height in pixels but is representative of the mapping from the
+    // remote input to the screen. Higher values will require larger moves to
+    // get across the keyboard
+    protected static final float PHYSICAL_HEIGHT_CM = 5;
+
+    /**
+     * Listener for publishing voice input result to {@link LeanbackKeyboardController}
+     */
+    public static interface VoiceListener {
+        public void onVoiceResult(String result);
+    }
+
+    public static interface DismissListener {
+        public void onDismiss(boolean fromVoice);
+    }
+
+    /**
+     * Class for holding information about the currently focused key.
+     */
+    public static class KeyFocus {
+        public static final int TYPE_INVALID = -1;
+        public static final int TYPE_MAIN = 0;
+        public static final int TYPE_VOICE = 1;
+        public static final int TYPE_ACTION = 2;
+        public static final int TYPE_SUGGESTION = 3;
+
+        /**
+         * The bounding box for the current focused key/view
+         */
+        final Rect rect;
+
+        /**
+         * The index of the focused key or suggestion. This is invalid for views that don't have
+         * indexed items.
+         */
+        int index;
+
+        /**
+         * The type of key which indicates which view/keyboard the focus is in.
+         */
+        int type;
+
+        /**
+         * The key code for the focused key. This is invalid for views that don't use key codes.
+         */
+        int code;
+
+        /**
+         * The text label for the focused key. This is invalid for views that don't use labels.
+         */
+        CharSequence label;
+
+        public KeyFocus() {
+            type = TYPE_INVALID;
+            rect = new Rect();
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder bob = new StringBuilder();
+            bob.append("[type: ").append(type)
+                    .append(", index: ").append(index)
+                    .append(", code: ").append(code)
+                    .append(", label: ").append(label)
+                    .append(", rect: ").append(rect)
+                    .append("]");
+            return bob.toString();
+        }
+
+        public void set(KeyFocus focus) {
+            index = focus.index;
+            type = focus.type;
+            code = focus.code;
+            label = focus.label;
+            rect.set(focus.rect);
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) {
+                return true;
+            }
+            if (o == null || getClass() != o.getClass()) {
+                return false;
+            }
+
+            KeyFocus keyFocus = (KeyFocus) o;
+
+            if (code != keyFocus.code) {
+                return false;
+            }
+            if (index != keyFocus.index) {
+                return false;
+            }
+            if (type != keyFocus.type) {
+                return false;
+            }
+            if (label != null ? !label.equals(keyFocus.label) : keyFocus.label != null) {
+                return false;
+            }
+            if (!rect.equals(keyFocus.rect)) {
+                return false;
+            }
+
+            return true;
+        }
+
+        @Override
+        public int hashCode() {
+            int result = rect.hashCode();
+            result = 31 * result + index;
+            result = 31 * result + type;
+            result = 31 * result + code;
+            result = 31 * result + (label != null ? label.hashCode() : 0);
+            return result;
+        }
+    }
+
+    private class VoiceIntroAnimator {
+        private AnimatorListener mEnterListener;
+        private AnimatorListener mExitListener;
+        private ValueAnimator mValueAnimator;
+
+        public VoiceIntroAnimator(AnimatorListener enterListener, AnimatorListener exitListener) {
+            mEnterListener = enterListener;
+            mExitListener = exitListener;
+
+            mValueAnimator = ValueAnimator.ofFloat(mAlphaOut, mAlphaIn);
+            mValueAnimator.setDuration(mVoiceAnimDur);
+            mValueAnimator.setInterpolator(new AccelerateInterpolator());
+        }
+
+        void startEnterAnimation() {
+            if (!isVoiceVisible() && !mValueAnimator.isRunning()) {
+                start(true);
+            }
+        }
+
+        void startExitAnimation() {
+            if (isVoiceVisible() && !mValueAnimator.isRunning()) {
+                start(false);
+            }
+        }
+
+        private void start(final boolean enterVoice) {
+            // TODO make animation continous
+            mValueAnimator.cancel();
+
+            mValueAnimator.removeAllListeners();
+            mValueAnimator.addListener(enterVoice ? mEnterListener : mExitListener);
+            mValueAnimator.removeAllUpdateListeners();
+            mValueAnimator.addUpdateListener(new AnimatorUpdateListener() {
+
+                @Override
+                public void onAnimationUpdate(ValueAnimator animation) {
+                    float progress = (Float) mValueAnimator.getAnimatedValue();
+                    float antiProgress = mAlphaIn + mAlphaOut - progress;
+
+                    float kbAlpha = enterVoice ? antiProgress : progress;
+                    float voiceAlpha = enterVoice ? progress : antiProgress;
+
+                    mMainKeyboardView.setAlpha(kbAlpha);
+                    mActionButtonView.setAlpha(kbAlpha);
+                    mVoiceButtonView.setAlpha(voiceAlpha);
+
+                    if (progress == mAlphaOut) {
+                        // first pass
+                        if (enterVoice) {
+                            mVoiceButtonView.setVisibility(View.VISIBLE);
+                        } else {
+                            mMainKeyboardView.setVisibility(View.VISIBLE);
+                            mActionButtonView.setVisibility(View.VISIBLE);
+                        }
+                    } else if (progress == mAlphaIn) {
+                        // done
+                        if (enterVoice) {
+                            mMainKeyboardView.setVisibility(View.INVISIBLE);
+                            mActionButtonView.setVisibility(View.INVISIBLE);
+                        } else {
+                            mVoiceButtonView.setVisibility(View.INVISIBLE);
+                        }
+                    }
+                }
+            });
+
+            mValueAnimator.start();
+        }
+    }
+
+    /**
+     * keyboard flags based on the edittext types
+     */
+    // if suggestions are enabled and suggestion view is visible
+    private boolean mSuggestionsEnabled;
+    // if auto entering space after period or suggestions is enabled
+    private boolean mAutoEnterSpaceEnabled;
+    // if voice button is enabled
+    private boolean mVoiceEnabled;
+    // initial main keyboard to show for the specific edittext
+    private Keyboard mInitialMainKeyboard;
+    // text resource id of the enter key. If set to 0, show enter key image
+    private int mEnterKeyTextResId;
+    private CharSequence mEnterKeyText;
+
+    /**
+     * This animator controls the way the touch indicator grows and shrinks when changing states.
+     */
+    private ValueAnimator mSelectorAnimator;
+
+    /**
+     * The current state of touch.
+     */
+    private int mTouchState = TOUCH_STATE_NO_TOUCH;
+
+    private VoiceListener mVoiceListener;
+
+    private DismissListener mDismissListener;
+
+    private LeanbackImeService mContext;
+    private RelativeLayout mRootView;
+
+    private View mKeyboardsContainer;
+    private View mSuggestionsBg;
+    private HorizontalScrollView mSuggestionsContainer;
+    private LinearLayout mSuggestions;
+    private LeanbackKeyboardView mMainKeyboardView;
+    private Button mActionButtonView;
+    private ScaleAnimation mSelectorAnimation;
+    private View mSelector;
+    private float mOverestimate;
+
+    // The modeled physical position of the current selection in cm
+    private PointF mPhysicalSelectPos = new PointF(2, .5f);
+    // The position of the touch indicator in cm
+    private PointF mPhysicalTouchPos = new PointF(2, .5f);
+    // A point for doing temporary calculations
+    private PointF mTempPoint = new PointF();
+
+    private KeyFocus mCurrKeyInfo = new KeyFocus();
+    private KeyFocus mDownKeyInfo = new KeyFocus();
+    private KeyFocus mTempKeyInfo = new KeyFocus();
+
+    private LeanbackKeyboardView mPrevView;
+    private Rect mRect = new Rect();
+    private Float mX;
+    private Float mY;
+    private int mMiniKbKeyIndex;
+
+    private final int mClickAnimDur;
+    private final int mVoiceAnimDur;
+    private final float mAlphaIn;
+    private final float mAlphaOut;
+
+    private Keyboard mAbcKeyboard;
+    private Keyboard mSymKeyboard;
+    private Keyboard mNumKeyboard;
+
+    // if we should capitalize the first letter in each sentence
+    private boolean mCapSentences;
+
+    // if we should capitalize the first letter in each word
+    private boolean mCapWords;
+
+    // if we should capitalize every character
+    private boolean mCapCharacters;
+
+    // if voice is on
+    private boolean mVoiceOn;
+
+    // Whether to allow escaping north or not
+    private boolean mEscapeNorthEnabled;
+
+    // Whether to dismiss when voice button is pressed
+    private boolean mVoiceKeyDismissesEnabled;
+
+    /**
+     * Voice
+     */
+    private Intent mRecognizerIntent;
+    private SpeechRecognizer mSpeechRecognizer;
+    private SpeechLevelSource mSpeechLevelSource;
+    private RecognizerView mVoiceButtonView;
+
+    private class ScaleAnimation extends Animation {
+        private final ViewGroup.LayoutParams mParams;
+        private final View mView;
+        private float mStartX;
+        private float mStartY;
+        private float mStartWidth;
+        private float mStartHeight;
+        private float mEndX;
+        private float mEndY;
+        private float mEndWidth;
+        private float mEndHeight;
+
+        public ScaleAnimation(FrameLayout view) {
+            mView = view;
+            mParams = view.getLayoutParams();
+            setDuration(MOVEMENT_ANIMATION_DURATION);
+            setInterpolator(sMovementInterpolator);
+        }
+
+        public void setAnimationBounds(float x, float y, float width, float height) {
+            mEndX = x;
+            mEndY = y;
+            mEndWidth = width;
+            mEndHeight = height;
+        }
+
+        @Override
+        protected void applyTransformation(float interpolatedTime, Transformation t) {
+            if (interpolatedTime == 0) {
+                mStartX = mView.getX();
+                mStartY = mView.getY();
+                mStartWidth = mParams.width;
+                mStartHeight = mParams.height;
+            } else {
+                setValues(((mEndX - mStartX) * interpolatedTime + mStartX),
+                    ((mEndY - mStartY) * interpolatedTime + mStartY),
+                    ((int)((mEndWidth - mStartWidth) * interpolatedTime + mStartWidth)),
+                    ((int)((mEndHeight - mStartHeight) * interpolatedTime + mStartHeight)));
+            }
+        }
+
+        public void setValues(float x, float y, float width, float height) {
+            mView.setX(x);
+            mView.setY(y);
+            mParams.width = (int)(width);
+            mParams.height = (int)(height);
+            mView.setLayoutParams(mParams);
+            mView.requestLayout();
+        }
+    };
+
+    private AnimatorListener mVoiceEnterListener = new AnimatorListener() {
+
+        @Override
+        public void onAnimationStart(Animator animation) {
+            mSelector.setVisibility(View.INVISIBLE);
+            startRecognition(mContext);
+        }
+
+        @Override
+        public void onAnimationRepeat(Animator animation) {
+        }
+
+        @Override
+        public void onAnimationEnd(Animator animation) {
+        }
+
+        @Override
+        public void onAnimationCancel(Animator animation) {
+        }
+    };
+
+    private AnimatorListener mVoiceExitListener = new AnimatorListener() {
+
+        @Override
+        public void onAnimationStart(Animator animation) {
+            mVoiceButtonView.showNotListening();
+            mSpeechRecognizer.cancel();
+            mSpeechRecognizer.setRecognitionListener(null);
+            mVoiceOn = false;
+        }
+
+        @Override
+        public void onAnimationRepeat(Animator animation) {
+        }
+
+        @Override
+        public void onAnimationEnd(Animator animation) {
+            mSelector.setVisibility(View.VISIBLE);
+        }
+
+        @Override
+        public void onAnimationCancel(Animator animation) {
+        }
+    };
+
+    private final VoiceIntroAnimator mVoiceAnimator;
+
+    // Tracks whether or not a touch event is in progress. This is true while
+    // a finger is down on the pad.
+    private boolean mTouchDown = false;
+
+    public LeanbackKeyboardContainer(Context context) {
+        mContext = (LeanbackImeService) context;
+
+        final Resources res = mContext.getResources();
+        mVoiceAnimDur = res.getInteger(R.integer.voice_anim_duration);
+        mAlphaIn = res.getFraction(R.fraction.alpha_in, 1, 1);
+        mAlphaOut = res.getFraction(R.fraction.alpha_out, 1, 1);
+
+        mVoiceAnimator = new VoiceIntroAnimator(mVoiceEnterListener, mVoiceExitListener);
+
+        initKeyboards();
+
+        mRootView = (RelativeLayout) mContext.getLayoutInflater()
+                .inflate(R.layout.root_leanback, null);
+        mKeyboardsContainer = mRootView.findViewById(R.id.keyboard);
+        mSuggestionsBg = mRootView.findViewById(R.id.candidate_background);
+        mSuggestionsContainer =
+                (HorizontalScrollView) mRootView.findViewById(R.id.suggestions_container);
+        mSuggestions = (LinearLayout) mSuggestionsContainer.findViewById(R.id.suggestions);
+
+        mMainKeyboardView = (LeanbackKeyboardView) mRootView.findViewById(R.id.main_keyboard);
+        mVoiceButtonView = (RecognizerView) mRootView.findViewById(R.id.voice);
+
+        mActionButtonView = (Button) mRootView.findViewById(R.id.enter);
+
+        mSelector = mRootView.findViewById(R.id.selector);
+        mSelectorAnimation = new ScaleAnimation((FrameLayout) mSelector);
+
+        mOverestimate = mContext.getResources().getFraction(R.fraction.focused_scale, 1, 1);
+        float scale = context.getResources().getFraction(R.fraction.clicked_scale, 1, 1);
+        mClickAnimDur = context.getResources().getInteger(R.integer.clicked_anim_duration);
+        mSelectorAnimator = ValueAnimator.ofFloat(1.0f, scale);
+        mSelectorAnimator.setDuration(mClickAnimDur);
+        mSelectorAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+            @Override
+            public void onAnimationUpdate(ValueAnimator animation) {
+                float scale = (Float) animation.getAnimatedValue();
+                mSelector.setScaleX(scale);
+                mSelector.setScaleY(scale);
+            }
+        });
+
+        mSpeechLevelSource = new SpeechLevelSource();
+        mVoiceButtonView.setSpeechLevelSource(mSpeechLevelSource);
+        mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(mContext);
+        mVoiceButtonView.setCallback(new RecognizerView.Callback() {
+            @Override
+            public void onStartRecordingClicked() {
+                startVoiceRecording();
+            }
+
+            @Override
+            public void onStopRecordingClicked() {
+                cancelVoiceRecording();
+            }
+
+            @Override
+            public void onCancelRecordingClicked() {
+                cancelVoiceRecording();
+            }
+        });
+
+    }
+
+    public void startVoiceRecording() {
+        if (mVoiceEnabled) {
+            if (mVoiceKeyDismissesEnabled) {
+                if (DEBUG) Log.v(TAG, "Voice Dismiss");
+                mDismissListener.onDismiss(true);
+            } else {
+                mVoiceAnimator.startEnterAnimation();
+            }
+        }
+    }
+
+    public void cancelVoiceRecording() {
+        mVoiceAnimator.startExitAnimation();
+    }
+
+    public void resetVoice() {
+        mMainKeyboardView.setAlpha(mAlphaIn);
+        mActionButtonView.setAlpha(mAlphaIn);
+        mVoiceButtonView.setAlpha(mAlphaOut);
+
+        mMainKeyboardView.setVisibility(View.VISIBLE);
+        mActionButtonView.setVisibility(View.VISIBLE);
+        mVoiceButtonView.setVisibility(View.INVISIBLE);
+    }
+
+    public boolean isVoiceVisible() {
+        return mVoiceButtonView.getVisibility() == View.VISIBLE;
+    }
+
+    private void initKeyboards() {
+        Locale locale = Locale.getDefault();
+
+        if (isMatch(locale, LeanbackLocales.QWERTY_GB)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_en_gb);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_en_gb);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_IN)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_en_in);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_en_in);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_ES_EU)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_es_eu);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_eu);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_ES_US)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_es_us);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_us);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_AZ)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_az);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_eu);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_CA)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_ca);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_eu);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_DA)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_da);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_eu);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_ET)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_et);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_eu);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_FI)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_fi);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_eu);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_NB)) {
+            // in the LatinIME nb uses the US symbols (usd instead of euro)
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_nb);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_us);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_SV)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_sv);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_eu);
+        } else if (isMatch(locale, LeanbackLocales.QWERTY_US)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_us);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_us);
+        } else if (isMatch(locale, LeanbackLocales.QWERTZ_CH)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwertz_ch);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_eu);
+        } else if (isMatch(locale, LeanbackLocales.QWERTZ)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwertz);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_eu);
+        } else if (isMatch(locale, LeanbackLocales.AZERTY)) {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.azerty);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_azerty);
+        } else {
+            mAbcKeyboard = new Keyboard(mContext, R.xml.qwerty_eu);
+            mSymKeyboard = new Keyboard(mContext, R.xml.sym_eu);
+        }
+
+        mNumKeyboard = new Keyboard(mContext, R.xml.number);
+    }
+
+    private boolean isMatch(Locale locale, Locale[] list) {
+        for (Locale compare : list) {
+            // comparison language is either blank or they match
+            if (TextUtils.isEmpty(compare.getLanguage()) ||
+                    TextUtils.equals(locale.getLanguage(), compare.getLanguage())) {
+                // comparison country is either blank or they match
+                if (TextUtils.isEmpty(compare.getCountry()) ||
+                            TextUtils.equals(locale.getCountry(), compare.getCountry())) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * This method is called when we start the input at a NEW input field to set up the IME options,
+     * such as suggestions, voice, and action
+     */
+    public void onStartInput(EditorInfo attribute) {
+        setImeOptions(mContext.getResources(), attribute);
+        mVoiceOn = false;
+    }
+
+    /**
+     * This method is called whenever we bring up the IME at an input field.
+     */
+    public void onStartInputView() {
+        // This must be done here because modifying the views before it is
+        // shown can cause selection handles to be shown if using a USB
+        // keyboard in a WebView.
+        clearSuggestions();
+
+        RelativeLayout.LayoutParams lp =
+                (RelativeLayout.LayoutParams) mKeyboardsContainer.getLayoutParams();
+        if (mSuggestionsEnabled) {
+            lp.removeRule(RelativeLayout.ALIGN_PARENT_TOP);
+            mSuggestionsContainer.setVisibility(View.VISIBLE);
+            mSuggestionsBg.setVisibility(View.VISIBLE);
+        } else {
+            lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
+            mSuggestionsContainer.setVisibility(View.GONE);
+            mSuggestionsBg.setVisibility(View.GONE);
+        }
+        mKeyboardsContainer.setLayoutParams(lp);
+
+        mMainKeyboardView.setKeyboard(mInitialMainKeyboard);
+        // TODO fix this for number keyboard
+        mVoiceButtonView.setMicEnabled(mVoiceEnabled);
+        resetVoice();
+        dismissMiniKeyboard();
+
+        // setImeOptions will be called before this, setting the text resource value
+        if (!TextUtils.isEmpty(mEnterKeyText)) {
+            mActionButtonView.setText(mEnterKeyText);
+            mActionButtonView.setContentDescription(mEnterKeyText);
+        } else {
+            mActionButtonView.setText(mEnterKeyTextResId);
+            mActionButtonView.setContentDescription(mContext.getString(mEnterKeyTextResId));
+        }
+
+        if (mCapCharacters) {
+            setShiftState(LeanbackKeyboardView.SHIFT_LOCKED);
+        } else if (mCapSentences || mCapWords) {
+            setShiftState(LeanbackKeyboardView.SHIFT_ON);
+        } else {
+            setShiftState(LeanbackKeyboardView.SHIFT_OFF);
+        }
+    }
+
+    /**
+     * This method is called when the keyboard layout is complete, to set up the initial focus and
+     * visibility. This method gets called later than {@link onStartInput} and
+     * {@link onStartInputView}.
+     */
+    public void onInitInputView() {
+        resetFocusCursor();
+        mSelector.setVisibility(View.VISIBLE);
+    }
+
+    public RelativeLayout getView() {
+        return mRootView;
+    }
+
+    public void setVoiceListener(VoiceListener listener) {
+        mVoiceListener = listener;
+    }
+
+    public void setDismissListener(DismissListener listener) {
+        mDismissListener = listener;
+    }
+
+    private void setImeOptions(Resources resources, EditorInfo attribute) {
+        mSuggestionsEnabled = true;
+        mAutoEnterSpaceEnabled = true;
+        mVoiceEnabled = true;
+        mInitialMainKeyboard = mAbcKeyboard;
+        mEscapeNorthEnabled = false;
+        mVoiceKeyDismissesEnabled = false;
+
+        // set keyboard properties
+        switch (LeanbackUtils.getInputTypeClass(attribute)) {
+            case EditorInfo.TYPE_CLASS_NUMBER:
+            case EditorInfo.TYPE_CLASS_DATETIME:
+            case EditorInfo.TYPE_CLASS_PHONE:
+                mSuggestionsEnabled = false;
+                mVoiceEnabled = false;
+                // TODO use number keyboard for these input types
+                mInitialMainKeyboard = mAbcKeyboard;
+                break;
+            case EditorInfo.TYPE_CLASS_TEXT:
+                switch (LeanbackUtils.getInputTypeVariation(attribute)) {
+                    case EditorInfo.TYPE_TEXT_VARIATION_PASSWORD:
+                    case EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD:
+                    case EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD:
+                    case EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME:
+                        mSuggestionsEnabled = false;
+                        mVoiceEnabled = false;
+                        mInitialMainKeyboard = mAbcKeyboard;
+                        break;
+                    case EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS:
+                    case EditorInfo.TYPE_TEXT_VARIATION_URI:
+                    case EditorInfo.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT:
+                    case EditorInfo.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS:
+                        mSuggestionsEnabled = true;
+                        mAutoEnterSpaceEnabled = false;
+                        mVoiceEnabled = false;
+                        mInitialMainKeyboard = mAbcKeyboard;
+                        break;
+                }
+                break;
+        }
+
+        if (mSuggestionsEnabled) {
+            mSuggestionsEnabled = (attribute.inputType
+                    & EditorInfo.TYPE_TEXT_FLAG_NO_SUGGESTIONS) == 0;
+        }
+        if (mAutoEnterSpaceEnabled) {
+            mAutoEnterSpaceEnabled = mSuggestionsEnabled && mAutoEnterSpaceEnabled;
+        }
+        mCapSentences = (attribute.inputType
+                & EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES) != 0;
+        mCapWords = ((attribute.inputType & EditorInfo.TYPE_TEXT_FLAG_CAP_WORDS) != 0) ||
+                (LeanbackUtils.getInputTypeVariation(attribute)
+                    == EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME);
+        mCapCharacters = (attribute.inputType
+                & EditorInfo.TYPE_TEXT_FLAG_CAP_CHARACTERS) != 0;
+
+        if (attribute.privateImeOptions != null) {
+            if (attribute.privateImeOptions.contains(IME_PRIVATE_OPTIONS_ESCAPE_NORTH) ||
+                    attribute.privateImeOptions.contains(
+                            IME_PRIVATE_OPTIONS_ESCAPE_NORTH_LEGACY)) {
+                mEscapeNorthEnabled = true;
+            }
+            if (attribute.privateImeOptions.contains(IME_PRIVATE_OPTIONS_VOICE_DISMISS) ||
+                    attribute.privateImeOptions.contains(
+                            IME_PRIVATE_OPTIONS_VOICE_DISMISS_LEGACY)) {
+                mVoiceKeyDismissesEnabled = true;
+            }
+        }
+
+        if (DEBUG) {
+            Log.d(TAG, "sugg: " + mSuggestionsEnabled + " | capSentences: " + mCapSentences
+                    + " | capWords: " + mCapWords + " | capChar: " + mCapCharacters
+                    + " | escapeNorth: " + mEscapeNorthEnabled
+                    + " | voiceDismiss : " + mVoiceKeyDismissesEnabled
+            );
+        }
+
+        // set enter key
+        mEnterKeyText = attribute.actionLabel;
+        if (TextUtils.isEmpty(mEnterKeyText)) {
+            switch (LeanbackUtils.getImeAction(attribute)) {
+                case EditorInfo.IME_ACTION_GO:
+                    mEnterKeyTextResId = R.string.label_go_key;
+                    break;
+                case EditorInfo.IME_ACTION_NEXT:
+                    mEnterKeyTextResId = R.string.label_next_key;
+                    break;
+                case EditorInfo.IME_ACTION_SEARCH:
+                    mEnterKeyTextResId = R.string.label_search_key;
+                    break;
+                case EditorInfo.IME_ACTION_SEND:
+                    mEnterKeyTextResId = R.string.label_send_key;
+                    break;
+                default:
+                    mEnterKeyTextResId = R.string.label_done_key;
+                    break;
+            }
+        }
+
+        if (!VOICE_SUPPORTED) {
+            mVoiceEnabled = false;
+        }
+    }
+
+    public boolean isVoiceEnabled() {
+        return mVoiceEnabled;
+    }
+
+    public boolean areSuggestionsEnabled() {
+        return mSuggestionsEnabled;
+    }
+
+    public boolean enableAutoEnterSpace() {
+        return mAutoEnterSpaceEnabled;
+    }
+
+    private PointF getAlignmentPosition(float posXCm, float posYCm, PointF result) {
+        float width = mRootView.getWidth() - mRootView.getPaddingRight()
+                - mRootView.getPaddingLeft()
+                - mContext.getResources().getDimension(R.dimen.selector_size);
+        float height = mRootView.getHeight() - mRootView.getPaddingTop()
+                - mRootView.getPaddingBottom()
+                - mContext.getResources().getDimension(R.dimen.selector_size);
+        result.x = posXCm / PHYSICAL_WIDTH_CM * width + mRootView.getPaddingLeft();
+        result.y = posYCm / PHYSICAL_HEIGHT_CM * height + mRootView.getPaddingTop();
+        return result;
+    }
+
+    private void getPhysicalPosition(float x, float y, PointF result) {
+        x -= mSelector.getWidth() / 2;
+        y -= mSelector.getHeight() / 2;
+        float width = mRootView.getWidth() - mRootView.getPaddingRight()
+                - mRootView.getPaddingLeft()
+                - mContext.getResources().getDimension(R.dimen.selector_size);
+        float height = mRootView.getHeight() - mRootView.getPaddingTop()
+                - mRootView.getPaddingBottom()
+                - mContext.getResources().getDimension(R.dimen.selector_size);
+        float posXCm = (x - mRootView.getPaddingLeft()) * PHYSICAL_WIDTH_CM / width;
+        float posYCm = (y - mRootView.getPaddingTop()) * PHYSICAL_HEIGHT_CM / height;
+        result.x = posXCm;
+        result.y = posYCm;
+    }
+
+    private void offsetRect(Rect rect, View view) {
+        rect.left = 0;
+        rect.top = 0;
+        rect.right = view.getWidth();
+        rect.bottom = view.getHeight();
+        ((ViewGroup) mRootView).offsetDescendantRectToMyCoords(view, rect);
+    }
+
+    /**
+     * Finds the {@link KeyFocus} on screen that best matches the given pixel positions
+     *
+     * @param x position in pixels, if null, use the last valid x value
+     * @param y position in pixels, if null, use the last valid y value
+     * @param focus the focus object to update with the result
+     * @return true if focus was successfully found, false otherwise.
+    */
+    public boolean getBestFocus(Float x, Float y, KeyFocus focus) {
+        boolean validFocus = true;
+
+        offsetRect(mRect, mActionButtonView);
+        int actionLeft = mRect.left;
+
+        offsetRect(mRect, mMainKeyboardView);
+        int keyboardTop = mRect.top;
+
+        // use last if invalid
+        x = (x == null) ? mX : x;
+        y = (y == null) ? mY : y;
+
+        final int count = mSuggestions.getChildCount();
+        if (y < keyboardTop && count > 0 && mSuggestionsEnabled) {
+            for (int i = 0; i < count; i++) {
+                View suggestView = mSuggestions.getChildAt(i);
+                offsetRect(mRect, suggestView);
+                if (x < mRect.right || i+1 == count) {
+                    suggestView.requestFocus();
+                    LeanbackUtils.sendAccessibilityEvent(suggestView.findViewById(R.id.text), true);
+                    configureFocus(focus, mRect, i, KeyFocus.TYPE_SUGGESTION);
+                    break;
+                }
+            }
+        } else if (y < keyboardTop && mEscapeNorthEnabled) {
+            validFocus = false;
+            escapeNorth();
+        } else if (x > actionLeft) {
+            // closest is the action button
+            offsetRect(mRect, mActionButtonView);
+            configureFocus(focus, mRect, 0, KeyFocus.TYPE_ACTION);
+        } else {
+            mX = x;
+            mY = y;
+
+            // In the main view
+            offsetRect(mRect, mMainKeyboardView);
+            x = (x - mRect.left);
+            y = (y - mRect.top);
+
+            int index = mMainKeyboardView.getNearestIndex(x, y);
+            Key key = mMainKeyboardView.getKey(index);
+            configureFocus(focus, mRect, index, key, KeyFocus.TYPE_MAIN);
+        }
+
+        return validFocus;
+    }
+
+    private void escapeNorth() {
+        if (DEBUG) Log.v(TAG, "Escaping north");
+        mDismissListener.onDismiss(false);
+    }
+
+    private void configureFocus(KeyFocus focus, Rect rect, int index, int type) {
+        focus.type = type;
+        focus.index = index;
+        focus.rect.set(rect);
+    }
+
+    private void configureFocus(KeyFocus focus, Rect rect, int index, Key key, int type) {
+        focus.type = type;
+        if (key == null) {
+            return;
+        }
+        if (key.codes != null) {
+            focus.code = key.codes[0];
+        } else {
+            focus.code = KeyEvent.KEYCODE_UNKNOWN;
+        }
+        focus.index = index;
+        focus.label = key.label;
+        focus.rect.left = key.x + rect.left;
+        focus.rect.top = key.y + rect.top;
+        focus.rect.right = focus.rect.left + key.width;
+        focus.rect.bottom = focus.rect.top + key.height;
+    }
+
+    private void setKbFocus(KeyFocus focus, boolean forceFocusChange, boolean animate) {
+        if (focus.equals(mCurrKeyInfo) && !forceFocusChange) {
+            // Nothing changed
+            return;
+        }
+        LeanbackKeyboardView prevView = mPrevView;
+        mPrevView = null;
+        boolean overestimateWidth = false;
+        boolean overestimateHeight = false;
+
+        switch (focus.type) {
+            case KeyFocus.TYPE_VOICE:
+                mVoiceButtonView.setMicFocused(true);
+                dismissMiniKeyboard();
+                break;
+            case KeyFocus.TYPE_ACTION:
+                LeanbackUtils.sendAccessibilityEvent(mActionButtonView, true);
+                dismissMiniKeyboard();
+                break;
+            case KeyFocus.TYPE_SUGGESTION:
+                dismissMiniKeyboard();
+                break;
+            case KeyFocus.TYPE_MAIN:
+                overestimateHeight = true;
+                overestimateWidth = (focus.code != LeanbackKeyboardView.ASCII_SPACE);
+                mMainKeyboardView.setFocus(focus.index, mTouchState == TOUCH_STATE_CLICK, overestimateWidth);
+                mPrevView = mMainKeyboardView;
+                break;
+        }
+
+        if (prevView != null && prevView != mPrevView) {
+            prevView.setFocus(-1, mTouchState == TOUCH_STATE_CLICK);
+        }
+
+        setSelectorToFocus(focus.rect, overestimateWidth, overestimateHeight, animate);
+        mCurrKeyInfo.set(focus);
+    }
+
+    public void setSelectorToFocus(Rect rect, boolean overestimateWidth, boolean overestimateHeight,
+            boolean animate) {
+        if (mSelector.getWidth() == 0 || mSelector.getHeight() == 0
+                || rect.width() == 0 || rect.height() == 0) {
+            return;
+        }
+
+        float width = rect.width();
+        float height = rect.height();
+
+        if (overestimateHeight) {
+            height *= mOverestimate;
+        }
+        if (overestimateWidth) {
+            width *= mOverestimate;
+        }
+
+        float major = Math.max(width, height);
+        float minor = Math.min(width, height);
+        // if the difference between the width and height is less than 10%,
+        // keep the width and height the same.
+        if (major / minor < 1.1) {
+            width = height = Math.max(width, height);
+        }
+
+        float x = rect.exactCenterX() - width/2;
+        float y = rect.exactCenterY() - height/2;
+        mSelectorAnimation.cancel();
+        if (animate) {
+            mSelectorAnimation.reset();
+            mSelectorAnimation.setAnimationBounds(x, y, width, height);
+            mSelector.startAnimation(mSelectorAnimation);
+        } else {
+            mSelectorAnimation.setValues(x, y, width, height);
+        }
+    }
+
+    public Keyboard.Key getKey(int type, int index) {
+        return (type == KeyFocus.TYPE_MAIN) ? mMainKeyboardView.getKey(index) : null;
+    }
+
+    public int getCurrKeyCode() {
+        Key key = getKey(mCurrKeyInfo.type, mCurrKeyInfo.index);
+        if (key != null) {
+            return key.codes[0];
+        }
+        return 0;
+    }
+
+    public int getTouchState() {
+        return mTouchState;
+    }
+
+    /**
+     * Set the view state which affects how the touch indicator is drawn. This code currently
+     * assumes the state changes below for simplicity. If the state machine is updated this code
+     * should probably be checked to ensure it still works. NO_TOUCH -> on touch start -> SNAP SNAP
+     * -> on enough movement -> MOVE MOVE -> on hover long enough -> SNAP SNAP -> on a click down ->
+     * CLICK CLICK -> on click released -> SNAP ANY STATE -> on touch end -> NO_TOUCH
+     *
+     * @param state The new state to transition to
+     */
+    public void setTouchState(int state) {
+        switch (state) {
+            case TOUCH_STATE_NO_TOUCH:
+                if (mTouchState == TOUCH_STATE_TOUCH_MOVE || mTouchState == TOUCH_STATE_CLICK) {
+                    // If the touch indicator was small make it big again
+                    mSelectorAnimator.reverse();
+                }
+                break;
+            case TOUCH_STATE_TOUCH_SNAP:
+                if (mTouchState == TOUCH_STATE_CLICK) {
+                    // And make the touch indicator big again
+                    mSelectorAnimator.reverse();
+                } else if (mTouchState == TOUCH_STATE_TOUCH_MOVE) {
+                    // Just make the touch indicator big
+                    mSelectorAnimator.reverse();
+                }
+                break;
+            case TOUCH_STATE_TOUCH_MOVE:
+                if (mTouchState == TOUCH_STATE_NO_TOUCH || mTouchState == TOUCH_STATE_TOUCH_SNAP) {
+                    // Shrink the touch indicator
+                    mSelectorAnimator.start();
+                }
+                break;
+            case TOUCH_STATE_CLICK:
+                if (mTouchState == TOUCH_STATE_NO_TOUCH || mTouchState == TOUCH_STATE_TOUCH_SNAP) {
+                    // Shrink the touch indicator
+                    mSelectorAnimator.start();
+                }
+                break;
+        }
+        setTouchStateInternal(state);
+        setKbFocus(mCurrKeyInfo, true, true);
+    }
+
+    public KeyFocus getCurrFocus() {
+        return mCurrKeyInfo;
+    }
+
+    public void onVoiceClick() {
+        if (mVoiceButtonView != null) {
+            mVoiceButtonView.onClick();
+        }
+    }
+
+    public void onModeChangeClick() {
+        dismissMiniKeyboard();
+        if (mMainKeyboardView.getKeyboard().equals(mSymKeyboard)) {
+            mMainKeyboardView.setKeyboard(mAbcKeyboard);
+        } else {
+            mMainKeyboardView.setKeyboard(mSymKeyboard);
+        }
+    }
+
+    public void onShiftClick() {
+        setShiftState(mMainKeyboardView.isShifted() ? LeanbackKeyboardView.SHIFT_OFF
+                : LeanbackKeyboardView.SHIFT_ON);
+    }
+
+    public void onTextEntry() {
+        // reset shift if caps is not on
+        if (mMainKeyboardView.isShifted()) {
+            if (!isCapsLockOn() && !mCapCharacters) {
+                setShiftState(LeanbackKeyboardView.SHIFT_OFF);
+            }
+        } else {
+            if (isCapsLockOn() || mCapCharacters) {
+                setShiftState(LeanbackKeyboardView.SHIFT_LOCKED);
+            }
+        }
+
+        if (dismissMiniKeyboard()) {
+            moveFocusToIndex(mMiniKbKeyIndex, KeyFocus.TYPE_MAIN);
+        }
+    }
+
+    public void onSpaceEntry() {
+        if (mMainKeyboardView.isShifted()) {
+            if (!isCapsLockOn() && !mCapCharacters && !mCapWords) {
+                setShiftState(LeanbackKeyboardView.SHIFT_OFF);
+            }
+        } else {
+            if (isCapsLockOn() || mCapCharacters || mCapWords) {
+                setShiftState(LeanbackKeyboardView.SHIFT_ON);
+            }
+        }
+    }
+
+    public void onPeriodEntry() {
+        if (mMainKeyboardView.isShifted()) {
+            if (!isCapsLockOn() && !mCapCharacters && !mCapWords && !mCapSentences) {
+                setShiftState(LeanbackKeyboardView.SHIFT_OFF);
+            }
+        } else {
+            if (isCapsLockOn() || mCapCharacters || mCapWords || mCapSentences) {
+                setShiftState(LeanbackKeyboardView.SHIFT_ON);
+            }
+        }
+    }
+
+    public boolean dismissMiniKeyboard() {
+        return mMainKeyboardView.dismissMiniKeyboard();
+    }
+
+    public boolean isCurrKeyShifted() {
+        return mMainKeyboardView.isShifted();
+    }
+
+    public CharSequence getSuggestionText(int index) {
+        CharSequence text = null;
+
+        if(index >= 0 && index < mSuggestions.getChildCount()){
+            Button suggestion =
+                    (Button) mSuggestions.getChildAt(index).findViewById(R.id.text);
+            if (suggestion != null) {
+                text = suggestion.getText();
+            }
+        }
+
+        return text;
+    }
+
+    /**
+     * This method sets the keyboard focus and update the layout of the new focus
+     *
+     * @param focus the new focus of the keyboard
+     */
+    public void setFocus(KeyFocus focus) {
+        setKbFocus(focus, false, true);
+    }
+
+    public boolean getNextFocusInDirection(int direction, KeyFocus startFocus, KeyFocus nextFocus) {
+        boolean validNextFocus = true;
+
+        switch (startFocus.type) {
+            case KeyFocus.TYPE_VOICE:
+                // TODO move between voice button and kb button
+                break;
+            case KeyFocus.TYPE_ACTION:
+                offsetRect(mRect, mMainKeyboardView);
+                if ((direction & DIRECTION_LEFT) != 0) {
+                    // y is null, so we use the last y.  This way a user can hold left and wrap
+                    // around the keyboard while staying in the same row
+                    validNextFocus = getBestFocus((float) mRect.right, null, nextFocus);
+                } else if ((direction & DIRECTION_UP) != 0) {
+                    offsetRect(mRect, mSuggestions);
+                    validNextFocus = getBestFocus(
+                            (float) startFocus.rect.centerX(), (float) mRect.centerY(), nextFocus);
+                }
+                break;
+            case KeyFocus.TYPE_SUGGESTION:
+                if ((direction & DIRECTION_DOWN) != 0) {
+                    offsetRect(mRect, mMainKeyboardView);
+                    validNextFocus = getBestFocus(
+                            (float) startFocus.rect.centerX(), (float) mRect.top, nextFocus);
+                } else if ((direction & DIRECTION_UP) != 0) {
+                    if (mEscapeNorthEnabled) {
+                        escapeNorth();
+                    }
+                } else {
+                    boolean left = (direction & DIRECTION_LEFT) != 0;
+                    boolean right = (direction & DIRECTION_RIGHT) != 0;
+
+                    if (left || right) {
+                        // Cannot offset on the suggestion container because as it scrolls those
+                        // values change
+                        offsetRect(mRect, mRootView);
+                        MarginLayoutParams lp =
+                                (MarginLayoutParams) mSuggestionsContainer.getLayoutParams();
+                        int leftSide = mRect.left + lp.leftMargin;
+                        int rightSide = mRect.right - lp.rightMargin;
+                        int index = startFocus.index + (left ? -1 : 1);
+
+                        View suggestView = mSuggestions.getChildAt(index);
+                        if (suggestView != null) {
+                            offsetRect(mRect, suggestView);
+
+                            if (mRect.left < leftSide && mRect.right > rightSide) {
+                                mRect.left = leftSide;
+                                mRect.right = rightSide;
+                            } else if (mRect.left < leftSide) {
+                                mRect.right = leftSide + mRect.width();
+                                mRect.left = leftSide;
+                            } else if (mRect.right > rightSide) {
+                                mRect.left = rightSide - mRect.width();
+                                mRect.right = rightSide;
+                            }
+
+                            suggestView.requestFocus();
+                            LeanbackUtils.sendAccessibilityEvent(
+                                    suggestView.findViewById(R.id.text), true);
+                            configureFocus(nextFocus, mRect, index, KeyFocus.TYPE_SUGGESTION);
+                        }
+                    }
+                }
+                break;
+            case KeyFocus.TYPE_MAIN:
+                Key key = getKey(startFocus.type, startFocus.index);
+                // Step within the view.  Using height because all keys are the same height
+                // and widths vary.  Half the height is to ensure the next key is reached
+                float extraSlide = startFocus.rect.height()/2.0f;
+                float x = startFocus.rect.centerX();
+                float y = startFocus.rect.centerY();
+                if (startFocus.code == LeanbackKeyboardView.ASCII_SPACE) {
+                    // if we're moving off of space, use the old x position for memory
+                    x = mX;
+                }
+                if ((direction & DIRECTION_LEFT) != 0) {
+                    if ((key.edgeFlags & Keyboard.EDGE_LEFT) == 0) {
+                        // not on the left edge of the kb
+                        x = startFocus.rect.left - extraSlide;
+                    }
+                } else if ((direction & DIRECTION_RIGHT) != 0) {
+                    if ((key.edgeFlags & Keyboard.EDGE_RIGHT) != 0) {
+                        // jump to the action button
+                        offsetRect(mRect, mActionButtonView);
+                        x = mRect.centerX();
+                    } else {
+                        x = startFocus.rect.right + extraSlide;
+                    }
+                }
+                // Don't need any special handling for up/down due to
+                // layout positioning. If the layout changes this should be
+                // reconsidered.
+                if ((direction & DIRECTION_UP) != 0) {
+                    y -= startFocus.rect.height() * DIRECTION_STEP_MULTIPLIER;
+                } else if ((direction & DIRECTION_DOWN) != 0) {
+                    y += startFocus.rect.height() * DIRECTION_STEP_MULTIPLIER;
+                }
+                getPhysicalPosition(x, y, mTempPoint);
+                validNextFocus = getBestFocus(x, y, nextFocus);
+                break;
+        }
+
+        return validNextFocus;
+    }
+
+    private PointF getTouchSnapPosition() {
+        PointF snapPos = new PointF();
+        getPhysicalPosition(mCurrKeyInfo.rect.centerX(), mCurrKeyInfo.rect.centerY(), snapPos);
+        return snapPos;
+    }
+
+    public void clearSuggestions() {
+        mSuggestions.removeAllViews();
+
+        if (getCurrFocus().type == KeyFocus.TYPE_SUGGESTION) {
+            resetFocusCursor();
+        }
+    }
+
+    public void updateSuggestions(ArrayList<String> suggestions) {
+        final int oldCount = mSuggestions.getChildCount();
+        final int newCount = suggestions.size();
+
+        if (newCount < oldCount) {
+            // remove excess views
+            mSuggestions.removeViews(newCount, oldCount-newCount);
+        } else if (newCount > oldCount) {
+            // add more
+            for (int i = oldCount; i < newCount; i++) {
+                View suggestion =  mContext.getLayoutInflater()
+                        .inflate(R.layout.candidate, null);
+                mSuggestions.addView(suggestion);
+            }
+        }
+
+        for (int i = 0; i < newCount; i++) {
+            Button suggestion =
+                    (Button) mSuggestions.getChildAt(i).findViewById(R.id.text);
+            suggestion.setText(suggestions.get(i));
+            suggestion.setContentDescription(suggestions.get(i));
+        }
+
+        if (getCurrFocus().type == KeyFocus.TYPE_SUGGESTION) {
+            resetFocusCursor();
+        }
+    }
+
+    /**
+     * Moves the selector back to the entry point key (T in general)
+     */
+    public void resetFocusCursor() {
+        // T is the best starting letter, it's in the 5th column and 2nd row,
+        // this approximates that location
+        double x = 0.45;
+        double y = 0.375;
+        offsetRect(mRect, mMainKeyboardView);
+        mX = (float)(mRect.left + x*mRect.width());
+        mY = (float)(mRect.top + y*mRect.height());
+        getBestFocus(mX, mY, mTempKeyInfo);
+        setKbFocus(mTempKeyInfo, true, false);
+
+        setTouchStateInternal(TOUCH_STATE_NO_TOUCH);
+        mSelectorAnimator.reverse();
+        mSelectorAnimator.end();
+    }
+
+    private void setTouchStateInternal(int state) {
+        mTouchState = state;
+    }
+
+    private void setShiftState(int state) {
+        mMainKeyboardView.setShiftState(state);
+    }
+
+    private void startRecognition(Context context) {
+        mRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
+        mRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
+                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
+        mRecognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
+        mSpeechRecognizer.setRecognitionListener(new RecognitionListener() {
+            float peakRmsLevel = 0;
+            int rmsCounter = 0;
+
+            @Override
+            public void onBeginningOfSpeech() {
+                mVoiceButtonView.showRecording();
+            }
+
+            @Override
+            public void onEndOfSpeech() {
+                mVoiceButtonView.showRecognizing();
+                mVoiceOn = false;
+            }
+
+            @Override
+            public void onError(int error) {
+                cancelVoiceRecording();
+                switch (error) {
+                    case SpeechRecognizer.ERROR_NO_MATCH:
+                        Log.d(TAG, "recognizer error no match");
+                        break;
+                    case SpeechRecognizer.ERROR_SERVER:
+                        Log.d(TAG, "recognizer error server error");
+                        break;
+                    case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:
+                        Log.d(TAG, "recognizer error speech timeout");
+                        break;
+                    case SpeechRecognizer.ERROR_CLIENT:
+                        Log.d(TAG, "recognizer error client error");
+                        break;
+                    default:
+                        Log.d(TAG, "recognizer other error " + error);
+                        break;
+                }
+            }
+
+            @Override
+            public synchronized void onPartialResults(Bundle partialResults) {
+            }
+
+            @Override
+            public void onReadyForSpeech(Bundle params) {
+                mVoiceButtonView.showListening();
+            }
+
+            @Override
+            public void onEvent(int eventType, Bundle params) {
+            }
+
+            @Override
+            public void onBufferReceived(byte[] buffer) {
+            }
+
+            @Override
+            public synchronized void onRmsChanged(float rmsdB) {
+
+                mVoiceOn = true;
+                mSpeechLevelSource.setSpeechLevel((rmsdB < 0) ? 0 : (int) (10 * rmsdB));
+                peakRmsLevel = Math.max(rmsdB, peakRmsLevel);
+                rmsCounter++;
+
+                if (rmsCounter > 100 && peakRmsLevel == 0) {
+                    mVoiceButtonView.showNotListening();
+                }
+            }
+
+            @Override
+            public void onResults(Bundle results) {
+                final ArrayList<String> matches =
+                        results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
+                if (matches != null) {
+                    if (mVoiceListener != null) {
+                        mVoiceListener.onVoiceResult(matches.get(0));
+                    }
+                }
+
+                cancelVoiceRecording();
+            }
+        });
+        mSpeechRecognizer.startListening(mRecognizerIntent);
+    }
+
+    public boolean isMiniKeyboardOnScreen() {
+        return mMainKeyboardView.isMiniKeyboardOnScreen();
+    }
+
+    public boolean onKeyLongPress() {
+        if (mCurrKeyInfo.code == Keyboard.KEYCODE_SHIFT) {
+            onToggleCapsLock();
+            setTouchState(TOUCH_STATE_NO_TOUCH);
+            return true;
+        } else if (mCurrKeyInfo.type == KeyFocus.TYPE_MAIN) {
+            mMainKeyboardView.onKeyLongPress();
+            if (mMainKeyboardView.isMiniKeyboardOnScreen()) {
+                mMiniKbKeyIndex = mCurrKeyInfo.index;
+                moveFocusToIndex(mMainKeyboardView.getBaseMiniKbIndex(), KeyFocus.TYPE_MAIN);
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    private void moveFocusToIndex(int index, int type) {
+        Key key = mMainKeyboardView.getKey(index);
+        configureFocus(mTempKeyInfo, mRect, index, key, type);
+        setTouchState(TOUCH_STATE_NO_TOUCH);
+        setKbFocus(mTempKeyInfo, true, true);
+    }
+
+    private void onToggleCapsLock() {
+        onShiftDoubleClick(isCapsLockOn());
+    }
+
+    public void onShiftDoubleClick(boolean wasCapsLockOn) {
+        setShiftState(
+                wasCapsLockOn ? LeanbackKeyboardView.SHIFT_OFF : LeanbackKeyboardView.SHIFT_LOCKED);
+    }
+
+    public boolean isCapsLockOn() {
+        return mMainKeyboardView.getShiftState() == LeanbackKeyboardView.SHIFT_LOCKED;
+    }
+}
diff --git a/src/com/android/inputmethod/leanback/LeanbackKeyboardController.java b/src/com/android/inputmethod/leanback/LeanbackKeyboardController.java
new file mode 100644
index 0000000..93fc80d
--- /dev/null
+++ b/src/com/android/inputmethod/leanback/LeanbackKeyboardController.java
@@ -0,0 +1,600 @@
+/*
+ * Copyright (C) 2019 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.leanback;
+
+import android.graphics.PointF;
+import android.inputmethodservice.InputMethodService;
+import android.inputmethodservice.Keyboard;
+import android.inputmethodservice.Keyboard.Key;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+
+import com.android.inputmethod.leanback.LeanbackKeyboardContainer.KeyFocus;
+
+import java.util.ArrayList;
+/**
+ * Holds logic for the keyboard views. This includes things like when to
+ * snap, when to switch keyboards, etc. It provides callbacks for when actions
+ * that need to be handled at the IME level occur (when text is entered, when
+ * the action should be performed).
+ */
+public class LeanbackKeyboardController implements LeanbackKeyboardContainer.VoiceListener,
+        LeanbackKeyboardContainer.DismissListener {
+    private static final String TAG = "LbKbController";
+    private static final boolean DEBUG = false;
+
+    /**
+     * The amount of time to block movement after a button down was detected.
+     */
+    public static final int CLICK_MOVEMENT_BLOCK_DURATION_MS = 500;
+
+    /**
+     * The minimum distance in pixels before the view will transition to the
+     * move state.
+     */
+    public float mResizeSquareDistance;
+
+    // keep track of the most recent key changes and their times so we can
+    // revert motion caused by clicking
+    private static final int KEY_CHANGE_HISTORY_SIZE = 10;
+    private static final long KEY_CHANGE_REVERT_TIME_MS = 100;
+
+    /**
+     * This listener reports high level actions that have occurred, such as
+     * text entry (from keys or voice) or the action button being pressed.
+     */
+    public interface InputListener {
+        public static final int ENTRY_TYPE_STRING = 0;
+        public static final int ENTRY_TYPE_BACKSPACE = 1;
+        public static final int ENTRY_TYPE_SUGGESTION = 2;
+        public static final int ENTRY_TYPE_LEFT = 3;
+        public static final int ENTRY_TYPE_RIGHT = 4;
+        public static final int ENTRY_TYPE_ACTION = 5;
+        public static final int ENTRY_TYPE_VOICE = 6;
+        public static final int ENTRY_TYPE_DISMISS = 7;
+        public static final int ENTRY_TYPE_VOICE_DISMISS = 8;
+
+        /**
+         * Sent when the user has selected something that should affect the text
+         * field, such as entering a character, selecting the action, or
+         * finishing a voice action.
+         *
+         * @param type The type of key selected
+         * @param keyCode the key code of the key if applicable
+         * @param result The text entered if applicable
+         */
+        public void onEntry(int type, int keyCode, CharSequence result);
+    }
+
+    private static final class KeyChange {
+        public long time;
+        public PointF position;
+
+        public KeyChange(long time, PointF position) {
+            this.time = time;
+            this.position = position;
+        }
+    }
+
+    private class DoubleClickDetector {
+        final long DOUBLE_CLICK_TIMEOUT_MS = 200;
+        long mFirstClickTime = 0;
+        boolean mFirstClickShiftLocked;
+
+        public void reset() {
+            mFirstClickTime = 0;
+        }
+
+        public void addEvent(long currTime) {
+            if (currTime - mFirstClickTime > DOUBLE_CLICK_TIMEOUT_MS) {
+                mFirstClickTime = currTime;
+                mFirstClickShiftLocked = mContainer.isCapsLockOn();
+                commitKey();
+            } else {
+                mContainer.onShiftDoubleClick(mFirstClickShiftLocked);
+                reset();
+            }
+        }
+    }
+
+    private DoubleClickDetector mDoubleClickDetector = new DoubleClickDetector();
+
+    private View.OnLayoutChangeListener mOnLayoutChangeListener
+            = new View.OnLayoutChangeListener() {
+
+                @Override
+                public void onLayoutChange(View v, int left, int top, int right, int bottom,
+                        int oldLeft, int oldTop, int oldRight, int oldBottom) {
+                    int w = right - left;
+                    int h = bottom - top;
+                    int oldW = oldRight - oldLeft;
+                    int oldH = oldBottom - oldTop;
+                    if (w > 0 && h > 0) {
+                        if (w != oldW || h != oldH) {
+                            initInputView();
+                        }
+                    }
+                }
+            };
+
+    private InputMethodService mContext;
+    private InputListener mInputListener;
+    private LeanbackKeyboardContainer mContainer;
+
+    private LeanbackKeyboardContainer.KeyFocus mDownFocus =
+            new LeanbackKeyboardContainer.KeyFocus();
+    private LeanbackKeyboardContainer.KeyFocus mTempFocus =
+            new LeanbackKeyboardContainer.KeyFocus();
+
+    ArrayList<KeyChange> mKeyChangeHistory = new ArrayList<KeyChange>(KEY_CHANGE_HISTORY_SIZE + 1);
+    private PointF mTempPoint = new PointF();
+
+    private boolean mKeyDownReceived = false;
+    private boolean mLongPressHandled = false;
+    private KeyFocus mKeyDownKeyFocus;
+    private int mMoveCount;
+
+    public LeanbackKeyboardController(InputMethodService context, InputListener listener) {
+        this(context, listener, new LeanbackKeyboardContainer(context));
+    }
+
+    LeanbackKeyboardController(InputMethodService context, InputListener listener,
+            LeanbackKeyboardContainer container) {
+        mContext = context;
+        mResizeSquareDistance = context.getResources().getDimension(R.dimen.resize_move_distance);
+        mResizeSquareDistance *= mResizeSquareDistance;
+        mInputListener = listener;
+        setKeyboardContainer(container);
+        mContainer.setVoiceListener(this);
+        mContainer.setDismissListener(this);
+    }
+
+    /**
+     * This method is called when we start the input at a NEW input field.
+     */
+    public void onStartInput(EditorInfo attribute) {
+        if (mContainer != null) {
+            mContainer.onStartInput(attribute);
+            initInputView();
+        }
+    }
+
+    /**
+     * This method is called by whenever we bring up the IME at an input field.
+     */
+    public void onStartInputView() {
+        mKeyDownReceived = false;
+        if (mContainer != null) {
+            mContainer.onStartInputView();
+        }
+        mDoubleClickDetector.reset();
+    }
+
+    /**
+     * This method sets the pixel positions in mSpaceTracker to match the
+     * current KeyFocus in {@link LeanbackKeyboardContainer} This method is called
+     * when the keyboard layout is complete, after
+     * {@link LeanbackKeyboardContainer.onInitInputView}, to initialize the starting
+     * position of mSpaceTracker; and in onUp to reset the pixel position in
+     * mSpaceTracker.
+     */
+    private void updatePositionToCurrentFocus() {
+        PointF currPosition = getCurrentKeyPosition();
+        if (currPosition != null) {
+        }
+    }
+
+    private void initInputView() {
+        mContainer.onInitInputView();
+        updatePositionToCurrentFocus();
+    }
+
+    private PointF getCurrentKeyPosition() {
+        if (mContainer != null) {
+            LeanbackKeyboardContainer.KeyFocus initialKeyInfo = mContainer.getCurrFocus();
+            return new PointF(initialKeyInfo.rect.centerX(), initialKeyInfo.rect.centerY());
+        }
+        return null;
+    }
+
+    private void performBestSnap(long time) {
+        KeyFocus focus = mContainer.getCurrFocus();
+        mTempPoint.x = focus.rect.centerX();
+        mTempPoint.y = focus.rect.centerY();
+        PointF bestSnap = getBestSnapPosition(mTempPoint, time);
+        mContainer.getBestFocus(bestSnap.x, bestSnap.y, mTempFocus);
+        mContainer.setFocus(mTempFocus);
+        updatePositionToCurrentFocus();
+    }
+
+    private PointF getBestSnapPosition(PointF currPoint, long currTime) {
+        if (mKeyChangeHistory.size() <= 1) {
+            return currPoint;
+        }
+        for (int i = 0; i < mKeyChangeHistory.size() - 1; i++) {
+            KeyChange change = mKeyChangeHistory.get(i);
+            KeyChange nextChange = mKeyChangeHistory.get(i + 1);
+            if (currTime - nextChange.time < KEY_CHANGE_REVERT_TIME_MS) {
+                if (DEBUG) {
+                    Log.d(TAG, "Reverting keychange to " + change.position.toString());
+                }
+                // Return the oldest key change within the revert window and
+                // clear all key changes
+                currPoint = change.position;
+                // on a revert, clear the history and add the reverting point.
+                // This way the reverted point will be preferred if there's
+                // another fast change before the next call.
+                mKeyChangeHistory.clear();
+                mKeyChangeHistory.add(new KeyChange(currTime, currPoint));
+                break;
+            }
+        }
+        return currPoint;
+    }
+
+    public void setKeyboardContainer(LeanbackKeyboardContainer container) {
+        mContainer = container;
+        container.getView().addOnLayoutChangeListener(mOnLayoutChangeListener);
+    }
+
+    public View getView() {
+        if (mContainer != null) {
+            return mContainer.getView();
+        }
+        return null;
+    }
+
+    public boolean areSuggestionsEnabled() {
+        if (mContainer != null) {
+            return mContainer.areSuggestionsEnabled();
+        }
+        return false;
+    }
+
+    public boolean enableAutoEnterSpace() {
+        if (mContainer != null) {
+            return mContainer.enableAutoEnterSpace();
+        }
+        return false;
+    }
+
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        mDownFocus.set(mContainer.getCurrFocus());
+        // this will handle other events, e.g. hardware keyboard
+        if (isEnterKey(keyCode)) {
+            mKeyDownReceived = true;
+            // first keyDown
+            if (event.getRepeatCount() == 0) {
+                mContainer.setTouchState(LeanbackKeyboardContainer.TOUCH_STATE_CLICK);
+            }
+        }
+
+        return handleKeyDownEvent(keyCode, event.getRepeatCount());
+    }
+
+    public boolean onKeyUp(int keyCode, KeyEvent event) {
+        // this only handles InputDevice.SOURCE_TOUCH_NAVIGATION events
+        if (isEnterKey(keyCode)) {
+            if (!mKeyDownReceived || mLongPressHandled) {
+                mLongPressHandled = false;
+                return true;
+            }
+            mKeyDownReceived = false;
+            if (mContainer.getTouchState() == LeanbackKeyboardContainer.TOUCH_STATE_CLICK) {
+                mContainer.setTouchState(LeanbackKeyboardContainer.TOUCH_STATE_TOUCH_SNAP);
+            }
+        }
+        return handleKeyUpEvent(keyCode, event.getEventTime());
+    }
+
+    public boolean onGenericMotionEvent(MotionEvent event) {
+        return false;
+    }
+
+    private boolean onDirectionalMove(int dir) {
+        if (mContainer.getNextFocusInDirection(dir, mDownFocus, mTempFocus)) {
+            mContainer.setFocus(mTempFocus);
+            mDownFocus.set(mTempFocus);
+
+            clearKeyIfNecessary();
+        }
+
+        return true;
+    }
+
+    private void clearKeyIfNecessary() {
+        mMoveCount++;
+        if (mMoveCount >= 3) {
+            mMoveCount = 0;
+            mKeyDownKeyFocus = null;
+        }
+    }
+
+    private void commitKey() {
+        commitKey(mContainer.getCurrFocus());
+    }
+
+    private void commitKey(LeanbackKeyboardContainer.KeyFocus keyFocus) {
+        if (mContainer == null || keyFocus == null) {
+            return;
+        }
+
+        switch (keyFocus.type) {
+            case KeyFocus.TYPE_VOICE:
+                // voice doesn't have to go through the IME
+                mContainer.onVoiceClick();
+                break;
+            case KeyFocus.TYPE_ACTION:
+                mInputListener.onEntry(InputListener.ENTRY_TYPE_ACTION, 0, null);
+                break;
+            case KeyFocus.TYPE_SUGGESTION:
+                mInputListener.onEntry(InputListener.ENTRY_TYPE_SUGGESTION, 0,
+                        mContainer.getSuggestionText(keyFocus.index));
+                break;
+            default:
+                Key key = mContainer.getKey(keyFocus.type, keyFocus.index);
+                if (key != null) {
+                    int code = key.codes[0];
+                    CharSequence label = key.label;
+                    handleCommitKeyboardKey(code, label);
+                }
+                break;
+
+        }
+    }
+
+    private void handleCommitKeyboardKey(int code, CharSequence label) {
+        switch (code) {
+            case Keyboard.KEYCODE_MODE_CHANGE:
+                if (Log.isLoggable(TAG, Log.VERBOSE)) {
+                    Log.d(TAG, "mode change");
+                }
+                mContainer.onModeChangeClick();
+                break;
+            case LeanbackKeyboardView.KEYCODE_CAPS_LOCK:
+                mContainer.onShiftDoubleClick(mContainer.isCapsLockOn());
+                break;
+            case Keyboard.KEYCODE_SHIFT:
+                // TODO invalidate and draw a different shift
+                // key in the function keyboard
+                if (Log.isLoggable(TAG, Log.VERBOSE)) {
+                    Log.d(TAG, "shift");
+                }
+                mContainer.onShiftClick();
+                break;
+            case LeanbackKeyboardView.KEYCODE_DISMISS_MINI_KEYBOARD:
+                mContainer.dismissMiniKeyboard();
+                break;
+            case LeanbackKeyboardView.KEYCODE_LEFT:
+                mInputListener.onEntry(InputListener.ENTRY_TYPE_LEFT, 0, null);
+                break;
+            case LeanbackKeyboardView.KEYCODE_RIGHT:
+                mInputListener.onEntry(InputListener.ENTRY_TYPE_RIGHT, 0, null);
+                break;
+            case Keyboard.KEYCODE_DELETE:
+                mInputListener.onEntry(InputListener.ENTRY_TYPE_BACKSPACE, 0, null);
+                break;
+            case LeanbackKeyboardView.ASCII_SPACE:
+                mInputListener.onEntry(InputListener.ENTRY_TYPE_STRING, code, " ");
+                mContainer.onSpaceEntry();
+                break;
+            case LeanbackKeyboardView.ASCII_PERIOD:
+                mInputListener.onEntry(InputListener.ENTRY_TYPE_STRING, code, label);
+                mContainer.onPeriodEntry();
+                break;
+            case LeanbackKeyboardView.KEYCODE_VOICE:
+                mContainer.startVoiceRecording();
+                break;
+        // fall through to default with this label
+            default:
+                mInputListener.onEntry(InputListener.ENTRY_TYPE_STRING, code, label);
+                mContainer.onTextEntry();
+
+                if (mContainer.isMiniKeyboardOnScreen()) {
+                    mContainer.dismissMiniKeyboard();
+                }
+                break;
+        }
+    }
+
+    private boolean handleKeyDownEvent(int keyCode, int eventRepeatCount) {
+        keyCode = getSimplifiedKey(keyCode);
+
+        // never trap back
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+            mContainer.cancelVoiceRecording();
+            return false;
+        }
+
+        // capture all key downs when voice is visible
+        if (mContainer.isVoiceVisible()) {
+            if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT || keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
+                mContainer.cancelVoiceRecording();
+            }
+            return true;
+        }
+
+        boolean handled = true;
+        switch(keyCode) {
+            // Direction keys are handled on down to allow repeated movement
+            case KeyEvent.KEYCODE_DPAD_LEFT:
+                handled = onDirectionalMove(LeanbackKeyboardContainer.DIRECTION_LEFT);
+                break;
+            case KeyEvent.KEYCODE_DPAD_RIGHT:
+                handled = onDirectionalMove(LeanbackKeyboardContainer.DIRECTION_RIGHT);
+                break;
+            case KeyEvent.KEYCODE_DPAD_UP:
+                handled = onDirectionalMove(LeanbackKeyboardContainer.DIRECTION_UP);
+                break;
+            case KeyEvent.KEYCODE_DPAD_DOWN:
+                handled = onDirectionalMove(LeanbackKeyboardContainer.DIRECTION_DOWN);
+                break;
+            case KeyEvent.KEYCODE_BUTTON_X:
+                handleCommitKeyboardKey(Keyboard.KEYCODE_DELETE, null);
+                break;
+            case KeyEvent.KEYCODE_BUTTON_Y:
+                handleCommitKeyboardKey(LeanbackKeyboardView.ASCII_SPACE, null);
+                break;
+            case KeyEvent.KEYCODE_BUTTON_L1:
+                handleCommitKeyboardKey(LeanbackKeyboardView.KEYCODE_LEFT, null);
+                break;
+            case KeyEvent.KEYCODE_BUTTON_R1:
+                handleCommitKeyboardKey(LeanbackKeyboardView.KEYCODE_RIGHT, null);
+                break;
+            // these are handled on up
+            case KeyEvent.KEYCODE_DPAD_CENTER:
+                if (eventRepeatCount == 0) {
+                    mMoveCount = 0;
+                    mKeyDownKeyFocus = new KeyFocus();
+                    mKeyDownKeyFocus.set(mContainer.getCurrFocus());
+                } else if (eventRepeatCount == 1) {
+                    if (handleKeyLongPress(keyCode)) {
+                        mKeyDownKeyFocus = null;
+                    }
+                }
+
+                if (isKeyHandledOnKeyDown(mContainer.getCurrKeyCode())) {
+                    commitKey();
+                }
+                break;
+            // also handled on up
+            case KeyEvent.KEYCODE_BUTTON_THUMBL:
+            case KeyEvent.KEYCODE_BUTTON_THUMBR:
+            case KeyEvent.KEYCODE_ENTER:
+                break;
+            default:
+                handled = false;
+                break;
+        }
+        return handled;
+    }
+
+    private boolean handleKeyLongPress(int keyCode) {
+        mLongPressHandled = isEnterKey(keyCode) && mContainer.onKeyLongPress();
+        if (mContainer.isMiniKeyboardOnScreen()) {
+            Log.d(TAG, "mini keyboard shown after long press");
+        }
+        return mLongPressHandled;
+    }
+
+    private boolean isKeyHandledOnKeyDown(int currKeyCode) {
+        return currKeyCode == Keyboard.KEYCODE_DELETE
+                || currKeyCode == LeanbackKeyboardView.KEYCODE_LEFT
+                || currKeyCode == LeanbackKeyboardView.KEYCODE_RIGHT;
+    }
+
+    /**
+     * This handles all key events from an input device
+     * @param keyCode
+     * @return true if the key was handled, false otherwise
+     */
+    private boolean handleKeyUpEvent(int keyCode, long currTime) {
+        keyCode = getSimplifiedKey(keyCode);
+
+        // never trap back
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+            return false;
+        }
+
+        // capture all key ups when voice is visible
+        if (mContainer.isVoiceVisible()) {
+            return true;
+        }
+
+        boolean handled = true;
+        switch(keyCode) {
+            // Some keys are handled on down to allow repeats
+            case KeyEvent.KEYCODE_DPAD_LEFT:
+            case KeyEvent.KEYCODE_DPAD_RIGHT:
+            case KeyEvent.KEYCODE_DPAD_UP:
+            case KeyEvent.KEYCODE_DPAD_DOWN:
+                clearKeyIfNecessary();
+                break;
+            case KeyEvent.KEYCODE_BUTTON_X:
+            case KeyEvent.KEYCODE_BUTTON_Y:
+            case KeyEvent.KEYCODE_BUTTON_L1:
+            case KeyEvent.KEYCODE_BUTTON_R1:
+                break;
+            case KeyEvent.KEYCODE_DPAD_CENTER:
+                if (mContainer.getCurrKeyCode() == Keyboard.KEYCODE_SHIFT) {
+                    mDoubleClickDetector.addEvent(currTime);
+                } else if (!isKeyHandledOnKeyDown(mContainer.getCurrKeyCode())) {
+                    commitKey(mKeyDownKeyFocus);
+                }
+                break;
+            case KeyEvent.KEYCODE_BUTTON_THUMBL:
+                handleCommitKeyboardKey(Keyboard.KEYCODE_MODE_CHANGE, null);
+                break;
+            case KeyEvent.KEYCODE_BUTTON_THUMBR:
+                handleCommitKeyboardKey(LeanbackKeyboardView.KEYCODE_CAPS_LOCK, null);
+                break;
+            case KeyEvent.KEYCODE_ENTER:
+                if (mContainer != null) {
+                    KeyFocus keyFocus = mContainer.getCurrFocus();
+                    if (keyFocus != null && keyFocus.type ==  KeyFocus.TYPE_SUGGESTION) {
+                        mInputListener.onEntry(InputListener.ENTRY_TYPE_SUGGESTION, 0,
+                                mContainer.getSuggestionText(keyFocus.index));
+                    }
+                }
+                mInputListener.onEntry(InputListener.ENTRY_TYPE_DISMISS, 0, null);
+                break;
+            default:
+                handled = false;
+                break;
+        }
+        return handled;
+    }
+
+    public void updateSuggestions(ArrayList<String> suggestions) {
+        if (mContainer != null) {
+            mContainer.updateSuggestions(suggestions);
+        }
+    }
+
+    @Override
+    public void onVoiceResult(String result) {
+        mInputListener.onEntry(InputListener.ENTRY_TYPE_VOICE, 0, result);
+    }
+
+    @Override
+    public void onDismiss(boolean fromVoice) {
+        if (fromVoice) {
+            mInputListener.onEntry(InputListener.ENTRY_TYPE_VOICE_DISMISS, 0, null);
+        } else {
+            mInputListener.onEntry(InputListener.ENTRY_TYPE_DISMISS, 0, null);
+        }
+    }
+
+    private boolean isEnterKey(int keyCode) {
+        return getSimplifiedKey(keyCode) == KeyEvent.KEYCODE_DPAD_CENTER;
+    }
+
+    private int getSimplifiedKey(int keyCode) {
+        // simplify for dpad center
+        keyCode = (keyCode == KeyEvent.KEYCODE_DPAD_CENTER ||
+                keyCode == KeyEvent.KEYCODE_NUMPAD_ENTER ||
+                keyCode == KeyEvent.KEYCODE_BUTTON_A) ? KeyEvent.KEYCODE_DPAD_CENTER : keyCode;
+
+        // simply for back
+        keyCode = (keyCode == KeyEvent.KEYCODE_BUTTON_B ? KeyEvent.KEYCODE_BACK : keyCode);
+
+        return keyCode;
+    }
+}
diff --git a/src/com/android/inputmethod/leanback/LeanbackKeyboardView.java b/src/com/android/inputmethod/leanback/LeanbackKeyboardView.java
new file mode 100644
index 0000000..45d52e8
--- /dev/null
+++ b/src/com/android/inputmethod/leanback/LeanbackKeyboardView.java
@@ -0,0 +1,570 @@
+/*
+ * Copyright (C) 2019 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.leanback;
+
+import android.content.Context;
+
+import java.util.ArrayList;
+
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.content.res.XmlResourceParser;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Paint.Align;
+import android.graphics.Rect;
+import android.graphics.Typeface;
+import android.inputmethodservice.Keyboard;
+import android.inputmethodservice.Keyboard.Key;
+import android.inputmethodservice.Keyboard.Row;
+import android.media.AudioManager;
+import android.provider.Settings;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+public class LeanbackKeyboardView extends FrameLayout {
+
+    private static final String TAG = "LbKbView";
+    private static final boolean DEBUG = false;
+
+    private static final int NOT_A_KEY = -1;
+
+    public static final int SHIFT_OFF = 0;
+    public static final int SHIFT_ON = 1;
+    public static final int SHIFT_LOCKED = 2;
+    private int mShiftState;
+
+    private final float mFocusedScale;
+    private final float mClickedScale;
+    private final int mClickAnimDur;
+    private final int mUnfocusStartDelay;
+    private final int mInactiveMiniKbAlpha;
+
+    private Keyboard mKeyboard;
+    private KeyHolder[] mKeys;
+    private ImageView[] mKeyImageViews;
+
+    private int mFocusIndex;
+    private boolean mFocusClicked;
+    private View mCurrentFocusView;
+    private boolean mMiniKeyboardOnScreen;
+
+    /**
+     * Special keycodes
+     */
+    public static final int ASCII_SPACE = 32;
+    public static final int ASCII_PERIOD = 46;
+    public static final int KEYCODE_SHIFT = -1;
+    public static final int KEYCODE_SYM_TOGGLE = -2;
+    public static final int KEYCODE_LEFT = -3;
+    public static final int KEYCODE_RIGHT = -4;
+    public static final int KEYCODE_DELETE = -5;
+    public static final int KEYCODE_CAPS_LOCK = -6;
+    public static final int KEYCODE_VOICE = -7;
+    public static final int KEYCODE_DISMISS_MINI_KEYBOARD = -8;
+
+    private int mBaseMiniKbIndex = -1;
+
+    private Paint mPaint;
+    private Rect mPadding;
+    private int mModeChangeTextSize;
+    private int mKeyTextSize;
+    private int mKeyTextColor;
+    private int mRowCount;
+    private int mColCount;
+
+    private class KeyHolder {
+        public boolean isInMiniKb = false;
+        public boolean isInvertible = false;
+        public Key key;
+
+        public KeyHolder(Key key) {
+            this.key = key;
+        }
+    }
+
+    public LeanbackKeyboardView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        final Resources res = context.getResources();
+        TypedArray a = context.getTheme()
+                .obtainStyledAttributes(attrs, R.styleable.LeanbackKeyboardView, 0, 0);
+        mRowCount = a.getInteger(R.styleable.LeanbackKeyboardView_rowCount, -1);
+        mColCount = a.getInteger(R.styleable.LeanbackKeyboardView_columnCount, -1);
+
+        mKeyTextSize = (int) res.getDimension(R.dimen.key_font_size);
+
+        mPaint = new Paint();
+        mPaint.setAntiAlias(true);
+        mPaint.setTextSize(mKeyTextSize);
+        mPaint.setTextAlign(Align.CENTER);
+        mPaint.setAlpha(255);
+
+        mPadding = new Rect(0, 0, 0, 0);
+
+        mModeChangeTextSize = (int) res.getDimension(R.dimen.function_key_mode_change_font_size);
+
+        mKeyTextColor = res.getColor(R.color.key_text_default);
+
+        mFocusIndex = -1;
+
+        mShiftState = SHIFT_OFF;
+
+        mFocusedScale = res.getFraction(R.fraction.focused_scale, 1, 1);
+        mClickedScale = res.getFraction(R.fraction.clicked_scale, 1, 1);
+        mClickAnimDur = res.getInteger(R.integer.clicked_anim_duration);
+        mUnfocusStartDelay = res.getInteger(R.integer.unfocused_anim_delay);
+
+        mInactiveMiniKbAlpha = res.getInteger(R.integer.inactive_mini_kb_alpha);
+    }
+
+    /**
+     * Get the total rows of the keyboard
+     */
+    public int getRowCount() {
+        return mRowCount;
+    }
+
+    /**
+     * Get the total columns of the keyboard
+     */
+    public int getColCount() {
+        return mColCount;
+    }
+
+    /**
+     * Get the key at the specified index
+     *
+     * @param index
+     * @return null if the keyboardView has not been assigned a keyboard
+     */
+    public Key getKey(int index) {
+        if (mKeys == null || mKeys.length == 0 || index < 0 || index > mKeys.length) {
+            return null;
+        }
+        return mKeys[index].key;
+    }
+
+    /**
+     * Get the current focused key
+     */
+    public Key getFocusedKey() {
+        return mFocusIndex == -1 ? null : mKeys[mFocusIndex].key;
+    }
+
+    /**
+     * Get the keyboard that's attached to the keyboardView
+     */
+    public Keyboard getKeyboard() {
+        return mKeyboard;
+    }
+
+    /**
+     * Get the key that's the nearest to the given position
+     *
+     * @param x position in pixels
+     * @param y position in pixels
+     */
+    public int getNearestIndex(float x, float y) {
+        if (mKeys == null || mKeys.length == 0) {
+            return 0;
+        }
+        x -= getPaddingLeft();
+        y -= getPaddingTop();
+        float height = getMeasuredHeight() - getPaddingTop() - getPaddingBottom();
+        float width = getMeasuredWidth() - getPaddingLeft() - getPaddingRight();
+        int rows = getRowCount();
+        int cols = getColCount();
+        int row = (int) (y / height * rows);
+        if (row < 0) {
+            row = 0;
+        } else if (row >= rows) {
+            row = rows - 1;
+        }
+        int col = (int) (x / width * cols);
+        if (col < 0) {
+            col = 0;
+        } else if (col >= cols) {
+            col = cols - 1;
+        }
+        int index = mColCount * row + col;
+
+        // at space key (space key is 7 keys wide)
+        if (index > 46 && index < 53) {
+            index = 46;
+        }
+
+        // beyond space, remove 6 extra slots for space
+        if (index >= 53) {
+            index -= 6;
+        }
+
+        if (index < 0) {
+            index = 0;
+        } else if (index >= mKeys.length) {
+            index = mKeys.length - 1;
+        }
+
+        return index;
+    }
+
+    /**
+     * Attaches a keyboard to this view. The keyboard can be switched at any
+     * time and the view will re-layout itself to accommodate the keyboard.
+     *
+     * @see Keyboard
+     * @see #getKeyboard()
+     * @param keyboard the keyboard to display in this view
+     */
+    public void setKeyboard(Keyboard keyboard) {
+        // Remove any pending messages
+        removeMessages();
+        mKeyboard = keyboard;
+        setKeys(mKeyboard.getKeys());
+
+        // reset shift state
+        int shiftState = mShiftState;
+        mShiftState = -1;
+        setShiftState(shiftState);
+
+        requestLayout();
+        invalidateAllKeys();
+        // computeProximityThreshold(keyboard); // TODO
+    }
+
+    private ImageView createKeyImageView(int keyIndex) {
+
+        final Rect padding = mPadding;
+        final int kbdPaddingLeft = getPaddingLeft();
+        final int kbdPaddingTop = getPaddingTop();
+        final KeyHolder keyHolder = mKeys[keyIndex];
+        final Key key = keyHolder.key;
+
+        // Switch the character to uppercase if shift is pressed
+        adjustCase(keyHolder);
+        String label = key.label == null ? null : key.label.toString();
+        if (Log.isLoggable(TAG, Log.VERBOSE)) {
+            Log.d(TAG, "LABEL: " + key.label + "->" + label);
+        }
+
+        Bitmap bitmap = Bitmap.createBitmap(key.width, key.height, Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(bitmap);
+        final Paint paint = mPaint;
+        paint.setColor(mKeyTextColor);
+
+        canvas.drawARGB(0, 0,  0,  0);
+
+        if (key.icon != null) {
+            if (key.codes[0] == Keyboard.KEYCODE_SHIFT) {
+                switch (mShiftState) {
+                    case SHIFT_OFF:
+                        key.icon = getContext().getResources().getDrawable(R.drawable.ic_ime_shift_off);
+                        break;
+                    case SHIFT_ON:
+                        key.icon = getContext().getResources().getDrawable(R.drawable.ic_ime_shift_on);
+                        break;
+                    case SHIFT_LOCKED:
+                        key.icon = getContext().getResources()
+                                .getDrawable(R.drawable.ic_ime_shift_lock_on);
+                        break;
+                }
+            }
+            final int drawableX = (key.width - padding.left - padding.right
+                    - key.icon.getIntrinsicWidth()) / 2 + padding.left;
+            final int drawableY = (key.height - padding.top - padding.bottom
+                    - key.icon.getIntrinsicHeight()) / 2 + padding.top;
+            canvas.translate(drawableX, drawableY);
+            key.icon.setBounds(0, 0,
+                    key.icon.getIntrinsicWidth(), key.icon.getIntrinsicHeight());
+            key.icon.draw(canvas);
+            canvas.translate(-drawableX, -drawableY);
+        } else if (label != null) {
+            // For characters, use large font. For labels like "Done", use
+            // small font.
+            if (label.length() > 1) {
+                paint.setTextSize(mModeChangeTextSize);
+                paint.setTypeface(Typeface.create("sans-serif", Typeface.NORMAL));
+            } else {
+                paint.setTextSize(mKeyTextSize);
+                paint.setTypeface(Typeface.create("sans-serif-light", Typeface.NORMAL));
+            }
+            // Draw the text
+            canvas.drawText(label,
+                    (key.width - padding.left - padding.right) / 2
+                    + padding.left,
+                    (key.height - padding.top - padding.bottom) / 2
+                    + (paint.getTextSize() - paint.descent()) / 2 + padding.top,
+                    paint);
+            // Turn off drop shadow
+            paint.setShadowLayer(0, 0, 0, 0);
+        }
+
+        ImageView view = new ImageView(getContext());
+        view.setImageBitmap(bitmap);
+        view.setContentDescription(label);
+        addView(view, new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,
+                LayoutParams.WRAP_CONTENT));
+
+        view.setX(key.x + kbdPaddingLeft);
+        view.setY(key.y + kbdPaddingTop);
+        view.setImageAlpha(mMiniKeyboardOnScreen && !keyHolder.isInMiniKb ?
+                mInactiveMiniKbAlpha : 255);
+        view.setVisibility(View.VISIBLE);
+
+        return view;
+    }
+
+    private void createKeyImageViews(KeyHolder[] keys) {
+        int totalKeys = keys.length;
+        if (mKeyImageViews != null) {
+            for (ImageView view : mKeyImageViews) {
+                this.removeView(view);
+            }
+            mKeyImageViews = null;
+        }
+
+        for (int keyIndex = 0; keyIndex < totalKeys; keyIndex++) {
+            if (mKeyImageViews == null) {
+                mKeyImageViews = new ImageView[totalKeys];
+            } else if (mKeyImageViews[keyIndex] != null) {
+                removeView(mKeyImageViews[keyIndex]);
+            }
+            mKeyImageViews[keyIndex] = createKeyImageView(keyIndex);
+        }
+    }
+
+    private void removeMessages() {
+        // TODO create mHandler and remove all messages here
+    }
+
+    /**
+     * Requests a redraw of the entire keyboard. Calling {@link #invalidate} is
+     * not sufficient because the keyboard renders the keys to an off-screen
+     * buffer and an invalidate() only draws the cached buffer.
+     *
+     * @see #invalidateKey(int)
+     */
+    public void invalidateAllKeys() {
+        createKeyImageViews(mKeys);
+    }
+
+    public void invalidateKey(int keyIndex) {
+        if (mKeys == null)
+            return;
+        if (keyIndex < 0 || keyIndex >= mKeys.length) {
+            return;
+        }
+        if (mKeyImageViews[keyIndex] != null) {
+            removeView(mKeyImageViews[keyIndex]);
+        }
+        mKeyImageViews[keyIndex] = createKeyImageView(keyIndex);
+    }
+
+    @Override
+    public void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+    }
+
+    private CharSequence adjustCase(KeyHolder keyHolder) {
+        CharSequence label = keyHolder.key.label;
+
+        if (label != null && label.length() < 3) {
+            // if we're adjusting the case of a basic letter in the mini keyboard,
+            // we want the opposite case
+            boolean invert = keyHolder.isInMiniKb && keyHolder.isInvertible;
+            if (mKeyboard.isShifted() ^ invert) {
+                label = label.toString().toUpperCase();
+            } else {
+                label = label.toString().toLowerCase();
+            }
+
+            keyHolder.key.label = label;
+        }
+
+        return label;
+    }
+
+    public void setShiftState(int state) {
+        if (mShiftState == state) {
+            return;
+        }
+        switch (state) {
+            case SHIFT_OFF:
+                mKeyboard.setShifted(false);
+                break;
+            case SHIFT_ON:
+            case SHIFT_LOCKED:
+                mKeyboard.setShifted(true);
+                break;
+        }
+        mShiftState = state;
+        invalidateAllKeys();
+    }
+
+    public int getShiftState() {
+        return mShiftState;
+    }
+
+    public boolean isShifted() {
+        return mShiftState == SHIFT_ON || mShiftState == SHIFT_LOCKED;
+    }
+
+    public void setFocus(int index, boolean clicked) {
+        setFocus(index, clicked, true);
+    }
+
+    public void setFocus(int index, boolean clicked, boolean showFocusScale) {
+        if (mKeyImageViews == null || mKeyImageViews.length == 0) {
+            return;
+        }
+        if (index < 0 || index >= mKeyImageViews.length) {
+            index = NOT_A_KEY;
+        }
+
+        if (index != mFocusIndex || clicked != mFocusClicked) {
+            if (index != mFocusIndex) {
+                if (mFocusIndex != NOT_A_KEY) {
+                    LeanbackUtils.sendAccessibilityEvent(mKeyImageViews[mFocusIndex], false);
+                }
+                if (index != NOT_A_KEY) {
+                    LeanbackUtils.sendAccessibilityEvent(mKeyImageViews[index], true);
+                }
+            }
+
+            if (mCurrentFocusView != null) {
+                mCurrentFocusView.animate().scaleX(1f).scaleY(1f)
+                        .setInterpolator(LeanbackKeyboardContainer.sMovementInterpolator)
+                        .setStartDelay(mUnfocusStartDelay);
+                mCurrentFocusView.animate().setDuration(mClickAnimDur)
+                        .setInterpolator(LeanbackKeyboardContainer.sMovementInterpolator)
+                        .setStartDelay(mUnfocusStartDelay);
+            }
+            if (index != NOT_A_KEY) {
+                float scale = clicked ? mClickedScale : (showFocusScale ? mFocusedScale : 1.0f);
+                mCurrentFocusView = mKeyImageViews[index];
+                mCurrentFocusView.animate().scaleX(scale).scaleY(scale)
+                        .setInterpolator(LeanbackKeyboardContainer.sMovementInterpolator)
+                        .setDuration(mClickAnimDur).start();
+            }
+            mFocusIndex = index;
+            mFocusClicked = clicked;
+
+            // if focusing on a non-mini kb key, dismiss minikb
+            if (NOT_A_KEY != index && !mKeys[index].isInMiniKb) {
+                dismissMiniKeyboard();
+            }
+        }
+    }
+
+    public boolean isMiniKeyboardOnScreen() {
+        return mMiniKeyboardOnScreen;
+    }
+
+    public void onKeyLongPress() {
+        int popupResId = mKeys[mFocusIndex].key.popupResId;
+        if (popupResId != 0) {
+            dismissMiniKeyboard();
+            mMiniKeyboardOnScreen = true;
+            Keyboard miniKeyboard = new Keyboard(getContext(), popupResId);
+            List<Key> accentKeys = miniKeyboard.getKeys();
+            int totalAccentKeys = accentKeys.size();
+            int baseIndex = mFocusIndex;
+            int currentRow = mFocusIndex / mColCount;
+            int nextRow = (mFocusIndex + totalAccentKeys) / mColCount;
+            // if all accent keys don't fit in a row when aligned with the popup
+            // key, align the accent keys to the right boundary of that row
+            if (currentRow != nextRow) {
+                baseIndex = nextRow * mColCount - totalAccentKeys;
+            }
+            mBaseMiniKbIndex = baseIndex;
+            for (int i = 0; i < totalAccentKeys; i++) {
+                Key accentKey = accentKeys.get(i);
+                // inherit the key position and edge flags. this way the xml files for the each
+                // miniKb don't have to take into account the configuration of the keyboard
+                // they're being inserted into.
+                accentKey.x = mKeys[baseIndex + i].key.x;
+                accentKey.y = mKeys[baseIndex + i].key.y;
+                accentKey.edgeFlags = mKeys[baseIndex + i].key.edgeFlags;
+                mKeys[baseIndex + i].key = accentKey;
+                mKeys[baseIndex + i].isInMiniKb = true;
+                mKeys[baseIndex + i].isInvertible = (i == 0);
+            }
+
+            invalidateAllKeys();
+        }
+    }
+
+    public int getBaseMiniKbIndex() {
+        return mBaseMiniKbIndex;
+    }
+
+    /**
+     * @return  true if the minikeyboard was on-screen and is now dismissed, false otherwise.
+     */
+    public boolean dismissMiniKeyboard() {
+        if (mMiniKeyboardOnScreen) {
+            mMiniKeyboardOnScreen = false;
+            setKeys(mKeyboard.getKeys());
+            invalidateAllKeys();
+            return true;
+        }
+
+        return false;
+    }
+
+    public void setFocus(int row, int col, boolean clicked) {
+        setFocus(mColCount * row + col, clicked);
+    }
+
+    @Override
+    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        // For the kids, ya know?
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        // Round up a little
+        if (mKeyboard == null) {
+            setMeasuredDimension(getPaddingLeft() + getPaddingRight(),
+                    getPaddingTop() + getPaddingBottom());
+        } else {
+            int width = mKeyboard.getMinWidth() + getPaddingLeft() + getPaddingRight();
+            if (MeasureSpec.getSize(widthMeasureSpec) < width + 10) {
+                width = MeasureSpec.getSize(widthMeasureSpec);
+            }
+            setMeasuredDimension(width, mKeyboard.getHeight() + getPaddingTop() + getPaddingBottom());
+        }
+    }
+
+    private void setKeys(List<Key> keys) {
+        mKeys = new KeyHolder[keys.size()];
+        Iterator<Key> itt = keys.iterator();
+        for (int i = 0; i < mKeys.length && itt.hasNext(); i++) {
+            Key k = itt.next();
+            mKeys[i] = new KeyHolder(k);
+        }
+    }
+}
diff --git a/src/com/android/inputmethod/leanback/LeanbackLocales.java b/src/com/android/inputmethod/leanback/LeanbackLocales.java
new file mode 100644
index 0000000..4dd785d
--- /dev/null
+++ b/src/com/android/inputmethod/leanback/LeanbackLocales.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2019 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.leanback;
+
+import java.util.Locale;
+
+public class LeanbackLocales {
+
+    /*
+     * -Locales are organized into groups based on keyboard layout (e.g. qwerty, qwertz, azerty)
+     * -In each group, the most specific layouts (those that specify language AND country)
+     *  are listed first
+     * -The list of locales are named as such: <keyboard layout>_<country|language>_zone
+     *   (Note: the naming of the list is made as generic as possible, for example if there is only
+     *    one list for a given keyboard layout then the country, language and zone is omitted)
+     *   (Note: country is preferred over language because it is more specific, if no country is
+     *    specified, use language)
+     *   (Note: zone refers to US vs EU, which specifies which type of currency to use
+     *    dollar, euro, or pound)
+     */
+
+    /**************************** QWERTY ****************************/
+    // QWERTY (EN GB)
+    public static final Locale BRITISH_ENGLISH = new Locale("en", "GB");
+    public static final Locale[] QWERTY_GB = new Locale[] {BRITISH_ENGLISH};
+
+    // QWERTY (EN IN)
+    public static final Locale INDIAN_ENGLISH = new Locale("en", "IN");
+    public static final Locale[] QWERTY_IN = new Locale[] {INDIAN_ENGLISH};
+
+    // QWERTY (ES EU)
+    public static final Locale SPAIN_SPANISH = new Locale("es", "ES");
+    public static final Locale GALIC_SPANISH = new Locale("gl", "ES");
+    public static final Locale BASQUE_SPANISH = new Locale("eu", "ES");
+    public static final Locale[] QWERTY_ES_EU = new Locale[] {
+        SPAIN_SPANISH, GALIC_SPANISH, BASQUE_SPANISH};
+
+    // QWERTY (ES US)
+    public static final Locale OTHER_SPANISH = new Locale("es", "");
+    public static final Locale[] QWERTY_ES_US = new Locale[] {OTHER_SPANISH};
+
+    // QWERTY (AZ)
+    public static final Locale AZERBAIJANI = new Locale("az", "");
+    public static final Locale[] QWERTY_AZ = new Locale[] {AZERBAIJANI};
+
+    // QWERTY (CA)
+    public static final Locale CATALAN = new Locale("ca", "");
+    public static final Locale[] QWERTY_CA = new Locale[] {CATALAN};
+
+    // QWERTY (DA)
+    public static final Locale DANISH = new Locale("da", "");
+    public static final Locale[] QWERTY_DA = new Locale[] {DANISH};
+
+    // QWERTY (ET)
+    public static final Locale ESTONIAN = new Locale("et", "");
+    public static final Locale[] QWERTY_ET = new Locale[] {ESTONIAN};
+
+    // QWERTY (FI)
+    public static final Locale FINNISH = new Locale("fi", "");
+    public static final Locale[] QWERTY_FI = new Locale[] {FINNISH};
+
+    // QWERTY (NB)
+    public static final Locale NORWEGIAN = new Locale("nb", "");
+    public static final Locale[] QWERTY_NB = new Locale[] {NORWEGIAN};
+
+    // QWERTY (SV)
+    public static final Locale SWEDISH = new Locale("sv", "");
+    public static final Locale[] QWERTY_SV = new Locale[] {SWEDISH};
+
+    // QWERTY (US)
+    public static final Locale ENGLISH = Locale.ENGLISH;
+    public static final Locale CANADIAN_FRENCH = Locale.CANADA_FRENCH;
+    public static final Locale[] QWERTY_US = new Locale[] {ENGLISH, CANADIAN_FRENCH};
+
+
+    /**************************** QWERTZ ****************************/
+
+    // QWERTZ (CH)
+    public static final Locale SWISS_GERMAN = new Locale("de", "CH");
+    public static final Locale SWISS_ITALIAN = new Locale("it", "CH");
+    public static final Locale[] QWERTZ_CH = new Locale[] { SWISS_GERMAN, SWISS_ITALIAN};
+
+    // QWERTZ
+    public static final Locale GERMAN = new Locale("de", "");
+    public static final Locale CROATIAN = new Locale("hr", "");
+    public static final Locale CZECH = new Locale("cs", "");
+    public static final Locale SWISS_FRENCH = new Locale("fr", "CH");
+    public static final Locale HUNGARIAN = new Locale("hu", "");
+    public static final Locale SERBIAN = new Locale("sr", "");
+    public static final Locale SLOVENIAN = new Locale("sl", "");
+    public static final Locale ALBANIANIAN = new Locale("sq", "");
+    public static final Locale[] QWERTZ = new Locale[] { GERMAN, CROATIAN, CZECH, SWISS_FRENCH,
+        SWISS_ITALIAN, HUNGARIAN,SERBIAN, SLOVENIAN, ALBANIANIAN};
+
+
+    /**************************** AZERTY ****************************/
+
+    // AZERTY
+    public static final Locale FRENCH = Locale.FRENCH;
+    public static final Locale BELGIAN_DUTCH = new Locale("nl", "BE");
+    public static final Locale[] AZERTY = new Locale[] {FRENCH, BELGIAN_DUTCH};
+
+}
diff --git a/src/com/android/inputmethod/leanback/LeanbackSuggestionsFactory.java b/src/com/android/inputmethod/leanback/LeanbackSuggestionsFactory.java
new file mode 100644
index 0000000..9423132
--- /dev/null
+++ b/src/com/android/inputmethod/leanback/LeanbackSuggestionsFactory.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2019 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.leanback;
+
+import android.inputmethodservice.InputMethodService;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.inputmethod.CompletionInfo;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputConnection;
+
+import java.util.ArrayList;
+
+/**
+ * This class is used to get suggestions from LatinIme's suggestion engine based
+ * on the current composing word
+ */
+public class LeanbackSuggestionsFactory {
+
+    private static final String TAG = "LbSuggestionsFactory";
+    private static final boolean DEBUG = Log.isLoggable(TAG, Log.VERBOSE);
+
+    // mode for suggestions
+    private static final int MODE_DEFAULT = 0;
+    private static final int MODE_DOMAIN = 1;
+    private static final int MODE_AUTO_COMPLETE = 2;
+
+    private InputMethodService mContext;
+    private int mNumSuggestions;
+    private int mMode;
+
+    // current active suggestions
+    private final ArrayList<String> mSuggestions = new ArrayList<String>();
+
+    public LeanbackSuggestionsFactory(InputMethodService context, int maxSuggestions) {
+        mContext = context;
+        mNumSuggestions = maxSuggestions;
+    }
+
+    public void onStartInput(EditorInfo attribute) {
+        mMode = MODE_DEFAULT;
+
+        if ((attribute.inputType & EditorInfo.TYPE_TEXT_FLAG_AUTO_COMPLETE) != 0) {
+            mMode = MODE_AUTO_COMPLETE;
+        }
+
+        switch (LeanbackUtils.getInputTypeClass(attribute)) {
+            case EditorInfo.TYPE_CLASS_TEXT:
+                switch (LeanbackUtils.getInputTypeVariation(attribute)) {
+                    case EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS:
+                    case EditorInfo.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS:
+                        mMode = MODE_DOMAIN;
+                        break;
+                }
+                break;
+        }
+    }
+
+    /**
+     * call this method in {@link InputMethodService#onDisplayCompletions} to
+     * insert completions provided by the app in front of the dictionary
+     * suggestions
+     */
+    public void onDisplayCompletions(CompletionInfo[] completions) {
+        createSuggestions();
+
+        // insert completions to the front of suggestions
+        final int totalCompletions = completions == null ? 0 : completions.length;
+        for (int i = 0; i < totalCompletions && mSuggestions.size() < mNumSuggestions; i++) {
+            if (TextUtils.isEmpty(completions[i].getText())) {
+                break;
+            }
+            mSuggestions.add(i, completions[i].getText().toString());
+        }
+
+        if (Log.isLoggable(TAG, Log.VERBOSE)) {
+            for (int i = 0; i < mSuggestions.size(); i++) {
+                Log.d(TAG, "completion " + i + ": " + mSuggestions.get(i));
+            }
+        }
+    }
+
+    public boolean shouldSuggestionsAmend() {
+        return (mMode == MODE_DOMAIN);
+    }
+
+    public ArrayList<String> getSuggestions() {
+        return mSuggestions;
+    }
+
+    public void clearSuggestions() {
+        mSuggestions.clear();
+    }
+
+    public void createSuggestions() {
+        clearSuggestions();
+
+        if (mMode == MODE_DOMAIN) {
+            String[] commonDomains =
+                    mContext.getResources().getStringArray(R.array.common_domains);
+            for (String domain : commonDomains) {
+                mSuggestions.add(domain);
+            }
+        }
+    }
+}
diff --git a/src/com/android/inputmethod/leanback/LeanbackUtils.java b/src/com/android/inputmethod/leanback/LeanbackUtils.java
new file mode 100644
index 0000000..530e851
--- /dev/null
+++ b/src/com/android/inputmethod/leanback/LeanbackUtils.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2019 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.leanback;
+
+import android.os.Handler;
+import android.view.View;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.inputmethod.EditorInfo;
+
+/**
+ * This class contains common methods used by LeanbackImeService classes
+ */
+public class LeanbackUtils {
+
+    private static final int ACCESSIBILITY_DELAY_MS = 250;
+    private static final Handler sAccessibilityHandler = new Handler();
+
+    /**
+     * checks if the keyCode represents an alphabet char
+     *
+     * @return true if the keyCode represents an alphabet char
+     */
+    public static boolean isAlphabet(int keyCode) {
+        if (Character.isLetter(keyCode)) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * get the IME action of the current {@link EditText}
+     */
+    public static int getImeAction(EditorInfo attribute) {
+        return attribute.imeOptions
+                & (EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION);
+    }
+
+    /**
+     * get the input type class of the current {@link EditText}
+     */
+    public static int getInputTypeClass(EditorInfo attribute) {
+        return attribute.inputType & EditorInfo.TYPE_MASK_CLASS;
+    }
+
+    /**
+     * get the input type variation of the current {@link EditText}
+     */
+    public static int getInputTypeVariation(EditorInfo attribute) {
+        return attribute.inputType & EditorInfo.TYPE_MASK_VARIATION;
+    }
+
+    public static void sendAccessibilityEvent(final View view, boolean focusGained) {
+        if (view != null && focusGained) {
+            sAccessibilityHandler.removeCallbacksAndMessages(null);
+            sAccessibilityHandler.postDelayed(new Runnable() {
+                public void run() {
+                    view.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
+                }
+            }, ACCESSIBILITY_DELAY_MS);
+        }
+    }
+}
diff --git a/src/com/android/inputmethod/leanback/service/LeanbackImeService.java b/src/com/android/inputmethod/leanback/service/LeanbackImeService.java
new file mode 100644
index 0000000..ab286b2
--- /dev/null
+++ b/src/com/android/inputmethod/leanback/service/LeanbackImeService.java
@@ -0,0 +1,344 @@
+/*
+ * Copyright (C) 2019 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.leanback.service;
+
+import android.content.Intent;
+import android.inputmethodservice.InputMethodService;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.view.InputDevice;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.inputmethod.CompletionInfo;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputConnection;
+import android.util.Log;
+
+import com.android.inputmethod.leanback.LeanbackKeyboardContainer;
+import com.android.inputmethod.leanback.LeanbackKeyboardController;
+import com.android.inputmethod.leanback.LeanbackKeyboardView;
+import com.android.inputmethod.leanback.LeanbackLocales;
+import com.android.inputmethod.leanback.LeanbackSuggestionsFactory;
+import com.android.inputmethod.leanback.LeanbackUtils;
+
+/**
+ * This is a simplified version of GridIme
+ */
+public class LeanbackImeService extends InputMethodService {
+
+    private static final String TAG = "LbImeService";
+    private static final boolean DEBUG = false;
+
+    // use dpad events, with lock axis
+    static final int MODE_TRACKPAD_NAVIGATION = 0;
+    // track motion directly.
+    static final int MODE_FREE_MOVEMENT = 1;
+
+    public static final int MAX_SUGGESTIONS = 10;
+
+    private static final int MSG_SUGGESTIONS_CLEAR = 123;
+    private static final int SUGGESTIONS_CLEAR_DELAY = 1000;
+
+    public static final String IME_OPEN = "com.android.inputmethod.leanback.action.IME_OPEN";
+    public static final String IME_CLOSE = "com.android.inputmethod.leanback.action.IME_CLOSE";
+
+    private LeanbackKeyboardController.InputListener mInputListener
+            = new LeanbackKeyboardController.InputListener() {
+        @Override
+        public void onEntry(int type, int keyCode, CharSequence result) {
+            handleTextEntry(type, keyCode, result);
+        }
+    };
+
+    private View mInputView;
+    private LeanbackKeyboardController mKeyboardController;
+    private LeanbackSuggestionsFactory mSuggestionsFactory;
+
+    // IME will auto insert space after clicking on the candidates if next
+    // character is alphabet
+    private boolean mEnterSpaceBeforeCommitting;
+
+    private boolean mShouldClearSuggestions = true;
+    private final Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == MSG_SUGGESTIONS_CLEAR) {
+                if (mShouldClearSuggestions) {
+                    mSuggestionsFactory.clearSuggestions();
+                    mKeyboardController.updateSuggestions(mSuggestionsFactory.getSuggestions());
+                    mShouldClearSuggestions = false;
+                }
+            }
+        }
+    };
+
+    public LeanbackImeService() {
+        if (!enableHardwareAcceleration()) {
+            Log.w(TAG, "Could not enable hardware acceleration");
+        }
+    }
+
+    private void clearSuggestionsDelayed() {
+        // if suggestions amend, we should keep clearing them
+        if (!mSuggestionsFactory.shouldSuggestionsAmend()) {
+            mHandler.removeMessages(MSG_SUGGESTIONS_CLEAR);
+            mShouldClearSuggestions = true;
+            mHandler.sendEmptyMessageDelayed(MSG_SUGGESTIONS_CLEAR, SUGGESTIONS_CLEAR_DELAY);
+        }
+    }
+
+    @Override
+    public void onInitializeInterface() {
+        mKeyboardController = new LeanbackKeyboardController(this, mInputListener);
+        mEnterSpaceBeforeCommitting = false;
+        mSuggestionsFactory = new LeanbackSuggestionsFactory(this, MAX_SUGGESTIONS);
+    }
+
+    @Override
+    public View onCreateInputView() {
+        mInputView = mKeyboardController.getView();
+        mInputView.requestFocus();
+        return mInputView;
+    }
+
+    /**
+     * {@inheritDoc} This function gets called whenever we start the input
+     * window
+     */
+    @Override
+    public void onStartInputView(EditorInfo info, boolean restarting) {
+        super.onStartInputView(info, restarting);
+        mKeyboardController.onStartInputView();
+        sendBroadcast(new Intent(IME_OPEN));
+
+        if (mKeyboardController.areSuggestionsEnabled()) {
+            mSuggestionsFactory.createSuggestions();
+            mKeyboardController.updateSuggestions(mSuggestionsFactory.getSuggestions());
+
+            // repost text to get completions
+            InputConnection ic = getCurrentInputConnection();
+            if (ic != null) {
+                String c = getEditorText(ic);
+                ic.deleteSurroundingText(getCharLengthBeforeCursor(ic),
+                        getCharLengthAfterCursor(ic));
+                ic.commitText(c, 1);
+            }
+        }
+    }
+
+
+    @Override
+    public void onFinishInputView(boolean finishingInput) {
+        super.onFinishInputView(finishingInput);
+        sendBroadcast(new Intent(IME_CLOSE));
+        mSuggestionsFactory.clearSuggestions();
+    }
+
+    /**
+     * {@inheritDoc} This function doesn't get called when we dismiss the
+     * keyboard, and reopen it on the same input field
+     */
+    @Override
+    public void onStartInput(EditorInfo attribute, boolean restarting) {
+        super.onStartInput(attribute, restarting);
+        mEnterSpaceBeforeCommitting = false;
+        mSuggestionsFactory.onStartInput(attribute);
+        mKeyboardController.onStartInput(attribute);
+    }
+
+    /**
+     * {@inheritDoc} Always return true to show GridIme when editText calls
+     * requestFocus
+     */
+    @Override
+    public boolean onShowInputRequested(int flags, boolean configChange) {
+        return true;
+    }
+
+    /**
+     * {@inheritDoc} Always enable soft keyboard. If we return the super method,
+     * the IME will not be shown if there is a hardware keyboard connected
+     */
+    @Override
+    public boolean onEvaluateInputViewShown() {
+        return true;
+    }
+
+    @Override
+    public boolean onEvaluateFullscreenMode() {
+        // Superclass always returns true in landscape mode.
+        // Assume we're on TV with lots of display area.
+        return false;
+    }
+
+    @Override
+    public boolean onKeyUp(int keyCode, KeyEvent event) {
+        if (isInputViewShown()
+                && mKeyboardController.onKeyUp(keyCode, event)) {
+            return true;
+        }
+        return super.onKeyUp(keyCode, event);
+    }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (isInputViewShown()
+                && mKeyboardController.onKeyDown(keyCode, event)) {
+            return true;
+        }
+        return super.onKeyDown(keyCode, event);
+    }
+
+    @Override
+    public boolean onGenericMotionEvent(MotionEvent event) {
+        if (isInputViewShown() && (event.getSource() & InputDevice.SOURCE_TOUCH_NAVIGATION)
+                == InputDevice.SOURCE_TOUCH_NAVIGATION) {
+            if (mKeyboardController.onGenericMotionEvent(event)) {
+                return true;
+            }
+        }
+        return super.onGenericMotionEvent(event);
+    }
+
+    @Override
+    public void onDisplayCompletions(CompletionInfo[] completions) {
+        if (mKeyboardController.areSuggestionsEnabled()) {
+            mShouldClearSuggestions = false;
+            mHandler.removeMessages(MSG_SUGGESTIONS_CLEAR);
+            mSuggestionsFactory.onDisplayCompletions(completions);
+            mKeyboardController.updateSuggestions(mSuggestionsFactory.getSuggestions());
+        }
+    }
+
+    private String getEditorText(InputConnection ic) {
+        StringBuilder editorText = new StringBuilder();
+        CharSequence textBeforeCursor = ic.getTextBeforeCursor(1000, 0);
+        CharSequence textAfterCursor = ic.getTextAfterCursor(1000, 0);
+        if (textBeforeCursor != null) {
+            editorText.append(textBeforeCursor);
+        }
+        if (textAfterCursor != null) {
+            editorText.append(textAfterCursor);
+        }
+        return editorText.toString();
+    }
+
+    private int getAmpersandLocation(InputConnection ic) {
+        String editorText = getEditorText(ic);
+        int indexOf = editorText.indexOf('@');
+        if (indexOf < 0) {
+            indexOf = editorText.length();
+        }
+
+        return indexOf;
+    }
+
+    private int getCharLengthBeforeCursor(InputConnection ic) {
+        final CharSequence textLeft = ic.getTextBeforeCursor(1000, 0);
+        return textLeft != null ? textLeft.length() : 0;
+    }
+
+    private int getCharLengthAfterCursor(InputConnection ic ) {
+        final CharSequence textRight = ic.getTextAfterCursor(1000, 0);
+        return textRight != null ? textRight.length() : 0;
+    }
+
+    private void handleTextEntry(int type, int keyCode, CharSequence c) {
+        InputConnection ic = getCurrentInputConnection();
+        boolean updateSuggestions = true;
+
+        if (ic == null) {
+            return;
+        }
+
+        switch (type) {
+            case LeanbackKeyboardController.InputListener.ENTRY_TYPE_BACKSPACE:
+                clearSuggestionsDelayed();
+                ic.deleteSurroundingText(1, 0);
+                mEnterSpaceBeforeCommitting = false;
+                break;
+            case LeanbackKeyboardController.InputListener.ENTRY_TYPE_LEFT:
+            case LeanbackKeyboardController.InputListener.ENTRY_TYPE_RIGHT:
+                CharSequence textBeforeCursor = ic.getTextBeforeCursor(1000, 0);
+                int newCursorPosition = textBeforeCursor == null ? 0 : textBeforeCursor.length();
+
+                if (type == LeanbackKeyboardController.InputListener.ENTRY_TYPE_LEFT) {
+                    if (newCursorPosition > 0) {
+                        newCursorPosition--;
+                    }
+                } else {
+                    CharSequence textAfterCursor = ic.getTextAfterCursor(1000, 0);
+                    if (textAfterCursor != null && textAfterCursor.length() > 0) {
+                        newCursorPosition++;
+                    }
+                }
+
+                ic.setSelection(newCursorPosition, newCursorPosition);
+                break;
+            case LeanbackKeyboardController.InputListener.ENTRY_TYPE_STRING:
+                clearSuggestionsDelayed();
+                if (mEnterSpaceBeforeCommitting
+                        && mKeyboardController.enableAutoEnterSpace()) {
+                    if (LeanbackUtils.isAlphabet(keyCode)) {
+                        ic.commitText(" ", 1);
+                    }
+                    mEnterSpaceBeforeCommitting = false;
+                }
+                ic.commitText(c, 1);
+                if (keyCode == LeanbackKeyboardView.ASCII_PERIOD) {
+                    mEnterSpaceBeforeCommitting = true;
+                }
+                break;
+            case LeanbackKeyboardController.InputListener.ENTRY_TYPE_SUGGESTION:
+            case LeanbackKeyboardController.InputListener.ENTRY_TYPE_VOICE:
+                clearSuggestionsDelayed();
+                if (!mSuggestionsFactory.shouldSuggestionsAmend()) {
+                    ic.deleteSurroundingText(getCharLengthBeforeCursor(ic),
+                            getCharLengthAfterCursor(ic));
+                } else {
+                    int location = getAmpersandLocation(ic);
+                    ic.setSelection(location, location);
+                    ic.deleteSurroundingText(0, getCharLengthAfterCursor(ic));
+                }
+                ic.commitText(c, 1);
+                mEnterSpaceBeforeCommitting = true;
+                // go straight into action (skip updating suggestions)
+            case LeanbackKeyboardController.InputListener.ENTRY_TYPE_ACTION:
+                sendDefaultEditorAction(false);
+                updateSuggestions = false;
+                break;
+            case LeanbackKeyboardController.InputListener.ENTRY_TYPE_DISMISS:
+                ic.performEditorAction(EditorInfo.IME_ACTION_NONE);
+                updateSuggestions = false;
+                break;
+            case LeanbackKeyboardController.InputListener.ENTRY_TYPE_VOICE_DISMISS:
+                ic.performEditorAction(EditorInfo.IME_ACTION_GO);
+                updateSuggestions = false;
+                break;
+        }
+
+        if (mKeyboardController.areSuggestionsEnabled() && updateSuggestions) {
+            mKeyboardController.updateSuggestions(mSuggestionsFactory.getSuggestions());
+        }
+    }
+
+    public void onHideIme() {
+        requestHideSelf(0);
+    }
+}
diff --git a/src/com/android/inputmethod/leanback/voice/BitmapSoundLevelView.java b/src/com/android/inputmethod/leanback/voice/BitmapSoundLevelView.java
new file mode 100644
index 0000000..e74500e
--- /dev/null
+++ b/src/com/android/inputmethod/leanback/voice/BitmapSoundLevelView.java
@@ -0,0 +1,282 @@
+/*
+ * Copyright (C) 2019 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.leanback.voice;
+
+import com.android.inputmethod.leanback.R;
+
+import android.animation.ObjectAnimator;
+import android.animation.TimeAnimator;
+import android.animation.TimeAnimator.TimeListener;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.view.accessibility.AccessibilityNodeInfo;
+
+/**
+ * Displays the recording value of the microphone.
+ */
+public class BitmapSoundLevelView extends View {
+    private static final boolean DEBUG = false;
+    private static final String TAG = "BitmapSoundLevelsView";
+
+    private static final int MIC_PRIMARY_LEVEL_IMAGE_OFFSET = 3;
+    private static final int MIC_LEVEL_GUIDELINE_OFFSET = 13;
+
+    private final Paint mEmptyPaint = new Paint();
+    private Rect mDestRect;
+
+    private final int mEnableBackgroundColor;
+    private final int mDisableBackgroundColor;
+
+    // Generates clock ticks for the animation using the global animation loop.
+    private TimeAnimator mAnimator;
+
+    private int mCurrentVolume;
+
+    // Bitmap for the main level meter, most closely follows the mic.
+    private final Bitmap mPrimaryLevel;
+
+    // Bitmap for trailing level meter, shows a peak level.
+    private final Bitmap mTrailLevel;
+
+    // The minimum size of the levels, that is the size when volume is 0.
+    private final int mMinimumLevelSize;
+
+    // A translation to apply to the center of the levels, allows the levels to be offset from
+    // the center of the mView without having to translate the whole mView.
+    private final int mCenterTranslationX;
+    private final int mCenterTranslationY;
+
+    // Peak level observed, and how many frames left before it starts decaying.
+    private int mPeakLevel;
+    private int mPeakLevelCountDown;
+
+    // Input level is pulled from here.
+    private SpeechLevelSource mLevelSource;
+
+    private Paint mPaint;
+
+    public BitmapSoundLevelView(Context context) {
+        this(context, null);
+    }
+
+    public BitmapSoundLevelView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public BitmapSoundLevelView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BitmapSoundLevelView,
+                defStyleAttr, 0);
+        mEnableBackgroundColor = a.getColor(R.styleable.BitmapSoundLevelView_enabledBackgroundColor,
+                Color.parseColor("#66FFFFFF"));
+
+        mDisableBackgroundColor = a.getColor(
+                R.styleable.BitmapSoundLevelView_disabledBackgroundColor,
+                Color.WHITE);
+
+        boolean primaryLevelEnabled = false;
+        boolean peakLevelEnabled = false;
+        int primaryLevelId = 0;
+        if (a.hasValue(R.styleable.BitmapSoundLevelView_primaryLevels)) {
+            primaryLevelId = a.getResourceId(
+                    R.styleable.BitmapSoundLevelView_primaryLevels, R.drawable.vs_reactive_dark);
+            primaryLevelEnabled = true;
+        }
+
+        int trailLevelId = 0;
+        if (a.hasValue(R.styleable.BitmapSoundLevelView_trailLevels)) {
+            trailLevelId = a.getResourceId(
+                    R.styleable.BitmapSoundLevelView_trailLevels, R.drawable.vs_reactive_light);
+            peakLevelEnabled = true;
+        }
+
+        mCenterTranslationX = a.getDimensionPixelOffset(
+                R.styleable.BitmapSoundLevelView_levelsCenterX, 0);
+
+        mCenterTranslationY = a.getDimensionPixelOffset(
+                R.styleable.BitmapSoundLevelView_levelsCenterY, 0);
+
+        mMinimumLevelSize = a.getDimensionPixelOffset(
+                R.styleable.BitmapSoundLevelView_minLevelRadius, 0);
+
+        a.recycle();
+
+        if (primaryLevelEnabled) {
+            mPrimaryLevel = BitmapFactory.decodeResource(getResources(), primaryLevelId);
+        } else {
+            mPrimaryLevel = null;
+        }
+
+        if (peakLevelEnabled) {
+            mTrailLevel = BitmapFactory.decodeResource(getResources(), trailLevelId);
+        } else {
+            mTrailLevel = null;
+        }
+
+        mPaint = new Paint();
+
+        mDestRect = new Rect();
+
+        mEmptyPaint.setFilterBitmap(true);
+
+        // Safe source, replaced with system one when attached.
+        mLevelSource = new SpeechLevelSource();
+        mLevelSource.setSpeechLevel(0);
+
+        // This animator generates ticks that invalidate the
+        // mView so that the animation is synced with the global animation loop.
+        mAnimator = new TimeAnimator();
+        mAnimator.setRepeatCount(ObjectAnimator.INFINITE);
+        mAnimator.setTimeListener(new TimeListener() {
+            @Override
+            public void onTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime) {
+                invalidate();
+            }
+        });
+    }
+
+    @Override
+    public void setEnabled(boolean enabled) {
+        super.setEnabled(enabled);
+        updateAnimatorState();
+    }
+
+    private void updateAnimatorState() {
+        if (isEnabled()) {
+            startAnimator();
+        } else {
+            stopAnimator();
+        }
+    }
+
+    private void startAnimator() {
+        if (DEBUG) Log.d(TAG, "startAnimator()");
+        if (!mAnimator.isStarted()) {
+            mAnimator.start();
+        }
+    }
+
+    private void stopAnimator() {
+        if (DEBUG) Log.d(TAG, "stopAnimator()");
+        mAnimator.cancel();
+    }
+
+    @Override
+    protected void onAttachedToWindow() {
+        super.onAttachedToWindow();
+        updateAnimatorState();
+    }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        stopAnimator();
+        super.onDetachedFromWindow();
+    }
+
+    @Override
+    public void onWindowFocusChanged(boolean hasWindowFocus) {
+        super.onWindowFocusChanged(hasWindowFocus);
+        if (hasWindowFocus) {
+            updateAnimatorState();
+        } else {
+            stopAnimator();
+        }
+    }
+
+    public void setLevelSource(SpeechLevelSource source) {
+        if (DEBUG) {
+            Log.d(TAG, "Speech source set");
+        }
+        mLevelSource = source;
+    }
+
+    @Override
+    public void onDraw(Canvas canvas) {
+        if (isEnabled()) {
+            canvas.drawColor(mEnableBackgroundColor);
+
+            int level = mLevelSource.getSpeechLevel();
+
+            // Set the peak level for the trailing circle, goes to a peak, waits there for
+            // some frames, then starts to decay.
+            if (level > mPeakLevel) {
+                mPeakLevel = level;
+                mPeakLevelCountDown = 25;
+            } else {
+                if (mPeakLevelCountDown == 0) {
+                    mPeakLevel = Math.max(0, mPeakLevel - 2);
+                } else {
+                    mPeakLevelCountDown--;
+                }
+            }
+
+            // Either ease towards the target level, or decay away from it depending on whether
+            // its higher or lower than the current.
+            if (level > mCurrentVolume) {
+                mCurrentVolume = mCurrentVolume + ((level - mCurrentVolume) / 4);
+            } else {
+                mCurrentVolume = (int) (mCurrentVolume * 0.95f);
+            }
+
+            int centerX = mCenterTranslationX + (getWidth() / 2);
+            int centerY = mCenterTranslationY + (getWidth() / 2);
+            if (mTrailLevel != null) {
+                int size = ((centerX - mMinimumLevelSize) * mPeakLevel) / 100 + mMinimumLevelSize;
+
+                mDestRect.set(
+                        centerX - size,
+                        centerY - size,
+                        centerX + size,
+                        centerY + size);
+                canvas.drawBitmap(mTrailLevel, null, mDestRect, mEmptyPaint);
+            }
+
+            if (mPrimaryLevel != null) {
+                int size =
+                        ((centerX - mMinimumLevelSize) * mCurrentVolume) / 100 + mMinimumLevelSize;
+
+                mDestRect.set(
+                        centerX - size,
+                        centerY - size,
+                        centerX + size,
+                        centerY + size);
+                canvas.drawBitmap(mPrimaryLevel, null, mDestRect, mEmptyPaint);
+                mPaint.setColor(getResources().getColor(R.color.search_mic_background));
+                mPaint.setStyle(Paint.Style.FILL);
+                canvas.drawCircle(centerX, centerY, mMinimumLevelSize -
+                        MIC_PRIMARY_LEVEL_IMAGE_OFFSET, mPaint);
+            }
+            if(mTrailLevel != null && mPrimaryLevel != null) {
+                mPaint.setColor(getResources().getColor(R.color.search_mic_levels_guideline));
+                mPaint.setStyle(Paint.Style.STROKE);
+                canvas.drawCircle(centerX, centerY, centerX - MIC_LEVEL_GUIDELINE_OFFSET, mPaint);
+            }
+        } else {
+            canvas.drawColor(mDisableBackgroundColor);
+        }
+    }
+}
diff --git a/src/com/android/inputmethod/leanback/voice/RecognizerView.java b/src/com/android/inputmethod/leanback/voice/RecognizerView.java
new file mode 100644
index 0000000..ac162a2
--- /dev/null
+++ b/src/com/android/inputmethod/leanback/voice/RecognizerView.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2019 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.leanback.voice;
+
+import com.android.inputmethod.leanback.LeanbackUtils;
+import com.android.inputmethod.leanback.R;
+
+import android.content.Context;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+
+/**
+ * Displays the recognizer status.
+ * This mView includes a {@link BitmapSoundLevelsView} to display the recording value.
+ */
+public class RecognizerView extends RelativeLayout {
+    private static final boolean DEBUG = false;
+    private static final String TAG = "RecognizerView";
+
+    private BitmapSoundLevelView mSoundLevels;
+    protected ImageView mMicButton;
+
+    private Callback mCallback;
+
+    private State mState;
+
+    private boolean mEnabled;
+
+    private enum State {
+        NOT_LISTENING,
+        MIC_INITIALIZING,
+        LISTENING,
+        RECORDING,
+        RECOGNIZING,
+    }
+
+    public RecognizerView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public RecognizerView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public RecognizerView(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void onFinishInflate() {
+        LayoutInflater inflater = LayoutInflater.from(getContext());
+        inflater.inflate(R.layout.recognizer_view, this, true);
+
+        mSoundLevels = (BitmapSoundLevelView) findViewById(R.id.microphone);
+        mMicButton = (ImageView) findViewById(R.id.recognizer_mic_button);
+
+        mState = State.NOT_LISTENING;
+    }
+
+    public View getMicButton() {
+        return mMicButton;
+    }
+
+    public void onClick() {
+        if (DEBUG) Log.v(TAG, "onClick " + mState);
+        switch (mState) {
+            case MIC_INITIALIZING:
+                if (DEBUG)
+                    Log.d(TAG, "Ignore #onClick as mic is initializing");
+                return;
+            case LISTENING:
+                mCallback.onCancelRecordingClicked();
+                break;
+            case RECORDING:
+                mCallback.onStopRecordingClicked();
+                break;
+            case RECOGNIZING:
+                mCallback.onCancelRecordingClicked();
+                break;
+            case NOT_LISTENING:
+                mCallback.onStartRecordingClicked();
+                break;
+            default:
+                return;
+        }
+    }
+
+    @Override
+    public void onAttachedToWindow() {
+        super.onAttachedToWindow();
+
+        // When the mView is attached to a window, a callback has to be already set.
+        //
+        // This isn't true when this mView is used in the intent API layout. When the user hits
+        // retry, we reattach the layout to the window, which is being shown. onAttachedToWindow( )
+        // will be called from inside setContentView( ) and before we can attach a callback to it.
+        // We ensure that the callback is not used when not set.
+        //
+        // Preconditions.checkNotNull(mCallback);
+
+        // The callbacks from the microphone happen before the mView is attached to the window.
+        // I need to investigate how to change the code to avoid it.
+        refreshUi();
+    }
+
+    public void showRecording() {
+        updateState(State.RECORDING);
+    }
+
+    public void showListening() {
+        updateState(State.LISTENING);
+    }
+
+    public void showNotListening() {
+        updateState(State.NOT_LISTENING);
+    }
+
+    public void showRecognizing() {
+        updateState(State.RECOGNIZING);
+    }
+
+    public void setCallback(final Callback callback) {
+        mCallback = callback;
+    }
+
+    private void updateState(State newState) {
+        if (DEBUG) Log.d(TAG, mState + " -> " + newState);
+        mState = newState;
+        refreshUi();
+    }
+
+    public void setSpeechLevelSource(SpeechLevelSource source) {
+        mSoundLevels.setLevelSource(source);
+    }
+
+    @Override
+    public Parcelable onSaveInstanceState() {
+        SavedState ss = new SavedState(super.onSaveInstanceState());
+        ss.mState = mState;
+        return ss;
+    }
+
+    @Override
+    public void onRestoreInstanceState(Parcelable state) {
+        if (!(state instanceof SavedState)) {
+            super.onRestoreInstanceState(state);
+            return;
+        }
+
+        SavedState ss = (SavedState) state;
+        super.onRestoreInstanceState(ss.getSuperState());
+
+        mState = ss.mState;
+    }
+
+    protected void refreshUi() {
+        if (!mEnabled) {
+            return;
+        }
+        switch (mState) {
+            case MIC_INITIALIZING:
+                mMicButton.setImageResource(R.drawable.vs_micbtn_on_selector);
+                mSoundLevels.setEnabled(false);
+                break;
+            case LISTENING:
+                mMicButton.setImageResource(R.drawable.vs_micbtn_on_selector);
+                mSoundLevels.setEnabled(true);
+                break;
+            case RECORDING:
+                mMicButton.setImageResource(R.drawable.vs_micbtn_rec_selector);
+                mSoundLevels.setEnabled(true);
+                break;
+            case NOT_LISTENING:
+                mMicButton.setImageResource(R.drawable.vs_micbtn_off_selector);
+                mSoundLevels.setEnabled(false);
+                break;
+            case RECOGNIZING:
+                mMicButton.setImageResource(R.drawable.vs_micbtn_off_selector);
+                mSoundLevels.setEnabled(false);
+                break;
+        }
+    }
+
+    public void setMicFocused(boolean hasFocus) {
+        if (mEnabled) {
+            if (hasFocus) {
+                mMicButton.setImageResource(R.drawable.ic_voice_focus);
+            } else {
+                mMicButton.setImageResource(R.drawable.ic_voice_available);
+            }
+
+            LeanbackUtils.sendAccessibilityEvent(mMicButton, hasFocus);
+        }
+    }
+
+    public void setMicEnabled(boolean enabled) {
+        mEnabled = enabled;
+        if (enabled) {
+            mMicButton.setAlpha(1.0f);
+            mMicButton.setImageResource(R.drawable.ic_voice_available);
+        } else {
+            mMicButton.setAlpha(0.1f);
+            mMicButton.setImageResource(R.drawable.ic_voice_off);
+        }
+    }
+
+    public void showInitializingMic() {
+        updateState(State.MIC_INITIALIZING);
+    }
+
+    public interface Callback {
+        void onStartRecordingClicked();
+        void onStopRecordingClicked();
+        void onCancelRecordingClicked();
+    }
+
+    public static class SavedState extends View.BaseSavedState {
+        State mState;
+
+        public SavedState(Parcelable superState) {
+            super(superState);
+        }
+
+        @Override
+        public void writeToParcel(Parcel out, int flags) {
+            super.writeToParcel(out, flags);
+            out.writeString(mState.toString());
+        }
+
+        @SuppressWarnings("hiding")
+        public static final Parcelable.Creator<SavedState> CREATOR
+        = new Parcelable.Creator<SavedState>() {
+
+            @Override
+            public SavedState createFromParcel(Parcel in) {
+                return new SavedState(in);
+            }
+
+            @Override
+            public SavedState[] newArray(int size) {
+                return new SavedState[size];
+            }
+        };
+
+        private SavedState(Parcel in) {
+            super(in);
+            mState = State.valueOf(in.readString());
+        }
+    }
+}
diff --git a/src/com/android/inputmethod/leanback/voice/SpeechLevelSource.java b/src/com/android/inputmethod/leanback/voice/SpeechLevelSource.java
new file mode 100644
index 0000000..2c94589
--- /dev/null
+++ b/src/com/android/inputmethod/leanback/voice/SpeechLevelSource.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2019 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.leanback.voice;
+
+/**
+ * Keeps track of the speech level as last observed by the recognition
+ * engine as microphone data flows through it. Can be polled by the UI to
+ * animate its views.
+ */
+public class SpeechLevelSource {
+    private volatile int mSpeechLevel;
+
+    public void setSpeechLevel(int speechLevel) {
+        if (speechLevel < 0 || speechLevel > 100) {
+            throw new IllegalArgumentException();
+        }
+        mSpeechLevel = speechLevel;
+    }
+
+    public int getSpeechLevel() {
+        return mSpeechLevel;
+    }
+
+    public void reset() {
+        mSpeechLevel = -1;
+    }
+
+    public boolean isValid() {
+        return mSpeechLevel > 0;
+    }
+}
+
