diff --git a/lib/main_common.pm b/lib/main_common.pm
--- a/lib/main_common.pm
+++ b/lib/main_common.pm
@@ -75,12 +75,17 @@
     }
 }
 
-# switch to 'native' or 'us' keyboard layout in a graphical desktop
+# switch to 'native' or 'ascii' input method in a graphical desktop
+# usually switched configs have one mode for inputting ascii-ish
+# characters (which may be 'us' keyboard layout, or a local layout for
+# inputting ascii like 'jp') and one mode for inputting native
+# characters (which may be another keyboard layout, like 'ru', or an
+# input method for more complex languages)
 # 'environment' can be a desktop name or 'anaconda' for anaconda
 # if not set, will use get_var('DESKTOP') or default 'anaconda'
 sub desktop_switch_layout {
     my ($layout, $environment) = @_;
-    $layout //= 'us';
+    $layout //= 'ascii';
     $environment //= get_var("DESKTOP", "anaconda");
     # if already selected, we're good
     return if (check_screen "${environment}_layout_${layout}", 3);
diff --git a/main.pm b/main.pm
--- a/main.pm
+++ b/main.pm
@@ -183,7 +183,11 @@
     if (get_var("DESKTOP")) {
         autotest::loadtest "tests/_graphical_wait_login.pm";
     }
-    else {
+    # Test non-US input at this point, on language tests
+    if (get_var("SWITCHED_LAYOUT") || get_var("INPUT_METHOD")) {
+        autotest::loadtest "tests/_graphical_input.pm";
+    }
+    unless (get_var("DESKTOP")) {
         autotest::loadtest "tests/_console_wait_login.pm";
     }
 
diff --git a/needles/anaconda/install_destination/japanese/encrypt_data_japanese-20161217.json b/needles/anaconda/install_destination/japanese/encrypt_data_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/install_destination/japanese/encrypt_data_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "area": [
+    {
+      "xpos": 22,
+      "ypos": 584,
+      "width": 136,
+      "height": 17,
+      "type": "match"
+    }
+  ],
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_install_destination_encrypt_data"
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/install_destination/japanese/encrypt_data_japanese-20161217.png b/needles/anaconda/install_destination/japanese/encrypt_data_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/install_destination/japanese/save_passphrase_japanese-20161217.json b/needles/anaconda/install_destination/japanese/save_passphrase_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/install_destination/japanese/save_passphrase_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_install_destination_save_passphrase"
+  ],
+  "area": [
+    {
+      "xpos": 647,
+      "ypos": 521,
+      "width": 118,
+      "height": 13,
+      "type": "match"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/install_destination/japanese/save_passphrase_japanese-20161217.png b/needles/anaconda/install_destination/japanese/save_passphrase_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/install_process/japanese/install_done_japanese-reboot-20161216.json b/needles/anaconda/install_process/japanese/install_done_japanese-reboot-20161216.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/install_process/japanese/install_done_japanese-reboot-20161216.json
@@ -0,0 +1,24 @@
+{
+    "area": [
+        {
+            "height": 14,
+            "type": "match",
+            "width": 337,
+            "xpos": 674,
+            "ypos": 636
+        },
+        {
+            "height": 14,
+            "type": "match",
+            "width": 41,
+            "xpos": 942,
+            "ypos": 684
+        }
+    ],
+    "properties": [],
+    "tags": [
+        "anaconda_install_done",
+        "ENV-DISTRI-fedora",
+        "LANGUAGE-japanese"
+    ]
+}
diff --git a/needles/anaconda/install_process/japanese/install_done_japanese-reboot-20161216.png b/needles/anaconda/install_process/japanese/install_done_japanese-reboot-20161216.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/install_process/japanese/root_password_screen_japanese-20161217.json b/needles/anaconda/install_process/japanese/root_password_screen_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/install_process/japanese/root_password_screen_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "area": [
+    {
+      "xpos": 212,
+      "ypos": 125,
+      "width": 96,
+      "height": 13,
+      "type": "match"
+    }
+  ],
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_install_root_password_screen"
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/install_process/japanese/root_password_screen_japanese-20161217.png b/needles/anaconda/install_process/japanese/root_password_screen_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/install_process/japanese/user_creation_make_admin_japanese-20161217.json b/needles/anaconda/install_process/japanese/user_creation_make_admin_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/install_process/japanese/user_creation_make_admin_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "area": [
+    {
+      "xpos": 382,
+      "ypos": 214,
+      "width": 188,
+      "height": 17,
+      "type": "match"
+    }
+  ],
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_install_user_creation_make_admin"
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/install_process/japanese/user_creation_make_admin_japanese-20161217.png b/needles/anaconda/install_process/japanese/user_creation_make_admin_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/install_process/japanese/user_creation_screen_japanese-20161217.json b/needles/anaconda/install_process/japanese/user_creation_screen_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/install_process/japanese/user_creation_screen_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "area": [
+    {
+      "xpos": 267,
+      "ypos": 155,
+      "width": 71,
+      "height": 14,
+      "type": "match"
+    }
+  ],
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_install_user_creation_screen"
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/install_process/japanese/user_creation_screen_japanese-20161217.png b/needles/anaconda/install_process/japanese/user_creation_screen_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/install_process/layout_us.json b/needles/anaconda/install_process/layout_us.json
--- a/needles/anaconda/install_process/layout_us.json
+++ b/needles/anaconda/install_process/layout_us.json
@@ -9,6 +9,7 @@
         }
     ],
     "tags": [
-        "anaconda_layout_us"
+        "anaconda_layout_us",
+        "anaconda_layout_ascii"
     ]
 }
diff --git a/needles/anaconda/install_process/user_created_qwerty-20160825.json b/needles/anaconda/install_process/user_created_qwerty-20160825.json
--- a/needles/anaconda/install_process/user_created_qwerty-20160825.json
+++ b/needles/anaconda/install_process/user_created_qwerty-20160825.json
@@ -11,6 +11,7 @@
   "properties": [],
   "tags": [
     "LANGUAGE-russian",
+    "LANGUAGE-japanese",
     "anaconda_install_user_created"
   ]
-}
\ No newline at end of file
+}
diff --git a/needles/anaconda/lang_select/japanese/install_lang_continue_japanese-20161217.json b/needles/anaconda/lang_select/japanese/install_lang_continue_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/lang_select/japanese/install_lang_continue_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "area": [
+    {
+      "xpos": 950,
+      "ypos": 736,
+      "width": 27,
+      "height": 15,
+      "type": "match"
+    }
+  ],
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_select_install_lang_continue"
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/lang_select/japanese/install_lang_continue_japanese-20161217.png b/needles/anaconda/lang_select/japanese/install_lang_continue_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/lang_select/japanese/install_lang_japanese_filtered-20161217.json b/needles/anaconda/lang_select/japanese/install_lang_japanese_filtered-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/lang_select/japanese/install_lang_japanese_filtered-20161217.json
@@ -0,0 +1,23 @@
+{
+  "area": [
+    {
+      "xpos": 223,
+      "ypos": 187,
+      "width": 50,
+      "height": 32,
+      "type": "match"
+    },
+    {
+      "xpos": 475,
+      "ypos": 187,
+      "width": 75,
+      "height": 36,
+      "type": "match"
+    }
+  ],
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_select_install_lang_filtered"
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/lang_select/japanese/install_lang_japanese_filtered-20161217.png b/needles/anaconda/lang_select/japanese/install_lang_japanese_filtered-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/lang_select/japanese/install_lang_japanese_selected-20161217.json b/needles/anaconda/lang_select/japanese/install_lang_japanese_selected-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/lang_select/japanese/install_lang_japanese_selected-20161217.json
@@ -0,0 +1,16 @@
+{
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_select_install_lang_selected"
+  ],
+  "properties": [],
+  "area": [
+    {
+      "xpos": 608,
+      "ypos": 201,
+      "width": 93,
+      "height": 16,
+      "type": "match"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/lang_select/japanese/install_lang_japanese_selected-20161217.png b/needles/anaconda/lang_select/japanese/install_lang_japanese_selected-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/main_hub/japanese/begin_installation_japanese-20161217.json b/needles/anaconda/main_hub/japanese/begin_installation_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/main_hub/japanese/begin_installation_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_main_hub_begin_installation"
+  ],
+  "properties": [],
+  "area": [
+    {
+      "xpos": 864,
+      "ypos": 709,
+      "width": 116,
+      "height": 12,
+      "type": "match"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/main_hub/japanese/begin_installation_japanese-20161217.png b/needles/anaconda/main_hub/japanese/begin_installation_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/universal/japanese/rawhide_accept_fate_japanese-20161217.json b/needles/anaconda/universal/japanese/rawhide_accept_fate_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/universal/japanese/rawhide_accept_fate_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_rawhide_accept_fate"
+  ],
+  "area": [
+    {
+      "xpos": 613,
+      "ypos": 469,
+      "width": 118,
+      "height": 14,
+      "type": "match"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/universal/japanese/rawhide_accept_fate_japanese-20161217.png b/needles/anaconda/universal/japanese/rawhide_accept_fate_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/anaconda/universal/japanese/spoke_done_japanese-20161217.json b/needles/anaconda/universal/japanese/spoke_done_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/anaconda/universal/japanese/spoke_done_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "tags": [
+    "LANGUAGE-japanese",
+    "anaconda_spoke_done"
+  ],
+  "properties": [],
+  "area": [
+    {
+      "xpos": 34,
+      "ypos": 55,
+      "width": 27,
+      "height": 13,
+      "type": "match"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/needles/anaconda/universal/japanese/spoke_done_japanese-20161217.png b/needles/anaconda/universal/japanese/spoke_done_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/japanese/desktop_clean_japanese-20161217.json b/needles/gnome/japanese/desktop_clean_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/gnome/japanese/desktop_clean_japanese-20161217.json
@@ -0,0 +1,24 @@
+{
+  "tags": [
+    "DESKTOP-gnome",
+    "LANGUAGE-japanese",
+    "graphical_desktop_clean"
+  ],
+  "properties": [],
+  "area": [
+    {
+      "height": 15,
+      "xpos": 14,
+      "type": "match",
+      "ypos": 6,
+      "width": 107
+    },
+    {
+      "xpos": 968,
+      "type": "match",
+      "ypos": 4,
+      "width": 43,
+      "height": 18
+    }
+  ]
+}
\ No newline at end of file
diff --git a/needles/gnome/japanese/desktop_clean_japanese-20161217.png b/needles/gnome/japanese/desktop_clean_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/japanese/getting_started_japanese-20161217.json b/needles/gnome/japanese/getting_started_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/gnome/japanese/getting_started_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "area": [
+    {
+      "xpos": 455,
+      "ypos": 34,
+      "width": 112,
+      "height": 15,
+      "type": "match"
+    }
+  ],
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "getting_started"
+  ]
+}
\ No newline at end of file
diff --git a/needles/gnome/japanese/getting_started_japanese-20161217.png b/needles/gnome/japanese/getting_started_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/japanese/initial_setup_kana_kanji.json b/needles/gnome/japanese/initial_setup_kana_kanji.json
new file mode 100644
--- /dev/null
+++ b/needles/gnome/japanese/initial_setup_kana_kanji.json
@@ -0,0 +1,15 @@
+{
+    "area": [
+        {
+            "height": 15,
+            "type": "match",
+            "width": 121,
+            "xpos": 266,
+            "ypos": 315
+        }
+    ],
+    "tags": [
+        "initial_setup_kana_kanji",
+        "LANGUAGE-japanese"
+    ]
+}
diff --git a/needles/gnome/japanese/initial_setup_kana_kanji.png b/needles/gnome/japanese/initial_setup_kana_kanji.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/japanese/initial_setup_kana_kanji_selected.json b/needles/gnome/japanese/initial_setup_kana_kanji_selected.json
new file mode 100644
--- /dev/null
+++ b/needles/gnome/japanese/initial_setup_kana_kanji_selected.json
@@ -0,0 +1,15 @@
+{
+    "area": [
+        {
+            "height": 15,
+            "type": "match",
+            "width": 396,
+            "xpos": 266,
+            "ypos": 315
+        }
+    ],
+    "tags": [
+        "initial_setup_kana_kanji_selected",
+        "LANGUAGE-japanese"
+    ]
+}
diff --git a/needles/gnome/japanese/initial_setup_kana_kanji_selected.png b/needles/gnome/japanese/initial_setup_kana_kanji_selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/layout_us-gdm-20161215.json b/needles/gnome/japanese/layout_ascii_japanese-20161216.json
copy from needles/gnome/layout_us-gdm-20161215.json
copy to needles/gnome/japanese/layout_ascii_japanese-20161216.json
--- a/needles/gnome/layout_us-gdm-20161215.json
+++ b/needles/gnome/japanese/layout_ascii_japanese-20161216.json
@@ -9,6 +9,7 @@
         }
     ],
     "tags": [
-        "gnome_layout_us"
+        "gnome_layout_ascii",
+        "LANGUAGE-japanese"
     ]
 }
diff --git a/needles/gnome/japanese/layout_ascii_japanese-20161216.png b/needles/gnome/japanese/layout_ascii_japanese-20161216.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/layout_us-gdm-20161215.json b/needles/gnome/japanese/layout_native_japanese-20161216.json
copy from needles/gnome/layout_us-gdm-20161215.json
copy to needles/gnome/japanese/layout_native_japanese-20161216.json
--- a/needles/gnome/layout_us-gdm-20161215.json
+++ b/needles/gnome/japanese/layout_native_japanese-20161216.json
@@ -1,14 +1,15 @@
 {
     "area": [
         {
-            "height": 13,
+            "height": 15,
             "type": "match",
             "width": 33,
             "xpos": 853,
-            "ypos": 7
+            "ypos": 5
         }
     ],
     "tags": [
-        "gnome_layout_us"
+        "gnome_layout_native",
+        "LANGUAGE-japanese"
     ]
-}
+}
\ No newline at end of file
diff --git a/needles/gnome/japanese/layout_native_japanese-20161216.png b/needles/gnome/japanese/layout_native_japanese-20161216.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/japanese/login_gdm_input_japanese-20161217.json b/needles/gnome/japanese/login_gdm_input_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/gnome/japanese/login_gdm_input_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "area": [
+    {
+      "xpos": 342,
+      "ypos": 377,
+      "width": 338,
+      "height": 55,
+      "type": "match"
+    }
+  ],
+  "tags": [
+    "LANGUAGE-japanese",
+    "graphical_login_input"
+  ],
+  "properties": []
+}
\ No newline at end of file
diff --git a/needles/gnome/japanese/login_gdm_input_japanese-20161217.png b/needles/gnome/japanese/login_gdm_input_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/japanese/next_button_japanese-20161217.json b/needles/gnome/japanese/next_button_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/gnome/japanese/next_button_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "next_button"
+  ],
+  "area": [
+    {
+      "xpos": 945,
+      "ypos": 43,
+      "width": 33,
+      "height": 14,
+      "type": "match"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/needles/gnome/japanese/next_button_japanese-20161217.png b/needles/gnome/japanese/next_button_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/japanese/skip_button_japanese-20161217.json b/needles/gnome/japanese/skip_button_japanese-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/gnome/japanese/skip_button_japanese-20161217.json
@@ -0,0 +1,16 @@
+{
+  "area": [
+    {
+      "xpos": 921,
+      "ypos": 42,
+      "width": 60,
+      "height": 15,
+      "type": "match"
+    }
+  ],
+  "properties": [],
+  "tags": [
+    "LANGUAGE-japanese",
+    "skip_button"
+  ]
+}
\ No newline at end of file
diff --git a/needles/gnome/japanese/skip_button_japanese-20161217.png b/needles/gnome/japanese/skip_button_japanese-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/japanese/yama_chooser-20161217.json b/needles/gnome/japanese/yama_chooser-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/gnome/japanese/yama_chooser-20161217.json
@@ -0,0 +1,31 @@
+{
+  "area": [
+    {
+      "xpos": 380,
+      "ypos": 208,
+      "width": 10,
+      "height": 71,
+      "type": "match"
+    },
+    {
+      "xpos": 387,
+      "ypos": 380,
+      "width": 12,
+      "height": 12,
+      "type": "match"
+    },
+    {
+      "xpos": 422,
+      "ypos": 380,
+      "width": 14,
+      "height": 12,
+      "type": "match"
+    }
+  ],
+  "properties": [],
+  "tags": [
+    "DESKTOP-gnome",
+    "LANGUAGE-japanese",
+    "desktop_yama_chooser"
+  ]
+}
\ No newline at end of file
diff --git a/needles/gnome/japanese/yama_chooser-20161217.png b/needles/gnome/japanese/yama_chooser-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/japanese/yama_hiragana-20161217.json b/needles/gnome/japanese/yama_hiragana-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/gnome/japanese/yama_hiragana-20161217.json
@@ -0,0 +1,17 @@
+{
+  "tags": [
+    "DESKTOP-gnome",
+    "LANGUAGE-japanese",
+    "desktop_yama_hiragana"
+  ],
+  "properties": [],
+  "area": [
+    {
+      "xpos": 384,
+      "ypos": 61,
+      "width": 29,
+      "height": 14,
+      "type": "match"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/needles/gnome/japanese/yama_hiragana-20161217.png b/needles/gnome/japanese/yama_hiragana-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/japanese/yama_kanji-20161217.json b/needles/gnome/japanese/yama_kanji-20161217.json
new file mode 100644
--- /dev/null
+++ b/needles/gnome/japanese/yama_kanji-20161217.json
@@ -0,0 +1,17 @@
+{
+  "properties": [],
+  "tags": [
+    "DESKTOP-gnome",
+    "LANGUAGE-japanese",
+    "desktop_yama_kanji"
+  ],
+  "area": [
+    {
+      "xpos": 385,
+      "ypos": 61,
+      "width": 13,
+      "height": 16,
+      "type": "match"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/needles/gnome/japanese/yama_kanji-20161217.png b/needles/gnome/japanese/yama_kanji-20161217.png
new file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/needles/gnome/layout_us-20161215.json b/needles/gnome/layout_us-20161215.json
--- a/needles/gnome/layout_us-20161215.json
+++ b/needles/gnome/layout_us-20161215.json
@@ -10,6 +10,7 @@
   ],
   "properties": [],
   "tags": [
-    "gnome_layout_us"
+    "gnome_layout_us",
+    "gnome_layout_ascii"
   ]
-}
\ No newline at end of file
+}
diff --git a/needles/gnome/layout_us-gdm-20161215.json b/needles/gnome/layout_us-gdm-20161215.json
--- a/needles/gnome/layout_us-gdm-20161215.json
+++ b/needles/gnome/layout_us-gdm-20161215.json
@@ -9,6 +9,7 @@
         }
     ],
     "tags": [
-        "gnome_layout_us"
+        "gnome_layout_us",
+        "gnome_layout_ascii"
     ]
 }
diff --git a/templates b/templates
--- a/templates
+++ b/templates
@@ -1126,6 +1126,17 @@
                                       flavor  => "universal",
                                       version => "*",
                                     },
+                      test_suite => { name => "install_asian_language" },
+                    },
+                    {
+                      machine    => { name => "64bit" },
+                      prio       => 40,
+                      product    => {
+                                      arch    => "x86_64",
+                                      distri  => "fedora",
+                                      flavor  => "universal",
+                                      version => "*",
+                                    },
                       test_suite => { name => "install_kickstart_firewall_disabled" },
                     },
                     {
@@ -1957,6 +1968,20 @@
                       ],
                     },
                     {
+                      name => "install_asian_language",
+                      settings => [
+                        { key => "LANGUAGE", value => "japanese" },
+                        { key => "DESKTOP", value => "gnome" },
+                        { key => "PACKAGE_SET", value => "workstation" },
+                        { key => "INPUT_METHOD", value => "1" },
+                        { key => "USER_LOGIN", value => "qwerty" },
+                        { key => "ROOT_PASSWORD", value => "weakpassword" },
+                        { key => "ENCRYPT_PASSWORD", value => "weakpassword" },
+                        { key => "POSTINSTALL", value => "_console_login" },
+                        { key => "REPOSITORY_VARIATION", value => "%LOCATION%" },
+                      ],
+                    },
+                    {
                       name => "install_xfs",
                       settings => [
                         { key => "PARTITIONING", value => "custom_xfs" },
diff --git a/tests/_do_install_and_reboot.pm b/tests/_do_install_and_reboot.pm
--- a/tests/_do_install_and_reboot.pm
+++ b/tests/_do_install_and_reboot.pm
@@ -8,8 +8,8 @@
     my $user_password = get_var("USER_PASSWORD") || "weakpassword";
     if (get_var("SWITCHED_LAYOUT")) {
         # we double the password, the second time using the native
-        # layout, so the password has both US and native characters
-        desktop_switch_layout "us", "anaconda";
+        # layout, so the password has both ASCII and native characters
+        desktop_switch_layout "ascii", "anaconda";
         type_very_safely $user_password;
         desktop_switch_layout "native", "anaconda";
         type_very_safely $user_password;
@@ -37,7 +37,7 @@
     assert_screen "anaconda_install_root_password_screen";
     # wait out animation
     wait_still_screen 2;
-    desktop_switch_layout("us", "anaconda") if (get_var("SWITCHED_LAYOUT"));
+    desktop_switch_layout("ascii", "anaconda") if (get_var("SWITCHED_LAYOUT"));
     if (get_var("IMAGETYPE") eq 'dvd-ostree') {
         # we can't type SUPER safely for ostree installer tests, as
         # the install completes quite fast and if we type too slow
diff --git a/tests/_graphical_input.pm b/tests/_graphical_input.pm
new file mode 100644
--- /dev/null
+++ b/tests/_graphical_input.pm
@@ -0,0 +1,41 @@
+use base "installedtest";
+use strict;
+use testapi;
+use main_common;
+
+sub run {
+    # check both layouts are available at the desktop; here,
+    # we can expect input method switching to work too
+    desktop_switch_layout 'ascii';
+    desktop_switch_layout 'native';
+    # special testing for Japanese to ensure input method actually
+    # works. If we ever test other input-method based languages we can
+    # generalize this out, for now we just inline Japanese
+    if (get_var("LANGUAGE") eq 'japanese') {
+        # assume we can test input from whatever 'alt-f1' opens
+        send_key "alt-f1";
+        type_safely "yama";
+        assert_screen "desktop_yama_hiragana";
+        send_key "spc";
+        assert_screen "desktop_yama_kanji";
+        send_key "spc";
+        assert_screen "desktop_yama_chooser";
+        send_key "esc";
+        send_key "esc";
+        send_key "esc";
+        send_key "esc";
+        assert_screen "graphical_desktop_clean";
+    }
+}
+
+sub test_flags {
+    # without anything - rollback to 'lastgood' snapshot if failed
+    # 'fatal' - whole test suite is in danger if this fails
+    # 'milestone' - after this test succeeds, update 'lastgood'
+    # 'important' - if this fails, set the overall state to 'fail'
+    return { fatal => 1 };
+}
+
+1;
+
+# vim: set sw=4 et:
diff --git a/tests/_graphical_wait_login.pm b/tests/_graphical_wait_login.pm
--- a/tests/_graphical_wait_login.pm
+++ b/tests/_graphical_wait_login.pm
@@ -27,7 +27,7 @@
             # see _do_install_and_reboot; when layout is switched
             # user password is doubled to contain both US and native
             # chars
-            desktop_switch_layout 'us';
+            desktop_switch_layout 'ascii';
             type_very_safely $password;
             desktop_switch_layout 'native';
             type_very_safely $password;
@@ -49,6 +49,14 @@
                 # to the next screen between clicks
                 mouse_set(100, 100);
                 wait_screen_change { assert_and_click "next_button"; };
+                # for Japanese, we need to workaround a bug on the keyboard
+                # selection screen
+                if ($n == 1 && get_var("LANGUAGE") eq 'japanese') {
+                    if (!check_screen 'initial_setup_kana_kanji_selected', 5) {
+                        record_soft_failure 'kana kanji not selected: bgo#776189';
+                        assert_and_click 'initial_setup_kana_kanji';
+                    }
+                }
             }
             # click 'Skip' one time
             mouse_set(100,100);
@@ -64,11 +72,6 @@
         mouse_set(300, 200);
         # KDE can take ages to start up
         assert_screen "graphical_desktop_clean", 120;
-        if (get_var("SWITCHED_LAYOUT")) {
-            # check both layouts are available at the desktop
-            desktop_switch_layout 'us';
-            desktop_switch_layout 'native';
-        }
     }
 }
 
diff --git a/tests/disk_guided_encrypted.pm b/tests/disk_guided_encrypted.pm
--- a/tests/disk_guided_encrypted.pm
+++ b/tests/disk_guided_encrypted.pm
@@ -16,7 +16,7 @@
     # type password for disk encryption
     wait_idle 5;
     if (get_var("SWITCHED_LAYOUT")) {
-        desktop_switch_layout "us", "anaconda";
+        desktop_switch_layout "ascii", "anaconda";
     }
     type_safely get_var("ENCRYPT_PASSWORD");
     wait_screen_change { send_key "tab"; };

