diff --git a/Android.bp b/Android.bp index fccbfca4dab..a16078551cf 100644 --- a/Android.bp +++ b/Android.bp @@ -135,6 +135,7 @@ android_library { "android.app.flags-aconfig", "android.provider.flags-aconfig", "android.security.flags-aconfig", + "keyboard_flags", ], } diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 7d335c36f45..dca74676a55 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1230,6 +1230,21 @@ android:value="@string/menu_key_system"/> + + + + + + + + + Accessibility Physical keyboard + + Physical keyboard layout picker Bounce keys diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index cb4358fcf52..d5cf9aa2281 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -92,6 +92,9 @@ public class Settings extends SettingsActivity { 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 6e3d11caa58..14f79bf93d1 100644 --- a/src/com/android/settings/inputmethod/InputPeripheralsSettingsUtils.java +++ b/src/com/android/settings/inputmethod/InputPeripheralsSettingsUtils.java @@ -51,6 +51,7 @@ public class InputPeripheralsSettingsUtils { 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 08aacf8c833..d9195d68dce 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.Preference; 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 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment 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 @@ public class NewKeyboardLayoutEnabledLocalesFragment extends DashboardFragment 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;