diff --git a/rust/src/factory_installer/config.rs b/rust/src/factory_installer/config.rs
index 04d7899..bf6b8b9 100644
--- a/rust/src/factory_installer/config.rs
+++ b/rust/src/factory_installer/config.rs
@@ -20,6 +20,7 @@
 #[derive(PartialEq, Deserialize, Debug)]
 pub struct DisplayQRcode {
     pub qrcodes: Vec<QRcode>,
+    pub continue_key: Option<String>,
 }
 
 #[derive(PartialEq, Deserialize, Debug)]
@@ -27,6 +28,7 @@
     ResetDevice,
     ChargeBattery,
     CheckAcState,
+    Clear,
     HttpRequest(HttpRequest),
     DisplayQRcode(DisplayQRcode),
     StopAndConfirm(String),
@@ -63,12 +65,14 @@
             "ResetDevice",
             "ChargeBattery",
             "CheckAcState",
+            "Clear",
         {
             "HttpRequest": {"url": "fake_url", "post_arg": {"key": "value"}}
         },
         {
             "DisplayQRcode": {
-                "qrcodes": [{"size": 100, "position": [10, 20], "content": "code"}]
+                "qrcodes": [{"size": 100, "position": [10, 20], "content": "code"}],
+                "continue_key": "abc"
             }
         },
         {
@@ -87,6 +91,7 @@
                 Action::ResetDevice,
                 Action::ChargeBattery,
                 Action::CheckAcState,
+                Action::Clear,
                 Action::HttpRequest(HttpRequest {
                     url: "fake_url".to_string(),
                     post_arg: json!({
@@ -98,7 +103,8 @@
                         size: 100,
                         position: Some((10, 20)),
                         content: "code".to_string()
-                    }]
+                    }],
+                    continue_key: Some("abc".to_string())
                 }),
                 Action::StopAndConfirm("asd".to_string())
             ]
@@ -106,6 +112,35 @@
     }
 
     #[test]
+    fn test_load_config_no_option_fields() {
+        let mut context = ContextImpl::new();
+        let config = json!([
+        {
+            "DisplayQRcode": {
+                "qrcodes": [{"size": 100, "content": "code"}],
+            }
+        }]);
+        let dir = context
+            .root_dir()
+            .join("mnt/stateful_partition/dev_image/etc");
+        fs::create_dir_all(dir.clone()).unwrap();
+        fs::write(dir.join("custom-process.json"), config.to_string()).unwrap();
+
+        let result = load_config(&mut context).unwrap();
+        assert_eq!(
+            result,
+            vec![Action::DisplayQRcode(DisplayQRcode {
+                qrcodes: vec![QRcode {
+                    size: 100,
+                    position: None,
+                    content: "code".to_string()
+                }],
+                continue_key: None
+            })]
+        );
+    }
+
+    #[test]
     fn test_load_config_use_default() {
         let mut context = ContextImpl::new();
 
diff --git a/rust/src/factory_installer/mod.rs b/rust/src/factory_installer/mod.rs
index 5970319..50d275d 100644
--- a/rust/src/factory_installer/mod.rs
+++ b/rust/src/factory_installer/mod.rs
@@ -79,6 +79,9 @@
     let re = Regex::new("(<.*?>)").unwrap();
 
     terminal_utils::clear();
+    if let Some(ref key) = arg.continue_key {
+        println!("Input {} and press enter to continue...", key);
+    }
     let mut invalid_content = false;
     for mut qrcode in arg.qrcodes {
         let content = re
@@ -97,10 +100,13 @@
             anyhow::bail!("Invalid content: {}", &qrcode.content);
         }
         qrcode.content = content;
+        // TODO(jasonchuang): We're not sure when will the qrcode be cleared,
+        // need to consult with frecon team.
         qrcode_utils::display_qrcode(&qrcode, context)?;
     }
-    eprintln!("Press enter to continue...");
-    terminal_utils::wait_enter("")?;
+    if let Some(key) = arg.continue_key {
+        terminal_utils::wait_enter(&key)?;
+    }
     Ok(())
 }
 
@@ -123,6 +129,7 @@
             Action::ResetDevice => reset_device(context),
             Action::ChargeBattery => charge_battery(context),
             Action::CheckAcState => check_ac_state(context),
+            Action::Clear => Ok(terminal_utils::clear()),
             Action::HttpRequest(v) => http_request(v),
             Action::DisplayQRcode(v) => display_qrcode(v, context),
             Action::StopAndConfirm(v) => stop_and_confirm(v),
