diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index cb4358f..d5cf9aa 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -92,6 +92,9 @@
     public static class AvailableVirtualKeyboardActivity extends SettingsActivity { /* empty */ }
     public static class KeyboardLayoutPickerActivity extends SettingsActivity { /* empty */ }
     public static class PhysicalKeyboardActivity extends SettingsActivity { /* empty */ }
+    public static class PhysicalKeyboardLayoutPickerActivity extends SettingsActivity {
+        /* empty */
+    }
     public static class InputMethodAndSubtypeEnablerActivity extends SettingsActivity { /* empty */ }
     public static class SpellCheckersSettingsActivity extends SettingsActivity { /* empty */ }
     public static class LocalePickerActivity extends SettingsActivity { /* empty */ }
diff --git a/src/com/android/settings/inputmethod/InputPeripheralsSettingsUtils.java b/src/com/android/settings/inputmethod/InputPeripheralsSettingsUtils.java
index 6e3d11c..14f79bf 100644
--- a/src/com/android/settings/inputmethod/InputPeripheralsSettingsUtils.java
+++ b/src/com/android/settings/inputmethod/InputPeripheralsSettingsUtils.java
@@ -51,6 +51,7 @@
     static final String EXTRA_TITLE = "keyboard_layout_picker_title";
     static final String EXTRA_USER_ID = "user_id";
     static final String EXTRA_INPUT_DEVICE_IDENTIFIER = "input_device_identifier";
+    static final String EXTRA_INPUT_DEVICE = "input_device";
     static final String EXTRA_INPUT_METHOD_INFO = "input_method_info";
     static final String EXTRA_INPUT_METHOD_SUBTYPE = "input_method_subtype";
 
diff --git a/src/com/android/settings/inputmethod/NewKeyboardLayoutEnabledLocalesFragment.java b/src/com/android/settings/inputmethod/NewKeyboardLayoutEnabledLocalesFragment.java
index 08aacf8..d9195d6 100644
--- a/src/com/android/settings/inputmethod/NewKeyboardLayoutEnabledLocalesFragment.java
+++ b/src/com/android/settings/inputmethod/NewKeyboardLayoutEnabledLocalesFragment.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.inputmethod;
 
+import android.app.Activity;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.hardware.input.InputDeviceIdentifier;
@@ -35,6 +36,7 @@
 import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceScreen;
 
+import com.android.internal.util.Preconditions;
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.core.SubSettingLauncher;
@@ -106,6 +108,16 @@
         mIm = mContext.getSystemService(InputManager.class);
         mImm = mContext.getSystemService(InputMethodManager.class);
         mInputDeviceId = -1;
+
+        Activity activity = Preconditions.checkNotNull(getActivity());
+        InputDevice inputDeviceFromIntent =
+                activity.getIntent().getParcelableExtra(
+                        InputPeripheralsSettingsUtils.EXTRA_INPUT_DEVICE,
+                        InputDevice.class);
+
+        if (inputDeviceFromIntent != null) {
+            launchLayoutPickerWithIdentifier(inputDeviceFromIntent.getIdentifier());
+        }
     }
 
     @Override
@@ -161,6 +173,23 @@
         mInputDeviceId = -1;
     }
 
+    private void launchLayoutPickerWithIdentifier(
+            InputDeviceIdentifier inputDeviceIdentifier) {
+        if (InputPeripheralsSettingsUtils.getInputDevice(mIm, inputDeviceIdentifier) == null) {
+            return;
+        }
+        InputMethodInfo info = mImm.getCurrentInputMethodInfoAsUser(UserHandle.of(mUserId));
+        InputMethodSubtype subtype = mImm.getCurrentInputMethodSubtype();
+        CharSequence subtypeLabel = getSubtypeLabel(mContext, info, subtype);
+
+        showKeyboardLayoutPicker(
+                subtypeLabel,
+                inputDeviceIdentifier,
+                mUserId,
+                info,
+                subtype);
+    }
+
     private void updateCheckedState() {
         if (InputPeripheralsSettingsUtils.getInputDevice(mIm, mInputDeviceIdentifier) == null) {
             return;
