diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 5434106c504e8755341f94c7ef186e4dbe03b263..9d828ef91782695a92f6bf633374f4b4ae4c8645 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -488,6 +488,8 @@
             <enum name="hebrew" value="4" />
             <enum name="armenian" value="5" />
             <enum name="georgian" value="6" />
+            <enum name="khmer" value="7" />
+            <enum name="lao" value="8" />
         </attr>
     </declare-styleable>
 
diff --git a/java/res/xml/keyboard_layout_set_khmer.xml b/java/res/xml/keyboard_layout_set_khmer.xml
index 181f98b3dd8e9240f5d306ced651b9a44cfd9014..752c8520a39573b5dd94b5084bae48242abdda85 100644
--- a/java/res/xml/keyboard_layout_set_khmer.xml
+++ b/java/res/xml/keyboard_layout_set_khmer.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="khmer" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_khmer"
diff --git a/java/res/xml/keyboard_layout_set_lao.xml b/java/res/xml/keyboard_layout_set_lao.xml
index 2ffde45dbb5397f90f725eb6d0acd79fff2d5a38..6285f87f92cacedab552bc79df4e3f45ceffe0a7 100644
--- a/java/res/xml/keyboard_layout_set_lao.xml
+++ b/java/res/xml/keyboard_layout_set_lao.xml
@@ -20,6 +20,8 @@
 
 <KeyboardLayoutSet
     xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
+    <Feature
+        latin:supportedScript="lao" />
     <Element
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_lao"
diff --git a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
index a76a6dfd7d9112c6f4c311160cac095c17dbc76f..73f715a4e05b8783b28da4ac325c01589c83e676 100644
--- a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
@@ -33,6 +33,8 @@ public class ScriptUtils {
     public static final int SCRIPT_HEBREW = 4;
     public static final int SCRIPT_ARMENIAN = 5;
     public static final int SCRIPT_GEORGIAN = 6;
+    public static final int SCRIPT_KHMER = 7;
+    public static final int SCRIPT_LAO = 8;
     public static final TreeMap<String, Integer> mSpellCheckerLanguageToScript;
     static {
         // List of the supported languages and their associated script. We won't check
@@ -122,6 +124,14 @@ public class ScriptUtils {
             // or Georgian supplement block, U+2D00..U+2D2F
             return (codePoint >= 0x10A0 && codePoint <= 0x10FF
                     || codePoint >= 0x2D00 && codePoint <= 0x2D2F);
+        case SCRIPT_KHMER:
+            // Khmer letters are in unicode block U+1780..U+17FF, and the Khmer symbols block
+            // is U+19E0..U+19FF
+            return (codePoint >= 0x1780 && codePoint <= 0x17FF
+                    || codePoint >= 0x19E0 && codePoint <= 0x19FF);
+        case SCRIPT_LAO:
+            // The Lao block is U+0E80..U+0EFF
+            return (codePoint >= 0xE80 && codePoint <= 0xEFF);
         case SCRIPT_UNKNOWN:
             return true;
         default: